美团 C++ 面经真题整理¶
参考来源¶
高频真题¶
1. C++ 有哪些内存管理方式?说说内存池实现原理。¶
速答: 除了栈/堆和 RAII 语义外,服务端常追到对象池/内存池;核心价值是减少频繁分配、控制碎片并稳定延迟。
细看: 内存管理、new/delete、内存池、allocator
2. 详细说说 DNS 解析过程。¶
速答: 浏览器/系统缓存、本地递归解析器、根/TLD/权威服务器是主线;更强的回答要主动提递归查询、迭代查询和 TTL。
细看: RPC、消息队列、DNS、CDN
3. 进程调度有哪些方法?哪些区域是线程私有的?¶
速答: 进程调度别只背名字,重点说“为什么切换有成本”;线程私有通常包括栈和寄存器上下文,而地址空间大部分资源是进程共享的。
细看: 进程、线程、内存、调度
4. 哈希冲突怎么解决?¶
速答: 常见是拉链法和开放寻址;面试里再补一句 rehash、负载因子和最坏退化,就比“哈希表 O(1)”强很多。
细看: 数据结构与算法面试基础
5. MySQL 的 ACID 是什么?¶
速答: 这题不要只背四个英文单词,最好顺手补隔离级别、幻读、MVCC 和一致性不是数据库单方面自动保证。
细看: 数据库与缓存:MySQL、Redis
6. 动态规划和分治的区别及应用场景?¶
速答: 分治强调把子问题拆开独立求解再合并,DP 强调子问题重叠且要保存结果避免重复计算;真正难点在识别状态复用。
细看: 数据结构与算法面试基础
7. 哈希冲突解决方式有哪些?¶
速答: 拉链法和开放寻址是最常见两类;再往下追时可以补 rehash、负载因子和最坏退化。
细看: 数据结构与算法面试基础
8. 为什么服务端会被上下文切换拖慢?¶
速答: 因为成本不只在调度器本身,还在寄存器保存恢复、cache/TLB 局部性被破坏;这类题美团很喜欢从 OS 基础往性能上追。
细看: 进程、线程、内存、调度
9. MVCC 和幻读是什么关系?¶
速答: MVCC 主要解决读写并发和一致性视图问题,幻读还常涉及范围锁 / Next-Key Lock 这类机制;这题很适合顺手补 RR 级别。
细看: 数据库与缓存:MySQL、Redis / MySQL 事务、锁、索引进阶
10. 为什么算法题里不能只报复杂度,还要看常数和局部性?¶
速答: 因为真实机器上 cache、分配器、数据规模和访问模式都会把“理论最优”改写成“工程上不一定最优”。
细看: 数据结构与算法面试基础
11. 如果数据库慢查询很多,你会先看什么?¶
速答: 先看执行计划、索引命中、扫描行数、回表、锁等待和流量变化;美团这类题更看重排查顺序而不是单点定义。
细看: MySQL 事务、锁、索引进阶
12. 如果缓存命中率突然掉了,先排什么?¶
速答: 先区分穿透、击穿、雪崩,还是 key 设计变化、过期策略、回源异常;答题时最好把“先分类再定位”说出来。
细看: 数据库与缓存:MySQL、Redis
13. 如果线程池满了,你是先扩线程还是先找原因?¶
速答: 先分类:是任务变慢、下游阻塞、队列积压还是配置不合理,再决定扩容、隔离、限流还是异步化;美团这类题很看排障顺序。
细看: 项目面试题:性能优化、线上排障、系统思维
14. 如果 Redis 很快,为什么系统整体还是会慢?¶
速答: 因为瓶颈可能在网络、序列化、回源、热点 key、主线程阻塞或下游依赖;“用了 Redis”不等于整个链路就快。
细看: 数据库与缓存:MySQL、Redis
15. 如果你怀疑是锁竞争导致 RT 抖动,你怎么验证?¶
速答: 先看线程状态、队列积压、火焰图/热点栈,再结合锁等待时间和最近变更判断;别只说“我会看 top”。
细看: 项目面试题:性能优化、线上排障、系统思维
16. 如果服务突然扛不住流量,是先加机器还是先限流?¶
速答: 先判断问题是短时洪峰还是容量长期不足;很多时候限流和降级是止血,扩容是后续动作,不该只会说“加机器”。
细看: 设计模式、系统设计、高并发项目问答
17. C++ 引用和指针的区别?¶
速答: 别只说“引用底层就是指针”,更重要的是语义:引用更像受约束的别名,指针更像可空、可重定向的地址容器。
细看: 值类别、引用、移动语义、完美转发、智能指针
答题提示¶
- 美团这类题很适合答成“基础概念 + 工程后果 + 排障顺序”。
- 数据库/缓存题不要只背定义,最好顺手补执行计划、命中率、回源、热点、锁等待。
- 算法题如果能主动提常数、局部性和数据规模,会比只报复杂度更像工程候选人。
算法 / 题单补充¶
- LeetCode 公司页:https://leetcode.cn/company/meituan/
- 建议优先刷:TopK、哈希、DP、BFS/DFS、综合基础题
这一类面经的美团风格¶
公开面经里,美团 C++/后端常见特点是:
- 题目覆盖面很宽,语言、OS、网络、数据库、算法都会扫
- 很容易从一个基础点快速扩展到链路题
- 适合用“主线清楚、边界补一句”的方式答,别陷在单点定义里