2013微软暑期实习笔试技术题回顾:虚函数、数据结构与线程概念

5星 · 超过95%的资源 需积分: 9 5 下载量 74 浏览量 更新于2024-09-12 收藏 153KB PDF 举报
在2013年的微软暑期实习笔试题中,主要考察了面试者对C++编程、数据结构与算法以及Windows系统内部基本概念的理解。以下是从题目中提炼出的关键知识点: 1. 函数调用约定:题目询问支持可变长度参数的函数调用约定。在C++中,`cdecl` (cdecl calling convention) 是C语言的标准调用约定,但并不支持可变长度参数。`stdcall` 和 `fastcall` 均不明确表示支持,但`stdcall`通常用于Windows API函数调用,而 `fastcall` 用于提高函数调用效率,但也不直接支持可变参数。`pascal` 是一种古老的调用约定,同样不适用于现代C++。因此,没有一个选项明确表示支持,答案可能是无解或者未指定。 2. C++类与虚函数:给出的代码展示了基类 `A` 有一个虚函数 `f()` 和一个 const 版本,派生类 `B` 重写了这两个函数。在 `main()` 函数中,创建了一个 `B` 类的对象并调用其成员函数,然后通过 `A` 指针调用。由于 `g()` 接受一个 `const A*` 参数,它会调用 `const` 版本的 `f()`,尽管实际对象是 `B`。因此,正确答案是 `B::f()const`。 3. 链表与数组的区别:题目要求比较链表和数组在不同方面的差异。A选项提到搜索复杂性,当两者都排序时,链表的搜索复杂度通常更高,因为需要遍历查找,而数组可以通过索引快速定位。B选项提到动态添加/删除,链表可以轻松地在任意位置插入或删除元素,而数组需要移动其他元素。C选项涉及随机访问效率,数组的随机访问速度远快于链表。D选项是关于数据存储类型,数组是连续存储,链表则是节点间链接。正确答案应该是 B 和 C。 4. Windows中的线程和进程:A选项错误,一个应用程序可能包含多个进程,每个进程至少有一个线程。B选项正确,进程有自己的栈,但只读数据(如全局变量)可能会共享父进程的栈。C选项也部分正确,线程必须属于某个进程,不能独立存在。 这份2013微软暑期实习笔试题测试了应聘者的C++编程基础、数据结构、函数调用和操作系统内核理解。理解这些问题有助于应聘者评估自己在这些领域的知识水平,并准备类似类型的面试。