百度C++上海一/二/三面面经
面试官说他很久没面试了,就没走套路,都没问太多cpp的问题。
1. 先聊项目
2. 从项目延伸出来
2.1 多线程底层实现(我不是很懂面试官想要问我什么,我就讲了pthread的一些内容)
2.2 线程池的实现方式 ,使用线程池的好处
2.3 线程通信方式,线程的锁有哪些
2.4 互斥锁 读写锁 自旋锁的介绍和应用场景
2.5 消费者生产者问题
2.6 队列的线程安全,无锁队列怎么实现
2.7 CAS ,还建议我多看看java代码
3. cpp中队列有哪些,priority_queue底层实现 ,使用场景
4. 介绍rpc,服务发现是什么,负载均衡又是啥,负载均衡算法有什么
5. vector的resize和reserve
6. redis 数据结构,底层实现,线程模型
7. 算法很简单,链表找香蕉节点
问题就记得这些了;反问,面试官说聊得一般般,他很久没面试了,因为我做的业务场景不多就只能聊聊基础😁。(要问基础那么多cpp的内容不是随便问嘛)
* * *
更新二面
1. 不聊项目
2. 线程安全理解,怎么实现,效率(问了很多线程安全的问题,一面已经问了一堆二面继续怼我)
3. map umap 数据结构, 怎么实现线程安全map (还问了java分段锁,感觉部门是做java的(明明投的是c++))
4. rehash的过程, rehash的过程中新插入的数据怎么处理
5. docker的理解
6. 线程进程协程,什么是上下文切换,线程的保存的上下文怎么保存恢复的,用户态内核态;线程和协程比较
6. c++内存分配机制,new/malloc底层
8. 虚拟内存物理内存,进程内存空间
9. 智能指针,shared_ptr是否线程安全,其底层实现,循环引用
10. page cache
11. 虚函数,多态
12. ... (想起来了再写)
13. 40亿不同数据,找到某个是否存在,内存多大
14. 设计一个能得到最大值的栈
没有手撕代码,面试官说就不撕了;反问,说重视应届生基础(感觉答的不错因为问的实在太基础了,可是没有手撕就很迷惑)
更新三面纯聊天
讲一下项目
聊看过的书
聊之前最遗憾的事情
聊驱动力
聊你的优势(你没有顶会没有acm没有非常好的实习,那么你的优势在哪?)
说我的基础中上但是还不能吊打面试官...
反问.
感觉已挂