C++常见笔试面试要点以及常见问题

来源:互联网 发布:adobe软件有哪些 编辑:程序博客网 时间:2024/06/07 12:55

C++常见笔试面试要点以及常见问题

1. C++常见笔试面试要点:

  C++语言相关:

(1) 虚函数(多态)的内部实现(C++虚函数实现多态原理(转载)

(2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现原理是什么? (智能指针shared_ptr的用法、智能指针unique_ptr的用法)

(3) 特化和泛化(算法的泛化过程(摘自《STL源码剖析》)

(4) 为什么不能在构造函数中调用虚函数?

     当实例化一个派生类对象时,首先进行基类部分的构造,然后再进行派生类部分的构造。当在构造基类部分时,派生类还没被完全创建,从某种意义上讲此时它只是个基类对象。所以在构造函数中调用虚函数,执行的是基类的虚函数,而非派生类的虚函数。

  STL:

(1) vector、list、set、map内部实现以及异同,迭代器插入删除后vector、list、set、map的迭代器是否会失效?

(2) STL除了序列式容器和关联式容器,还有哪些值得学习的?

  TCP/IP:

(1) TCP、UDP异同;

(2) TCP、UDP发送一段字符串,其中的发送过程有什么区别?本人理解:TCP有滑动窗口,流量控制,超时重传等机制。

  数据结构:

(1) 链表的逆置(又称反转);

(2) 链表有无环的检测,两个链表相交有无可能?相交的形态是什么样的?如何确定相交点?

(3) 如何求出数组中最小(或者最大)的k个数(least k问题)?

(4) 如何求出树中两个结点的最低公共祖先?

  本人理解:以上要点必须从根本上明白,理解,不能有糊涂的地方,因为面试官往往会由浅入深的提问,当你不明白一点后,面试官就无需再往下问了,直接确定你的水平了。

2. 常见问题:

(1) 你平时都看过一些什么专业相关的书籍?

(2) 项目中你解决问题最深刻的一次,怎么解决的,用了多长时间?

(3) 说说观察者模式(也可能是代理模式,单例模式,装饰模式等等)怎么用,以及你项目中哪些场合用到了?

(4) 你对我们目前所做的项目有什么想要了解的吗?