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