分布式面试题

目录概述

分布式相关面试题涉及 CAP/BASE 理论、一致性算法、分布式事务、消息队列、注册中心等,是 P7 候选人的核心考察区。

这个目录帮你建立分布式系统的全局视角,理解架构权衡背后的本质。

【面试官心理】 我出分布式题,通常从理论开始:"CAP 定理是什么?你们用 CP 还是 AP?" 能说出"一致性、可用性、分区容错"的占 80%,能说清楚 CP 和 AP 各自适用场景的占 30%,能举出实际系统案例(Zookeeper 是 CP、Eureka 是 AP)的只有 10%。

内容范围

核心主题

分布式理论基础

  • CAP 定理:一致性、可用性、分区容错,三选二的权衡
  • BASE 理论:基本可用、软状态、最终一致性
  • 一致性模型:强一致性、弱一致性、最终一致性
  • 拜占庭将军问题与 Paxos、Raft 算法

一致性算法

  • Paxos 算法: proposer、acceptor、learner 角色,三阶段提交
  • Raft 算法:leader 选举、日志复制、成员变更
  • ZAB 协议:Zookeeper 原子广播
  • Gossip 协议:最终一致性、去中心化
  • 拜占庭容错:PBFT 算法

分布式事务

  • 两阶段提交 2PC:协调者、单点故障、数据不一致
  • 三阶段提交 3PC:CanCommit、PreCommit、DoCommit
  • TCC 模式:Try、Confirm、Cancel,空回滚、悬挂问题
  • 本地消息表:最终一致性、消息可靠性
  • 最大努力通知:重试机制、核对服务
  • Saga 模式:编排模式 vs协同模式

分布式协调

  • Zookeeper:ZAB 协议、watch 机制、选举算法
  • Etcd:Raft 协议、MVCC、Lease
  • Consul:服务发现、Health Check
  • Nacos:配置中心、服务发现

消息队列

  • Kafka:分区、ISR、顺序消费、事务消息
  • RocketMQ:事务消息、定时消息、延迟队列
  • RabbitMQ:交换机、路由、队列,镜像队列
  • 消息可靠性:生产端可靠性、消费端可靠性
  • 消息顺序性:单分区顺序、多分区全局顺序
  • 消息幂等性:唯一消息 ID、数据库去重、分布式锁

分布式锁

  • Redis 分布式锁:SETNX、Redlock、Redisson
  • Zookeeper 分布式锁:临时顺序节点、watch 机制
  • 数据库分布式锁:主键唯一、悲观锁
  • 死锁检测:超时机制、watch dog

分布式缓存

  • Redis Cluster:槽位分配、故障转移
  • Codis:代理分片、槽位迁移
  • 缓存路由:一致性 hash、虚拟节点
  • 缓存预热:系统启动时加载热点数据

服务治理

  • 服务注册与发现:心跳机制、健康检查
  • 负载均衡:轮询、随机、加权、一致性 hash
  • 服务熔断:Hystrix、Sentinel、熔断器模式
  • 服务限流:计数器、滑动窗口、令牌桶、漏桶
  • 服务降级:手动降级、自动降级

面试题分级

级别考察重点期望回答判分标准
P6分布式理论、CAP/BASE、常见中间件能回答理论问题,理解基础概念入门过关
P7分布式事务、一致性算法、方案选型有实战案例,能做 trade-off深度过关
架构系统设计、容量规划、高可用方案能设计完整方案,权衡利弊经验闭环

高频必考题 🔴

CAP 定理与 BASE 理论

面试官问:"CAP 定理是什么?为什么 nosql 数据库通常选择 AP?"

能说出"一致性、可用性、分区容错"的占 80%,能说清楚 CP 和 AP 各自权衡的占 40%,能举出实际系统案例并说清楚选型原因的占 10%。

【面试官心理】 我问他 CAP,其实想探查的是:他有没有真正在分布式系统里做过权衡。不是背结论,而是能说清楚"我们业务场景是什么,我们选了 AP 为什么这么选"。能讲清楚 trade-off 的候选人,才是真的理解分布式。

分布式事务

面试官问:"你们用什么方案解决分布式事务问题?TCC 还是 Seata?"

能说出 2PC、3PC、TCC 的占 60%,能说清楚各自优缺点的占 30%,能根据业务场景给出合理方案的占 10%,能说出 Seata 模式的只有凤毛麟角。

Raft 算法

面试官问:"Raft 算法是怎么选主的?网络分区后怎么恢复?"

能说出"Term 编号、投票机制"的占 50%,能说清楚日志复制的占 30%,能说清楚节点故障后日志同步的占 10%,能画完整状态机的只有 5%。

中频常考题 🟡

  • Zookeeper watch 机制
  • Kafka 顺序消费
  • 消息幂等性实现
  • 分布式锁选型
  • 服务注册与发现

低频了解题 🟢

  • Gossip 协议原理
  • PBFT 算法
  • 命名服务
  • 配置中心设计

学习路径指引

P6 候选人(中级社招)

先掌握分布式基础理论、CAP/BASE、常见分布式中间件。消息队列、分布式锁、注册中心要会使用。这个阶段能正确使用分布式组件即可。

P7 候选人(高级/架构方向)

必须理解分布式一致性算法、Raft/Paxos 原理。分布式事务要有实战经验,能根据业务场景选择合适方案。能设计分布式系统架构,理解高可用、高性能、低延迟的权衡。

【面试官心理】 P7 候选人聊分布式,我通常会问:"你们系统里遇到过什么分布式问题?怎么排查和解决的?" 能讲出完整案例的候选人,说明他真正在生产环境处理过分布式问题。

生产避坑

分布式锁失效

Redis 分布式锁在 GC 时可能失效:持有锁的进程 GC 导致锁过期,其他进程获取锁后原进程恢复并释放锁。解决方案:Redisson 看门狗机制、Zookeeper 临时节点。

消息积压

消费者故障导致消息积压,上游又持续发送。解决方案:消费者隔离、消息过期策略、死信队列。

服务雪崩

某个服务故障导致调用方超时堆积,最终整个系统不可用。解决方案:熔断、降级、限流、隔离。

导航指引