2013微软实习生笔试题目解析:指针与继承概念与链表数组差异

需积分: 10 0 下载量 76 浏览量 更新于2024-07-24 收藏 88KB DOC 举报
本文档提供了2013年微软暑期实习生笔试的部分题目详解,包括编程语言概念和数据结构的基础知识。首先,解析了一道关于C++编译时语法的题目: 1. 题目考察了对C++关键字的理解,选项A和B展示了const关键字的不同位置对于变量类型的影响。正确答案是A和C,因为`constinta`表示常量整型,而`constint*a`是常量指针,表示指向常量的指针。选项E是错误的,因为它将`const`放在指针前,而不是变量名前,表示的是指针常量,即不可修改的指针值,而非指针所指向的内容。 接着,一道程序设计题目展示了虚函数和const成员函数的区别以及作用域规则: 2. 该程序定义了两个类A和B,继承自基类A。`voidf()`和`voidf()const`都是重载的方法,其中`voidf()const`表示方法在const对象上调用时的行为。在`g(constA*a)`函数中,调用`a->f()`会调用基类A的非const版本,而`a->f()`则会调用B类的`f()`。运行结果将是`A::f()`、`B::f()`和`A::f()`,因为`g(a)`传递的是基类指针。 第三部分涉及数据结构和算法的基本概念: 3. 问题询问链表与数组的主要区别。答案选项包括搜索复杂性、动态性和随机访问效率以及数据存储类型。正确答案可能是B、C和D,因为链表允许动态添加和删除元素,而数组的插入和删除操作通常效率较低;链表没有随机访问能力,访问元素需要从头或尾开始遍历;数据存储上,链表每个节点独立,而数组连续存储。 最后,一道关于进程和线程的题目考察了操作系统中它们的关系: 4. 选项C表明线程必须隶属于一个进程,这是正确的,因为线程是进程内的执行单元。其他选项中,进程至少有一个线程(A)、线程共享堆栈而非各自独立(B)、线程不能改变所属进程(D)均是基本的线程概念。 这份文档涵盖了C++编程基础、数据结构和进程/线程概念的题目,对准备微软暑期实习生笔试的学生来说,理解和解答这些问题有助于评估应聘者的理论知识和编程技能。