标签题目
分布式系统相关面试题
分布式系统中的一致性怎么保证?
这题考察一致性目标拆解、复制提交协议、读写路径取舍和故障后的收敛能力,不能只背 CAP 或只说加锁。
业务中为什么要使用分布式锁?
这题考察分布式互斥的业务动机、锁粒度、正确实现条件和替代方案,重点是说明锁只能保护有限临界区。
ZooKeeper 实现分布式锁的原理是什么?
这题考察临时顺序节点、前驱监听、会话语义和异常重试流程,重点是说明为什么相对公平且能避免惊群。
消费者端幂等性如何实现?
这题考察至少一次投递下的消费安全,核心是用业务唯一键、可靠去重记录和状态机把重复消息变成无副作用。
ZooKeeper 如何保证数据不丢?
这题考 ZooKeeper 的持久化和多数派提交机制,回答要把事务日志、快照、Zab 和选主安全性串起来。
Raft 算法的原理是什么?
这题考 Raft 如何用更易理解的方式实现共识,回答要覆盖 leader 选举、日志复制和安全提交。
最终一致性如何保障?
考察分布式系统在不能同步强一致时,如何用可靠事件、幂等消费、重试补偿和对账把状态收敛到正确结果。
分布式锁的使用场景?
分布式锁用于解决多个进程、多个实例、多个节点同时争抢同一份业务资源时的互斥问题,典型场景包括库存扣减、定时任务去重、幂等控制和资源抢占。面试回答不能只说“防止并发”,还要讲清锁的粒度、过期时间、唯一 token、续期、释放校验、可重入、公平性,以及 Redis、ZooKeeper、数据库方案在性能、一致性和故障边界上的取舍。
分布式锁代码逻辑里如果发生异常 catch 的时候需要做什么?
分布式锁保护的业务逻辑发生异常时,catch 的重点不是立刻解锁,而是让失败可见、记录足够上下文、决定补偿或重试。锁释放应统一放在 finally,并在释放前确认当前请求仍然持有锁,避免锁泄漏、误删他人锁和异常被吞导致的数据不一致。
分布式的 slave 和 master 之间如何通信?
master/slave 通信本质上是分布式节点之间的控制面和数据面协作。回答要覆盖心跳、注册发现、任务下发、状态上报、数据同步、故障检测和一致性取舍。
如果数据库是分布式的,如何保证数据一致性呢?
如果数据库是分布式的,如何保证数据一致性呢?这道腾讯牛客题的关键是围绕“分布式数据库一致性”讲清概念、机制、取舍和边界。分布式数据库一致性要先说明一致性目标:强一致、读己之写、单调读或最终一致。常用机制包括 Raft/Paxos 共识、quorum 读写、主从复制、2PC/TCC/Saga、幂等重试、版本冲突解决和异步对账补偿。
分布式数据库怎么保证一致性?
分布式数据库怎么保证一致性?这道腾讯牛客题的关键是围绕“分布式数据库一致性”讲清概念、机制、取舍和边界。分布式数据库一致性要先说明一致性目标:强一致、读己之写、单调读或最终一致。常用机制包括 Raft/Paxos 共识、quorum 读写、主从复制、2PC/TCC/Saga、幂等重试、版本冲突解决和异步对账补偿。
LLM 多卡并行推理中,显存占用和通信开销如何影响吞吐与延迟?
这题考 LLM 多卡并行推理的性能瓶颈,回答重点是权重显存、KV Cache、prefill/decode 差异、并行切分通信、批处理调度和长尾延迟。
分布式 MoE 中 Gate 网络如何完成路由通信,容易出现哪些通信瓶颈?
这题考分布式 MoE 的真实执行链路,重点不是只说 Gate 选专家,而是讲清 token 路由、all-to-all dispatch、专家计算、结果回传以及负载不均带来的通信瓶颈。
当 MoE 专家数量增至上千时,如何优化路由决策延迟?
这题考 MoE 专家规模扩大后的路由扩展性,回答要把 router 计算、top-k 选择、候选专家缩小、设备映射和 dispatch 准备放在一条低延迟链路里分析。
MoE 专家数量远超过 GPU 数量时,专家调度和放置策略如何设计?
这题考专家并行的资源放置和运行时调度,回答要围绕专家驻留、冷热专家、token 分桶、负载均衡、通信拓扑和训练推理差异展开。
单机多卡 LLM 推理中的分布式 GEMM 如何切分矩阵,并完成跨 GPU 通信?
这题考 tensor parallel 下 GEMM 切分和 collective communication 的基本工程理解。回答要能把矩阵维度切分、局部计算、AllReduce/AllGather/ReduceScatter、通信计算重叠和推理场景约束讲清楚。
训练 Qwen 这类大模型时,分布式训练的通信瓶颈如何优化?
这题考大模型训练中的通信瓶颈定位与优化,重点是理解数据并行、张量并行、流水线并行和 ZeRO/FSDP 等策略如何产生不同通信模式,并用 profiling 指标做取舍。
手写 CUDA All-Reduce/归约 kernel 时,如何设计线程内与 block 内归约,并说明 block 间同步和跨 GPU AllReduce 通常为什么需要多 kernel、cooperative groups 或 NCCL?
这题要先澄清 All-Reduce 在面试手写题里的边界:单 GPU 内通常先写归约 kernel,再解释 block 间同步为什么不能靠普通 __syncthreads 解决;真正跨 GPU AllReduce 属于通信 collective,通常交给 NCCL 或多阶段通信算法。
大模型训练中的 3D 并行和 DeepSpeed 分别解决什么问题,如何组合使用?
这题考的是大模型训练系统的分解能力:3D 并行解决模型和计算如何切到多卡上,DeepSpeed 提供 ZeRO、混合精度、checkpoint、offload 和并行编排等工程能力,两者可以组合但不是同一个概念。
分布式 LLM 训练中 AllReduce、AllGather、ReduceScatter 和 AllToAll 分别解决什么通信问题,哪些并行场景会用到它们?
这道题考察分布式训练中 collective communication 的语义和并行策略映射。回答要先把 AllReduce、AllGather、ReduceScatter、AllToAll 的输入输出关系讲清,再说明它们分别解决梯度汇总、参数或激活拼接、归约后分片、个性化交换等问题。进一步要能联系数据并行、张量并行、ZeRO/FSDP、序列并行、专家并行和 MoE token dispatch,指出通信量、同步开销、拓扑和 overlap 对训练效率的影响。
超大模型部署到计算集群时,如何按计算图切分并做分布式模型管理?
这题考超大模型部署系统设计。关键是把模型表示为计算图,按依赖、内存、计算量、通信和 SLA 做图切分与设备放置,再用分布式模型管理处理分片版本、加载、路由、健康检查、灰度和回滚。
DeepSpeed ZeRO 中哪些训练状态会占用 GPU 显存,为什么 activation 通常用 checkpoint/recompute 而不是像参数或优化器状态一样分页?
这道题考察大模型训练显存构成和 ZeRO 的边界。回答要先把 GPU 显存里的主要训练状态拆清楚:参数、梯度、优化器状态、激活、通信/临时 buffer 和碎片;再说明 ZeRO 主要分片的是模型状态,Stage 1/2/3 分别处理优化器状态、梯度和参数;最后解释 activation 为什么通常用 checkpoint/recompute:它是 batch/sequence 相关的短生命周期中间结果,反向依赖层级顺序,分页到 CPU/NVMe 会引入高带宽低延迟瓶颈,而重计算能用额外 FLOPs 换显存,通常更可控。
Agent 调用外部工具失败时,如何区分短暂网络抖动、工具服务不可用和业务错误,并设计超时、重试、熔断与降级策略?
这道题考察 AI Agent 工具调用的工程可靠性设计。好的回答不能只说失败就重试,而要先把失败分类,再为不同错误配置超时、退避重试、幂等、防风暴、熔断、降级和观测告警。