Skip to content

AI Infra 八股题库(近三年面经高频整理)

这份文档把近三年公开 AI Infra 面经中反复出现的基础题,按主题重新整理为可复习的八股清单。只列问题;原始面经来源见文末。

一、Transformer 与模型结构

  1. 请完整描述 Transformer 从输入 token 到输出 logits 的计算流程。
  2. Self-Attention 的 Q、K、V 分别表示什么?为什么不能省略 K?
  3. 为什么注意力分数要除以 sqrt(d_k)
  4. MHA、MQA、GQA 的结构和推理阶段 KV Cache 差异是什么?
  5. 为什么 Decoder-only 架构成为主流?与 Encoder-only、Encoder-Decoder 有何区别?
  6. FFN 为什么采用先升维再降维?SwiGLU 与标准 FFN 有什么区别?
  7. RoPE 的核心原理是什么?长上下文下有哪些局限?
  8. LayerNorm、RMSNorm、BatchNorm 的区别是什么?
  9. Causal Mask 的作用是什么?训练和推理时如何使用?
  10. MoE 专家路由按 token 还是按序列?如何避免负载不均?

二、LLM 推理与服务化

  1. Prefill 和 Decode 的计算特征分别是什么?为什么一个偏 Compute-bound、一个偏 Memory-bound?
  2. KV Cache 为什么只缓存 K、V,不缓存 Q?显存占用如何计算?
  3. KV Cache 有哪些压缩、量化、分页和淘汰策略?
  4. PagedAttention 解决了什么问题?物理 block 和逻辑序列如何映射?
  5. Continuous Batching 的调度流程是什么?
  6. Prefix Cache / RadixAttention 如何判断和复用相同前缀?
  7. Chunked Prefill 解决什么问题?会带来哪些调度权衡?
  8. PD 分离和 AF 分离分别解决什么问题?为什么需要两者?
  9. 如何定义并测量 TTFT、TPOT、吞吐、并发和 P99?
  10. vLLM、SGLang、TensorRT-LLM、fastllm.cpp 的定位和差异是什么?
  11. 大模型推理部署常见的端到端优化手段有哪些?
  12. 推理服务如何做动态批处理、限流、优先级、路由和弹性伸缩?

三、量化与模型压缩

  1. FP32、BF16、FP16、FP8、INT8、INT4 的表示范围、精度和适用场景是什么?
  2. PTQ 与 QAT 的区别是什么?量化流程如何设计?
  3. 对称量化与非对称量化有什么区别?zero-point 会带来什么开销?
  4. per-tensor、per-channel、per-group 量化如何选择?
  5. AWQ、GPTQ、SmoothQuant 的核心思路和适用场景是什么?
  6. 量化增加反量化步骤后,为什么整体推理仍可能加速?
  7. 如何评估量化后的精度、延迟、吞吐、显存和长上下文表现?
  8. KV Cache 量化与权重量化有什么不同?
  9. 剪枝、蒸馏、稀疏化和低秩适配如何组合?

四、CUDA 与 GPU 架构

  1. CUDA 的 grid、block、warp、thread 如何组织和调度?
  2. GPU 的寄存器、Shared Memory、L1/L2 Cache、Global Memory、HBM 各有什么特点?
  3. CUDA Core、Tensor Core、MMA/WMMA 分别适合什么计算?
  4. SIMT、Warp Divergence、Warp Shuffle 的原理和性能影响是什么?
  5. Occupancy 是什么?受哪些资源因素影响?Occupancy 越高是否一定越快?
  6. Global Memory 合并访问的条件是什么?如何判断访存是否对齐?
  7. Shared Memory Bank Conflict 是什么?常见规避方法有哪些?
  8. 为什么 float4 等向量化加载可能提升性能?有哪些对齐前提?
  9. H2D、D2H、Kernel 之间如何实现异步和重叠?
  10. 一个 Block 是否可能在多个 SM 间迁移执行?
  11. CUDA stream、event、同步和 memory fence 分别解决什么问题?
  12. 如何用 Nsight Systems、Nsight Compute、PyTorch Profiler 定位 GPU 瓶颈?

五、算子优化与 Kernel

  1. 如何判断算子是 Compute-bound、Memory-bound、Launch-bound 还是同步受限?
  2. Roofline 模型中的算术强度如何计算和使用?
  3. GEMM 的 tiling、寄存器复用、Shared Memory、Warp-level 分块如何设计?
  4. 为什么沿 K 维度分块能提高 GEMM 的计算访存比?
  5. 双缓冲、cp.async、TMA 和流水线如何隐藏访存延迟?
  6. 算子融合为什么能加速?什么情况下融合反而变慢?
  7. Online Softmax 如何保证数值稳定?
  8. FlashAttention V1 与 V2 的核心改进分别是什么?
  9. Reduce 算子如何做线程内、Warp 内和 Block 内分层归约?
  10. 什么时候可以使用 atomicAdd?如何降低原子操作冲突?
  11. 多 shape、不同 dtype 和不同硬件如何做 Kernel dispatch?
  12. 如何做算子正确性、数值误差和性能回归?

六、分布式训练与通信

  1. 数据并行、张量并行、流水线并行、序列并行和专家并行分别解决什么问题?
  2. DDP 的梯度同步和 bucket 机制如何工作?
  3. FSDP 与 DeepSpeed ZeRO-1/2/3 的分片对象和通信流程有什么区别?
  4. AllReduce、AllGather、ReduceScatter、Broadcast、AllToAll 的语义是什么?
  5. Ring 和 Tree AllReduce 如何选择?通信量和延迟如何比较?
  6. NCCL 如何利用 NVLink、PCIe、InfiniBand 或 RoCE?
  7. 如何实现通信与计算 overlap?为什么可能出现 NCCL Timeout?
  8. 训练过程中参数、梯度、优化器状态和激活分别占多少显存?
  9. 梯度累积、混合精度、Loss Scaling 和 Activation Checkpointing 如何配合?
  10. Pipeline Parallel 的 bubble 如何估算和降低?
  11. 多机多卡训练如何处理故障、重试、checkpoint 和一致性?

七、PyTorch、C++ 与运行时

  1. PyTorch Autograd 计算图和反向模式自动微分如何工作?
  2. torch.compile、AOTAutograd、Inductor 和 Triton 的关系是什么?
  3. PyTorch 如何通过 dispatch、operator schema 和 backend 接入自研硬件?
  4. 动态图为什么常转静态图?图优化和 Kernel 优化如何分工?
  5. C++ 虚函数表、对象布局和多态调用是怎样的?
  6. C++ 内存对齐、RAII、移动语义和智能指针在框架中有什么作用?
  7. 静态库与动态库如何选择?符号解析和 ABI 要注意什么?
  8. Python GIL 对 CPU 密集和 I/O 密集任务有什么影响?
  9. 线程、进程、协程如何选择?线程池参数如何设置?
  10. 如何设计 GPU 内存池、workspace、显存碎片和异步回收?

八、集群、系统与工程排障

  1. Kubernetes 中 Pod、Deployment、StatefulSet、Service、Ingress、HPA 分别解决什么问题?
  2. Kubernetes 如何调度 GPU?requests/limits、MIG、优先级和抢占如何配合?
  3. 容器和虚拟机的隔离边界有什么区别?namespace、cgroup、overlayfs 分别做什么?
  4. Ray、Slurm、Volcano 等调度系统的定位和核心机制是什么?
  5. 模型服务出现 OOM、P99 飙升、吞吐下降时,如何建立排障路径?
  6. 如何设计模型服务的健康检查、熔断、限流、灰度和回滚?
  7. 如何建立训练和推理的 SLO、指标、日志、trace 与告警体系?
  8. 分布式 checkpoint 如何做到快速保存、恢复和容错?

九、RAG、对齐与 Agent

  1. RAG 知识库的数据清洗、切分、索引和召回链路如何设计?
  2. 召回不到正确文档时,如何区分数据、Embedding、检索和排序问题?
  3. 召回正确但生成错误时,如何定位检索模块还是生成模块?
  4. PPO、DPO、GRPO 的目标、数据和训练流程有何区别?
  5. GAE、importance sampling 和 PPO clip 分别解决什么问题?
  6. SFT 后通用能力下降或模型过度拒答,如何调整训练?
  7. Agent、Workflow、Skill 的边界是什么?
  8. Agent 的记忆模块如何设计?如何评估记忆质量?

十、算法与手撕题

  1. 如何实现 LRU Cache?
  2. 如何实现环形队列或 Ring Buffer?
  3. 如何实现 CUDA 向量加法、Reduce、Softmax、GEMM 或 Conv2D?
  4. 如何实现链表反转、判断链表有环、合并 K 个有序链表?
  5. 如何实现二叉树层序遍历、镜像翻转或拓扑排序?
  6. 如何实现最长公共子序列、最大子数组和或单词接龙?
  7. 如何在不依赖库函数的情况下完成字符串处理和排序?
  8. 如何为手撕 Kernel 设计边界检查、线程映射、同步和误差验证?

公开来源

  • AIInfraGuide 面试宝典目录:页面标注收录 65+ 家公司、181+ 场 AI Infra 面经,本文抽取其中百度、阿里巴巴、字节跳动、腾讯、快手、小米、蚂蚁、美团、华为、英伟达、寒武纪等条目。
  • AIInfraGuide GitHub 仓库:各条目原始 Markdown 与题目分类。
  • AI Infra 工程师面经(305 题版):作为主题交叉核对,覆盖 PyTorch、CUDA、编译器、并行训练、推理、量化、服务化、调度和系统基础。

资料边界:面经是候选人公开自述或开源整理,不是公司官方题库;来源页面日期与实际面试日期可能不同,复习时应结合岗位和面试轮次判断优先级。

学习、验证、修订,持续构建 AI Infra 知识地图。