腾讯面经
投的Android岗,然后面的全是cpp很玄学……最后居然过了
一面
0. 你会写cpp吗?(我:我就了解一点)
1. malloc和new
2. 什么是拷贝构造函数
3. std::bind和placeholder
4. 智能指针是怎么实现的(引用计数),扯到了Java的垃圾回收,弱引用。和cpp里面的weak_ptr对比了一下
5. 默认参数
6. 菱形继承和虚继承
7. 析构函数为什么是虚函数?构造函数可以是虚函数吗?
8. 左值引用和右值引用,什么是移动语义
9. 如何确保一个对象只在堆区/栈区分配
10. 不用比较运算符,判断两个int是否相等
11. 有四个数a, b, x, y,当x=0时y=a,x=1时y=b。不用if,switch条件判断怎么做?
12. 哈希表和堆排序
13. TCP,子网掩码
14. 让我问他问题
二面
1. 大量单词列表,给一个单词怎么判断是否命中列表?
(我答了哈希表)
哈希表访问为什么是O(1)?
(我答了实质是计算数组的下标直接访问)
数组访问下标为什么是常数时间?
(我答了数组是一段连续的内存空间,数组的下标访问实质上是内存地址的计算)。
那么物理内存,也就是内存条上的内存,是真的连续的吗?
(我答了不是,由此讲到问题2)
2. 物理内存和虚拟内存,什么是分页机制?分页机制有什么好处?知不知道伙伴算法和slub?malloc的原理是怎么样的?
3. TCP滑动窗口
4. 单步调试是怎么实现的?ptrace的原理是什么?
5. 线程同步的方式?是否用过条件变量?
6. 让我问他问题
HR面
1. 查户口。家庭情况,父母职业,老家在哪?
2. 你是独生子吗?父母是否支持来深圳工作?
3. 大学期间最难忘的事情
4. 有女朋友吗?
5. 怎么看待加班?
6. 为什么不读研?未来准备怎么发展?
7. 有什么优缺点,有什么兴趣爱好?
8. HR简单介绍了他们的部门,聊天结束。