10. 面试题
本章按初、中、高级整理分布式系统面试题,并给出答题要点。问题尽量贴近 AI Infra 场景。
10.1 初级
1. 什么是分布式系统?它和单机系统最大的区别是什么?
答题要点:多台计算机通过网络协作完成任务;核心区别是网络分区、节点故障、消息延迟、时钟不一致、部分失败。
2. CAP 定理是什么?AI Infra 中应该怎么选?
答题要点:C/A/P 三者不可兼得,P 必须接受;checkpoint 元数据选 CP,推理缓存选 AP。
3. 什么是主从复制?有什么优缺点?
答题要点:Leader 处理写,Follower 复制;优点一致性强,缺点是 Leader 单点瓶颈和故障切换。
4. 一致性哈希解决了什么问题?
答题要点:节点增减时只影响相邻数据,减少全量迁移。
5. 什么是幂等?为什么分布式系统里很重要?
答题要点:多次执行效果相同;因为网络重试会导致请求重复。
10.2 中级
6. Raft 和 Paxos 有什么区别?为什么 etcd 用 Raft?
答题要点:
- Paxos 理论复杂,难实现;
- Raft 把共识拆成 leader 选举、日志复制、安全性,更易理解;
- etcd 需要工程可维护性,因此选 Raft。
7. Raft 领导者选举的基本流程是什么?
答题要点:
- Follower election timeout 后变成 Candidate;
- 自增 term,给自己投票,向其他节点请求选票;
- 获得多数票成为 Leader;
- 发现更高 term 则退回 Follower。
8. Quorum N/W/R 的含义是什么?如何保证读到最新值?
答题要点:N 副本数,W 写确认数,R 读副本数;当 W + R > N 时读写有重叠,保证读到最新。
9. 两阶段提交有什么问题?生产环境一般怎么替代?
答题要点:协调者单点故障会阻塞参与者;生产常用 Saga、TCC、Spanner/Percolator 模型。
10. 向量时钟和 Lamport 时间戳的区别?
答题要点:
- Lamport 时间戳只能判断 happens-before,无法识别并发;
- 向量时钟可以判断两个事件是并发还是存在因果;
- 向量时钟维度随节点数线性增长。
11. Kubernetes 中 etcd 的作用是什么?为什么需要 3 或 5 个节点?
答题要点:etcd 保存 K8s 所有状态;Raft 需要多数派存活,3 节点容忍 1 故障,5 节点容忍 2 故障。
12. 分布式训练中 all-reduce 的作用是什么?
答题要点:把各 worker 计算的梯度聚合后同步回所有 worker,保证模型副本一致。
10.3 高级
13. 设计一个支持 10 万张 GPU 的分布式训练调度系统,你会怎么保证控制面高可用?
答题要点:
- 控制面用 etcd / Raft,跨 AZ 部署;
- scheduler 多实例 leader election;
- apiserver 水平扩展 + 请求限流;
- 状态分片降低单 etcd 压力;
- watch 机制做事件驱动而非轮询。
14. 对象存储在跨区域场景下如何保证强一致?
答题要点:
- 写入时同步复制到多数副本再返回;
- 使用版本号和向量时钟检测冲突;
- 读时读取多个副本并合并;
- 或者依赖 Spanner 式的 TrueTime + 2PC。
15. 如何设计一个 LLM 推理服务的多副本 KV Cache 共享方案?
答题要点:
- 副本内张量并行已经共享;
- 跨副本共享可用外部高速 KV 缓存(如 Redis、RDMA 共享内存);
- 一致性选择:最终一致 + 请求 sticky;
- 故障时缓存失效不丢语义,只影响性能。
16. 解释 FLP 不可能性,以及工程上如何绕过它。
答题要点:异步网络中无法确定性共识;工程上用超时、随机化、租约、同步假设绕过。
17. 设计一个分布式锁,需要满足哪些属性?
答题要点:互斥、防死锁、防误删、可重入、高可用、可观测。
18. 如果 etcd 集群发生网络分区,K8s 会怎样?
答题要点:
- 少数派分区不可用,避免脑裂;
- 多数派分区继续服务;
- apiserver 连到少数派会失败;
- 分区恢复后,少数派通过 snapshot / 日志追赶。
10.4 开放题
19. 你印象深刻的分布式系统失败案例是什么?如果是你,怎么避免?
答题要点:可结合真实案例(如某云 K8s etcd 脑裂、某训练任务 NCCL timeout、某对象存储跨区域不一致),从故障域、超时、幂等、可观测性等角度分析。
20. 如何在一致性、可用性、延迟之间为 AI 训练 pipeline 做 trade-off?
答题要点:
- 调度状态强一致;
- 训练数据缓存最终一致;
- checkpoint 元数据强一致,数据对象可异步复制;
- 推理结果缓存低延迟优先;
- 用版本号和向量时钟处理冲突。
10.5 一句话总结
分布式系统面试的核心,不是背会 Raft 或 CAP,而是能在具体场景中说清楚“为什么这样选、可能出什么问题、出了问题怎么恢复”。