# 1. Broker 主从同步中 SYNC_MASTER/ASYNC_MASTER、同步双写与异步复制的数据安全边界 A 复制模式与刷盘策略无关,无需组合考虑 B ASYNC_MASTER 模式下主节点宕机一定不丢数据 C SYNC_MASTER 需要 Slave 确认写入后才返回给生产者 ✓ 正确答案 D SYNC_MASTER 吞吐一定高于 ASYNC_MASTER
# 2. RocketMQ 架构组件中 NameServer、Broker(Master/Slave)、Producer/Consumer 的职责与部署形态 A NameServer 是无状态的路由中心,负责 Broker 注册与路由发现 ✓ 正确答案 B NameServer 参与消息存储,故障会导致数据丢失 C Broker 只负责转发,不存储消息 D Producer 直接写消息到任意 Broker,无需路由
# 3. 消息可靠性中发送重试、刷盘策略(SYNC_FLUSH/ASYNC_FLUSH)、消费重试与死信队列(DLQ)机制 A SYNC_FLUSH 性能总是高于 ASYNC_FLUSH B 消费多次重试仍失败的消息会进入死信队列(DLQ) ✓ 正确答案 C 发送失败后 RocketMQ 不会自动重试 D 死信队列中的消息无需处理
# 4. NameServer 运维中无状态设计、Broker 注册与路由发现、故障影响与脑裂防护 A Broker 向 NameServer 注册后无需心跳 B NameServer 之间共享数据,一台故障全部失效 C NameServer 是无状态的,NameServer 故障不影响已建立的消息收发 ✓ 正确答案 D NameServer 参与消息存储
# 5. 事务消息中半消息、事务回查与本地事务表机制以及未决事务如何监控与处理 A 事务回查只用于同步,不兜底 B 半消息直接投递给消费者 C 半消息对消费者不可见,本地事务提交后再 commit 使消息可见 ✓ 正确答案 D 本地事务表与回查无关
# 6. 存储结构中 commitlog/consumequeue/index 文件、文件保留策略与容量规划 A 文件保留只按大小,不按时间 B consumequeue 直接存储消息内容 C commitlog 是随机写,性能较低 D 所有消息顺序写入全局 commitlog,consumequeue 记录逻辑偏移 ✓ 正确答案
# 7. 常见故障排障中刷盘慢、page cache 压力、Broker 假死、路由不一致的定位 A Broker 假死指进程存活但无响应,需结合 GC 日志与线程 dump 定位 ✓ 正确答案 B 刷盘慢与磁盘 IO 无关,只需调大 JVM C page cache 压力不影响读写性能 D 路由不一致只与客户端有关,与 NameServer 无关
# 8. 延迟/定时消息中延迟级别、时间轮实现与运维限制(延迟上限、存储成本) A 延迟消息通过固定延迟级别实现,消费时间到后投递 ✓ 正确答案 B 延迟级别可以任意设置任意秒数,不设上限 C 延迟消息在 Broker 中暂存不占用额外存储 D 时间轮调度复杂度与延迟级别数量成正比
# 9. 消息堆积治理中消费 lag 监控、消费端扩容、队列再平衡与消费限流 A lag 只反映生产速率,与消费无关 B 增加消费者实例不会改变队列分配 C 集群消费模式下增加消费者实例,RocketMQ 会在组内自动再平衡队列 ✓ 正确答案 D 队列数无法扩容
# 10. 监控与告警中 Broker 吞吐、堆积量、发送失败率、主从同步延迟的指标建设 A 磁盘使用率无需监控 B 发送失败率与数据安全无关 C 堆积量只反映单条消息,无需监控 D 主从同步延迟反映 Master 与 Slave 的 offset 差,是数据安全的关键指标 ✓ 正确答案
# 11. 集群扩缩容中 Broker 增减、Topic 队列扩缩、流量迁移与优雅下线 A 优雅下线直接 kill 进程即可 B 增加队列数不影响任何消费行为 C 下线 Broker 无需迁移数据 D Broker 下线前需确认无消费依赖并保证主从 OK,避免丢消息 ✓ 正确答案
# 12. 顺序消息中全局/分区顺序(MessageQueueSelector)的实现与顺序消费故障处理 A 全局顺序与分区顺序实现完全相同 B 顺序消息消费失败会自动跳过继续下一条 C MessageQueueSelector 将同一 key 的消息路由到同一队列,消费端单线程按序消费 ✓ 正确答案 D 顺序消费不受失败影响
# 13. 集群消费与广播消费中两种消费模式的语义差异、适用场景与运维上的坑(广播模式下的堆积与重置)? A 广播消费模式下实例间会分摊消息 B 集群消费一条消息只被组内一个实例消费,广播消费每个实例都消费 ✓ 正确答案 C 广播模式消费进度按组统一管理 D 集群消费每个实例都消费同一条消息
# 14. 消息过滤中 Tag 过滤与 SQL92 属性过滤的实现位置与性能差异以及如何使用属性过滤避免 Tag 爆炸? A Tag 爆炸不影响性能与管理 B SQL92 过滤比 Tag 过滤性能更高 C Tag 过滤支持任意复杂表达式 D Tag 过滤在 Broker 分发时进行,性能高;SQL92 过滤基于属性表达式,更灵活但开销大 ✓ 正确答案
# 15. 消费幂等中消息重投与重复消费的必然性以及去重表/业务状态机等幂等方案的实现要点? A 业务状态机无法用于幂等 B 去重表方案无需考虑原子性 C RocketMQ 是 at-least-once 语义,重复消费不可避免,消费端需保证幂等 ✓ 正确答案 D 幂等只需保证每次消费都执行
# 16. 4.x 到 5.x 迁移中 Broker 职责拆分、gRPC 协议与 Proxy 层引入后的部署差异与兼容性? A 5.x 引入 Proxy 层与 gRPC 协议,同时兼容旧版 Remoting 协议 ✓ 正确答案 B 5.x 客户端无法访问 4.x Broker C 5.x 完全移除 Broker 存储职责 D 5.x 必须使用 Proxy,无直连方式
# 17. 与 Kafka 的对比与迁移中消费/存储模型差异、迁移工具与双跑验证 A 双跑只验证消息数,无需校验内容 B 两者存储模型完全相同 C 迁移无需对账,直接切换即可 D Kafka 以分区为单位存储,RocketMQ 以全局 commitlog 存储,模型差异导致迁移需处理对齐 ✓ 正确答案
# 18. 多副本与容灾中 Dledger(Raft)模式、跨机房复制与主从切换 A Dledger 不支持跨机房部署 B Dledger 仍需人工指定主从 C Dledger 只需 leader 确认即可返回 D Dledger 通过 Raft 协议实现多副本,leader 故障时自动选举新 leader ✓ 正确答案
# 19. 安全与运维工具中 ACL、消息轨迹(trace)、消息查询与回放的使用 A 消息回放与对账无关 B ACL 只能控制存储,不能控制读写 C 消息查询无法按 key 进行 D 消息轨迹(trace)收集发送、存储、消费各环节时间戳,用于排查消息去向 ✓ 正确答案
# 20. 性能与 JVM 调优中堆外内存、page cache 与刷盘策略的关系以及 Broker JVM 参数设置的要点? A 刷盘策略与内存无关 B 堆越大 page cache 越多,性能越好 C JVM 堆不宜过大,需留出足够内存给 page cache,否则影响读写性能 ✓ 正确答案 D 堆外内存无需考虑