滴滴C++一面复盘
这场滴滴C++一面整体问得很杂,但又不是那种完全脱离项目的八股拷打,更多是基础题穿插项目追问。
前面会先看你的计算机基础和C++功底,后面再结合项目去问设计、优化、排查和取舍。整体感受就是:范围广,节奏快,很多题都能继续深挖。
我自己的感受是,面试官比较看重你是不是真的理解,而不是只背过答案。
像进程线程、Reactor、epoll、HTTPS、MySQL索引、内存池这些题,如果只能说定义,很容易就被问住。
另外项目一定要熟,不然后面问到性能优化、技术选型、线上问题排查时,会比较难接。
这场面试大概问了这些题:
- 进程与线程的区别是什么?
- C++11 协程的用户态线程是怎么实现的?
- 什么是 Reactor 模型?
- Reactor 模型底层是如何实现的?
- IO多路复用中 epoll 上层有哪些封装?LT 和 ET 的区别?
- 负载均衡中如何用 Round Robin 实现带权重的任务分配?
- 操作系统内存淘汰算法有哪些?随机淘汰有什么好处?
- STL 中 unordered_map 和 map 的区别?性能和内存如何?
- C++ 智能指针有哪些?Qt 信号与槽的底层原理是什么?
- MySQL 聚簇索引、覆盖索引、二级索引是否需要回表?
- MySQL 深度分页问题如何解决?
- 实现路由匹配应该用什么数据结构?
- HTTPS 握手过程和 TLS 报文解析是怎样的?
- 内存池的分配算法是什么?为什么这样设计?
- 跨域问题是什么?简单请求和非简单请求如何区分?
- 讲一下你的项目背景和业务场景。
- 你在项目里具体负责了哪些模块?
- 项目里最难定位的问题是什么?
- 你做过哪些性能优化?
- 你们项目里是怎么保证高可用的?
- 如果线上接口延迟突然变高,你会怎么排查?
- 为什么要做这样的技术选型?
- 如果让你重构当前项目,你最想改哪一块?
- 你觉得自己项目里最有价值的一次优化是什么?
更多C++大厂面试八股文都整理在专栏了:
https://www.nowcoder.com/creation/manager/columnDetail/Mq7XWW
总结下来,这场面试准备重点还是这几块:
操作系统基础、网络编程、C++常用原理、MySQL优化、项目表达能力。
如果后面还要继续准备这类岗位,我会更建议按模块去复习,而不是零散刷题。
因为滴滴这种问法,很多时候不是问你“会不会”,而是看你能不能把一个知识点讲完整,再和项目经验连起来。