Skip to content

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,而是能在具体场景中说清楚“为什么这样选、可能出什么问题、出了问题怎么恢复”。

Released under CC-BY-SA-4.0 License.