# 1. 两阶段提交(2PC)的协调者与参与者协议流程是什么,同步阻塞、协调者单点与脑裂问题如何产生? A 2PC 天然避免脑裂 B 2PC 无阻塞问题 C 协调者故障不影响参与者 D 参与者 prepare 后阻塞等待协调者,协调者单点故障导致无法推进 ✓ 正确答案
# 2. 三阶段提交(3PC)相对 2PC 增加了哪些阶段与超时机制,为什么仍不能彻底解决网络分区问题? A 增加 CanCommit 阶段与超时中止,但分区下仍可能决策冲突 ✓ 正确答案 B 3PC 彻底解决分区问题 C 3PC 无超时机制 D 3PC 与 2PC 完全相同
# 3. TCC(Try-Confirm-Cancel)的空回滚与悬挂问题是什么,它与 2PC 在资源锁定与最终一致性上有何本质区别? A TCC 用数据库锁保证强一致 B 空回滚是 Cancel 先于 Try 到达,TCC 用业务预留 + 异步补偿追求最终一致 ✓ 正确答案 C TCC 无悬挂问题 D TCC 与 2PC 完全一致
# 4. SAGA 长事务如何用正向操作加补偿操作编排,补偿失败与幂等如何保证,与 TCC 的适用场景差异? A SAGA 补偿操作不需要幂等 B SAGA 用正向+补偿操作,适合长流程最终一致;TCC 用 Try/Confirm/Cancel 预留资源 ✓ 正确答案 C SAGA 与 TCC 完全等价 D TCC 适合无预留场景
# 5. 本地消息表与事务消息如何保证"业务提交"与"消息发送"的原子性,最终一致性的延迟与失败重试如何设计? A 事务消息无需回查 B 两者都无法保证原子性 C 本地消息表用同库事务、事务消息用半消息+回查,保证业务与消息原子 ✓ 正确答案 D 本地消息表与业务事务无关
# 6. 分布式锁应满足互斥、可重入、防死锁、防误删等哪些要求,加锁值携带唯一标识(token)为什么必要? A token 用于提高并发 B 释放锁无需校验身份 C token 唯一标识持锁者,释放时校验 token 防止误删他人锁 ✓ 正确答案 D token 与防死锁无关
# 7. Redis SETNX 加过期时间实现分布式锁有哪些边界问题,Redlock 算法为何存在争议,什么场景不宜使用? A Redlock 依赖时钟与故障假设,主从切换/时钟漂移时可能违背互斥,强互斥场景不宜用 ✓ 正确答案 B Redlock 保证严格互斥 C SETNX 锁无任何边界问题 D 强互斥场景可用 Redis 锁
# 8. 基于 etcd/ZooKeeper 的分布式锁(租约加 watch)与 Redis 锁在一致性、可用性与运维成本上的差异? A Redis 锁保证严格互斥 B 两者一致性相同 C etcd/ZK 用共识+租约+watch 强一致,Redis 性能高但一致性弱 ✓ 正确答案 D etcd/ZK 锁吞吐更高
# 9. 幂等设计的三个层次(唯一键、去重表、状态机)如何工作,重复请求为什么必须返回与首次一致的结果? A 状态机与幂等无关 B 重复请求可以返回不同结果 C 幂等只需唯一键即可 D 唯一键/去重表/状态机三个层次实现幂等,重复请求返回与首次一致结果 ✓ 正确答案
# 10. 2PC、TCC、SAGA、消息最终一致分别适合什么一致性要求与业务场景,选型时应权衡哪些因素? A SAGA 提供强一致 B 所有方案都提供强一致 C 强一致选 2PC/TCC,长流程最终一致选 SAGA,异步解耦选消息最终一致 ✓ 正确答案 D 消息最终一致无需任何权衡
# 11. CAP 与 BASE 在分布式事务中的指导意义是什么,为什么强一致事务与高可用通常难以兼得? A 分区时强一致与高可用可以同时满足 B 分区时强一致事务与高可用难以兼得,BASE 用最终一致换取可用性 ✓ 正确答案 C BASE 要求强一致 D CAP 定理与分区无关
# 12. 可靠消息最终一致中的最大努力通知、回调重试与人工对账如何兜底,消息积压时如何降级? A 积压时不需降级 B 消息一次性保证送达 C 无需对账兜底 D 最大努力通知 + 回调重试 + 人工对账兜底,积压时降级处理 ✓ 正确答案
# 13. XA 协议与 Seata AT 模式的实现原理(全局锁、分支事务、undo log)及相对 2PC 的性能改进? A Seata AT 需长期持数据库锁 B Seata AT 与 XA 完全相同 C XA 用数据库锁两阶段强一致,Seata AT 用全局锁+undo log 非阻塞最终一致 ✓ 正确答案 D XA 无阻塞问题
# 14. 分布式事务的监控与治理,全局事务状态、分支事务超时与悬挂事务的检测、人工干预与补偿重放流程如何设计? A 事务无需监控 B 跟踪全局状态、检测超时/悬挂、人工干预与补偿重放保证可恢复 ✓ 正确答案 C 悬挂事务无需处理 D 补偿失败无需重放
# 15. 幂等去重窗口与并发安全,去重表在并发重复请求下的唯一索引冲突处理、去重记录的保留周期与清理策略,以及与状态机幂等的组合? A 去重记录无需清理 B 并发重复请求会破坏幂等 C 唯一索引处理并发冲突,保留周期覆盖重试窗口,与状态机组合实现完整幂等 ✓ 正确答案 D 状态机与去重表互斥
# 16. SAGA 的编排实现,集中式编排(状态机)与事件驱动 choreography 的差异,补偿链断裂时的恢复与对账机制? A choreography 有中心协调器 B 两种编排方式完全相同 C orchestration 集中状态机易追踪,choreography 事件驱动松耦合,补偿断裂需重试+对账恢复 ✓ 正确答案 D 补偿链不会断裂
# 17. 分布式锁的公平性与等待机制,锁等待队列、自旋 vs 阻塞、超时重试如何设计,避免惊群与饿死? A 无需公平队列 B 锁释放时唤醒所有等待者 C 自旋与阻塞无区别 D 等待队列保证公平,受控唤醒避免惊群,随机退避避免饿死 ✓ 正确答案
# 18. 分布式锁的续期(看门狗)机制如何工作,主从切换导致的锁丢失问题有哪些缓解方案? A 看门狗续期防止业务未完成锁过期,主从切换丢锁可用共识锁或 fencing token 缓解 ✓ 正确答案 B 看门狗让锁永不过期 C 主从切换不会丢锁 D 续期与锁安全无关
# 19. 分布式事务的性能优化,异步化、本地事务加消息、批量提交与读写分离如何降低同步开销? A 异步化降低吞吐 B 性能优化都需保持强一致 C 批量提交增加 RPC 次数 D 异步化、本地事务加消息、批量提交与读写分离降低同步协调开销 ✓ 正确答案
# 20. 分布式事务与消息的衔接,事务消息的半消息回查失败、消息重复投递与最终一致性的兜底如何配合? A 半消息回查保证业务与消息一致,重复投递幂等,兜底靠重试对账 ✓ 正确答案 B 半消息回查失败无需处理 C 消息重复投递无需幂等 D 三者互相独立