滴滴C++后台开发一面二面三面
7月26日下午3点左右一面。中午在床上午休,被hr一个电话提前拉起来面试的。
1. 自我介绍
2. 详细介绍自己最重要的项目,深挖项目中的知识点和如何做的
3. lru缓存置换算法,及其他内存置换算法
4. 线程池中线程与内核数目的关系
5. Mysql数据库的索引结构(哈希表+B+树)
6. 手撕算法:
1)生产者消费者(不记得了,就直说了,他就给我换了道题)
2)C++单例模式
3)N叉树前序遍历(我先写的递归方法,他说太简单了叫我写迭代方法,我就又写了迭代方法)
7. 反问:技术栈(C++和golang),后续流程
一面中规中矩。
10分钟后二面。
1. 自我介绍
2. 详细介绍自己最重要的项目,深挖项目里面的知识点和如何做的
3. 扣redis和自己写缓存的区别、作用、场景细节等
4. 另一个项目里面有线程池,深挖线程池内线程使用场景,如何解决线程等待队列的问题
5. 如何写一个好的接口,扣写好的代码的原则
6. 手撕代码:
1)链表有环
2)如何找到链表环点
3)计算链表环的长度和环外面的长度
7. 反问:技术栈(C++和golang)和给我的建议(多学习,多积累),后续流程
二面面试官人很厉害,问题深度和引导都非常好,感觉学到很多。
10分钟后三面。
1. 自我介绍
2. 详细介绍自己最重要的项目,深挖项目里面的知识点和如何做的
3. C++的虚函数表
4. stl中的map和unordered_map
5. 虚拟内存技术的优点
6. malloc和mmp内存分配
7. 手撕代码:在一无序的数组中,如果一个数大于另一个数的2倍,则两数为一对,找到数组中最多几对这样的数。
我提出先排序后遍历,时间复杂度太高不行。我再提出空间换时间,一顿讨论发现不行。
面试官最后提示分两半,遍历其中一半,剩下一半有序数组使用二分查找最接近2倍值,时间复杂度O(nlogn)
8. 我的爱好,说到看书时面试官终于笑了(太难了,全程板着脸)
三面面试官有些严肃,讨论过程还是很和谐的。
整体感觉滴滴面试体验不错,面试官好评!
求滴滴给个offer啊!!!(好想成为大佬.jpg)
许愿OC!!!
#滴滴##面经##校招##C++工程师#