补面经,快手C++基础架构
4月底面的,第一次面试,没想到能过(牛客许愿太灵了),还好当初鼓起勇气投了简历,不然一定会后悔。
非科班渣硕,没项目,所以面试问题大多都是基础问题,面试体验很好,效率很高。
一面 1hour
- 自我介绍
- TCP三次握手,2次可以吗,4次可以吗
- TCP四次挥手
- 析构函数为什么一般都是虚函数
- 如果可以确定一个类没有子类,这个类的析构函数还有必要是虚函数吗
- 宏和inline
- 所有的函数都写成inline可以吗
- 构造函数内部可以调用虚函数吗
- 为什么构造函数内部的虚函数不表现为多态
- 跳表,红黑树,哈希表,B树介绍一下,查找时间复杂度
- map unordered_map,底层实现,查找时间复杂度,插入时间复杂度
- 大数据top100
- 十亿字符串中查找一个字符串是否存在,bitmap、布隆过滤器,失误率,如何降低
- redis一致性哈希
- 集群伸缩
两道编程题,比较简单,秒了。
- 实现memmove, void *memmove(void *dest, const void *src, unsigned int count);
- 根据前序和中序序列构建二叉树 LeetCode105
面试官说可以,一会有人联系你。
几分钟就约了二面,当时已经十二点多了,还以为要下午,没想到直接继续刚。。。
二面 1hour
二面面试官像是在家里面的我,网络不稳定,把视频关了,但是语音也听不太清,有点崩溃。
不过面试官人很好,不会的会积极引导。
- 自我介绍
- STL用过吗?vector底层,扩容机制,VS中1.5倍,gun中2倍
- VS中为什么选择1.5倍?
- 扩容的均摊复杂度,口述推导一下。
- 迭代器说一下,迭代器失效了解吗?
- 什么情况下会出现迭代器失效?
- TCP3次握手
- TCP的半连接
- SYN攻击,半连接队列(这个没答上来,和上一个问题是有关联性的),如何预防?
。。。
还有一些问题记不清了。。。
编程题:lintcode859.最大栈
时间复杂度尽可能低,list+map。
刚开始想用最小栈的套路,但是面试官提示可以不使用栈,迭代器失效啥的,想了半天。。。
碎碎念
问题都比较基础,可能因为我没啥相关的项目,再加上非科班吧,还好之前准备的凑活(感谢牛油们提供的面经),感谢面试官手下留情。
三月份的时候都不敢投简历,很多公司都错过了,三月底不知哪来的勇气,一通乱投,没有几家给机会,大多石沉大海,有的笔试完就没消息了,还是太菜。
继续加油吧!
另:有一起的小伙伴吗,求交流~ ~ ~
喜欢阅读源码的小伙伴也可以一起交流呀~ ~ ~