2015.04.27
今天电话面试了易迅,工作之后的第一次面试。虽然问题回答的不是很满意,但是面一次心里就有低了,收获也不少。
总结下今天的面试问题:
C++方面基础知识方面
1.const_cast, dynamic_cast, static_cast相关
答:参见这篇博文。
2.智能指针相关:share_ptr, auto_ptr, week_ptr.
答:参见这篇博文。
3.如何实现动态绑定?
答:虚函数。
4.try……catch……方面的内容。
答:需要学习下。
数据结构和算法方面
1.什么是跳跃表?
答:需要查下
2.map, vector的内部实现原理?红黑树的实现原理?
答:需要学习下
3.quick sort的复杂度在什么情况下由NlogN变为N^2?
答:情况一:数字刚好逆序排列。情况二:pivot选的不好,每次都将本组元素分为一个和另外n-1个。需要再研究下
4.對排序中建堆的复杂度为了logN, 总体的复杂度为NlogN.需要搞清楚!
答:建堆的复杂度为logN, N个元素需要重新整理堆N次,所以总的复杂度为NlogN。
5.单链表问题
@1.如何查找一个单向链表中有环?
答:一个指针为p->next, 另一个指针为p->next->next,使用追击的法。但不知道有没有更好的办法?
@2.如何计算该环中有多少个节点?
答:在上面的基础之上,当追击上之后,定住一个指针,是另一个继续,当两个指针在次相等时的计数即为环中node的个数。
@3.如何找到环的起始位置?
答:???
其他
1.开放的问题,列举你知道的数据结构。
答:按照《数据结构与算法》上的分类。
第一:集合。(集合中的元素除了属于一种类型,别无其他关系)
第二:线性结构:线性表,栈,队列(结构中的元素存在一对一的关系)
第三:树形结构:二叉树,查找树,平衡树,堆,B树,B*树,B+树,红黑树,R树。
第四:图状结构和网状结构:图。
其他:hash table(two kinds of hash table:static and dynamic)、Bloom filter、Bitmap、trie树.
一定还有其他的,慢慢补充。
2.如何查找内存泄露。
答:使用Valgrid工具。
3.如何更容易的知道那个代码的哪个位置导致的内存泄露?
答:将new操作符包装一层,在其中使用C++自带的FILE,FUNCTION,LINE等宏,就会自动输出哪个函数调用了new操作符。
4.网络知识:由于从来没有做过网络相关的东西,所以直接回答了对网络不了解。忘了大学也考过了计算机等级三,计算机网络。不过也忘完了。