kafka面经汇总
感谢那些分享面经的同学,大家结合自己的业务+八股的方式去回答感觉会更好。
tips:如果大家对自己的项目业务还不是很熟悉,可以用Trae或者其他的ai IDEA帮你分析整个项目的业务
一、核心原理与基础概念
- 请简述 Kafka 的核心原理(架构、数据流转过程)。
- 讲一下你对消息队列的理解(核心价值、适用场景)。
- Kafka 的核心特性有哪些?
- Kafka 是推(Push)模式还是拉(Pull)模式?支持批量处理还是单条处理?
- 什么是零拷贝?Kafka 的零拷贝是怎么实现的(底层调用的函数 / 机制)?
- 有了解过 Kafka 分区(Partition)的概念吗?其核心作用是什么?
- 正常情况下,一个 Topic 下是一个分区还是多个分区?多个分区的好处是什么?
- Kafka 的 Leader 和 Follower 分别是干什么用的?
- 请介绍 Kafka 的 ISR 机制(In-Sync Replicas,同步副本集)。
- Kafka 用什么维护消费偏移量(Offset)?最新版本还依赖 ZooKeeper 吗?原因是什么?
- 除了异步通信和削峰填谷,使用 MQ 还有哪些考量?
- 什么时候会用到 Kafka?其核心应用场景是什么?
二、高可用与可靠性保障
- Kafka 如何保证高可用性?(结合集群、ISR、Leader 选举等)
- Kafka 如何保证消息不丢失?可能丢失消息的场景有哪些?如何解决?
- Kafka 如何保证消息的顺序性?(整体顺序、分区内顺序)
- Kafka 如何防止脑裂问题?
- Kafka 支持事务吗?其事务机制是怎样的?
- 什么是消息的重复消费?Kafka 中如何避免重复消费?
- Kafka 的 ACK 有哪几种模式?各自的作用是什么?
- 一个 Kafka Topic 被 5 个消费组同时消费(每个 Group 写不同系统),中间某个 Group 偶发失败,但不能重放整条消息(其他组已成功),如何保证该组失败消息的精准重试?同时如何保证幂等性?
三、分区与 Topic 相关
- Kafka 的分区策略有哪些?默认分区、粘性分区、自定义分区分别是什么?
- Kafka 如何将消息发送到指定的 Partition 中?(底层逻辑、路由规则)
四、生产者与消费者相关
- Kafka 消费者的消费策略有哪些?(如 Range、Round-Robin 等)
- 什么是 Kafka 的 Rebalance 机制?
- 哪些情况下会触发 Kafka 的 Rebalance?
- Rebalance 持续时间较长会有什么影响?如何解决?
- 如何降低 Consumer 重启次数?
- Kafka 出现消息消费 Lag(消费延迟、消息堆积)时,如何排查问题?怎么处理?
- 除了限流和丢弃消息,还有哪些方式可以提高消费者的吞吐量,解决消息积压?
- 单分区单消费者实例场景下,如何提高 Kafka 的吞吐量?
- Kafka、RabbitMQ 如果要监听多个 Topic,需要写多个监听器吗?
五、选举机制
- Kafka 的 Leader 选举策略是什么?
- Kafka 的选举机制具体是怎么实现的?(结合 ISR、Controller 等)
六、性能优化
- 为什么 Kafka 速度快?(从存储、IO、网络等角度分析)
七、部署与运维
- 如果 Kafka 宕机,如何处理?(分 Broker 宕机、Consumer 宕机等场景)
八、特殊功能实现
- Kafka 的延迟消息队列是如何实现的?
- 如何用 Kafka 解耦文件上传与处理流程?
九、MQ 对比与选型
- Kafka 和 RabbitMQ 有什么区别?
- Kafka、RabbitMQ、RocketMQ 三者的区别与适用场景?
- 为什么选择 Kafka 实现服务通信?选型时为什么不选 RabbitMQ 或 RocketMQ?
- 为什么使用 Kafka 做异步通信?有考虑过其他 MQ 吗?
十、项目实战场景
- Kafka 在工作场景中主要用于解决什么问题?
- Kafka 在项目中的具体使用场景有哪些?(举例说明)
