消息队列
候选人小李面试字节跳动P6岗位,简历上写着"熟悉消息队列"。
面试官问:"你们项目里用的什么MQ?"
小李说:"Kafka。"
面试官追问:"Kafka 怎么保证消息不丢失?"
小李开始背:"生产者端、Broker端、消费者端……"背完面试官又问:"那消费者端具体怎么写才能不丢消息?光开启自动提交行不行?"
小李额头开始冒汗。
这个问题,卡住了80%的候选人。
【面试官心理】
我问他MQ,其实不是在考背书。我是想知道:他在项目里到底有没有用过MQ,是被动接手的还是主动设计过的。自动提交offset这个点,没踩过坑的人根本答不上来。
一、内容版图
本模块覆盖主流消息队列的面试核心点:
二、高频面试题地图
2.1 选型对比 🔴
💡
面试官问选型,其实是在看你有没有"技术选型"的意识。能说出技术方案的取舍,比单纯背特性强十倍。
2.2 消息可靠性 🔴
⚠️
90%的候选人只知道"开启手动提交",但说不清楚"先提交还是先处理业务"这个顺序问题。这个才是真正丢消息的场景。
【面试官心理】
我问他消息可靠性,其实是在试探他有没有在生产环境踩过坑。只会配置不知道原理的,只能答到第二层。
2.3 顺序消息 🟡
2.4 消息积压 🟡
2.5 幂等性 🟡
2.6 事务消息 🟢
【面试官心理】
事务消息是给P7准备的加分项。答不出来不扣分,但能说清楚原理和适用场景的,基本都能过P7面试。
三、生产避坑指南
3.1 Kafka 常见翻车点
3.2 消息堆积处理流程
3.3 消息丢失排查
📖 点击展开:Kafka 可靠性配置清单
四、学习路径指引
4.1 P5 层级:会用 MQ
- 知道 Kafka/RocketMQ/RabbitMQ 的基本特性和区别
- 能说清楚消息的发送和消费流程
- 会配置消费者组、topic、分区
期望回答:能讲清楚 Kafka 的基本架构和消息发送流程。
4.2 P6 层级:懂原理
- 能说清楚 ACK 策略、ISR 机制、消费者 offset 提交
- 知道顺序消息的原理和限制
- 有生产环境排查消息丢失/积压的经验
期望回答:能回答追问,不怵细节,有实战案例。
4.3 P7 层级:能选型、能架构
- 能根据业务场景做技术选型
- 知道事务消息的原理和适用场景
- 有 MQ 相关生产故障的排查和解决经验
- 了解 MQ 延迟、吞吐量、可靠性的权衡
期望回答:有全局视野,能说清楚取舍,能讲清楚一个完整的生产问题排查过程。
五、导航指引
- Kafka 架构原理 — 整体架构、Leader/Follower、日志存储
- Kafka 分区策略 — 分区分配、消费者组
- Kafka 消息可靠性 — ISR、ACK、消息不丢失
- Kafka 顺序消息 — 分区内顺序、全局顺序
- Kafka 消息丢失 — 丢消息场景与排查
- RocketMQ 架构 — NameServer、Broker、Topic
- RocketMQ 事务消息 — 半消息、回查机制
- MQ 选型对比 — 三种 MQ 横向对比
- MQ 场景选择 — 什么场景用什么 MQ
💡
MQ 面试的进阶路径:先搞懂"消息不丢失"这个核心问题,再准备"顺序消息"和"积压处理"的生产案例,最后能说清楚三种 MQ 的取舍。做到这三点,P6 面试稳了。