上海 C++/PHP/Go岗位
一面 7.26 时长60min
1. C++的内存分区,什么是堆,堆区存放什么数据?
2. 指针和引用的区别
3. 指针占用的大小
4. 死锁的条件。如何解决死锁。
5. 野指针和内存泄漏是什么,如何避免?
6. malloc和new的区别
7. 进程和线程的区别
8. 一个服务器上可以部署多个同样的进程吗?如果可以,为什么可以?客户端怎么知道是哪个进程提供服务?没太理解意思。答了对多个进程指定其端口号。
9. 多线程会发生什么问题?线程同步有哪些手段?
10. 介绍MySQL的索引,叶子节点存什么,非叶子节点存什么?建立索引时有哪些原则?
11. MySQL的Buffer Pool是什么?存储哪些数据?如果磁盘上有100G数据,是都把这些数据load到buffer pool吗?回答不是,buffer pool只是缓存需要的数据并且尽可能缓存热数据。
12. MySQL的Buffer Pool如何区分冷热数据?回答使用LRU,类似统计预测。面试官说不对,追问是不是想问当page在磁盘上的时候,就把冷热数据区分出来,面试官说是。我回答这样没办法区分,不知道面试官想考察什么,没明白这个问题什么意思。
13. MySQL的LRU和普通的LRU算法有何区别?
14. 介绍MySQL三大日志redo log,undo log,bin log。
15. 写一个LRU缓存。
二面 8.1 时长45min
1. 项目,项目是高可用的吗?做了分布式吗?有遇到过网络问题吗(丢包之类的)?了解过RPC吗?连环炮,顶不住,很多没答上来。
2. TCP UDP的区别
3. 如何使用UDP设计一个可靠的传输协议(知识盲区)
4. 一条SQL语句的执行流程
5. 查询优化器有哪些优化
6. InnoDB里面有哪些线程
7. 为什么使用B+树做索引,而不是B树或者哈希
8. 了解Trie树吗
9. MySQL缓存介绍一下,有哪些优化
10. 写题,力扣56,合并区间
三面 8.7 时长60min
三面就是项目+聊天,面试官人很好,全程微笑,整体氛围很轻松。
记录一些面试记得的一些问题吧。
面试官说百度主要在往Go迁移,让我不要局限于C++,还让我想好自己的工作方向,毕业生第一份工作方向很重要,因为我研究方向是做数据库,部门是做后台服务,偏大数据,要我想好要走数据库内核还是后台服务。
项目方案是纯自己想的吗?有没有借鉴业界其它相关领域额的工作?项目有没有考虑分布式的场景?对百度有什么了解?有实习经历吗(无,尴尬)?
怎么看待chatgpt,用过吗,有什么了解,跟以前有什么不一样的地方?
chatgpt可以和数据库结合吗?向量数据库了解吗?
最后反问,问部门工作内容,面试官介绍了很多很多。