代码改变世界

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

2017-01-03 21:10  jiayayao  阅读(1260)  评论(0编辑  收藏  举报

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) 如何求出树中两个结点的最低公共祖先?

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

(5) stack只有top, push, pop

deque/list 有 front back, push_front, pop_front, push_back,  pop_back

vector 有 front, back, push_back, pop_back

set/map只有insert,erase无push和pop

2. 常见问题:

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

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

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

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