ELEGY · BLOG

Agent / 大模型面经 Wiki

返回门户

Agent / 大模型应用开发 面经 Wiki

数据来源:本地截图面经(阿里/美团/百度)+ 全网深度搜集的真实面经 Wiki(卡码笔记、Datawhale hello-agents、AgentGuide、AIInfraGuide、Awesome-LLM-Interview、代码随想录、牛客/CSDN 大厂面经)。
使用方法:先看「全部问题目录」自测哪些题能张口就答,再点进对应解答;「衍生追问」是面试官可能继续深挖的方向;「真实情景面经」按公司+轮次还原现场。

使用指南

  • 第一步 · 目录自测:下方目录按模块列出全部问题,先遮住答案,能说出来的跳过,说不出来的点进锚点看解答。
  • 第二步 · 按岗侧重复习:应用开发/Agent 岗优先 RAG + Agent + 工程系统;算法岗优先 Transformer + RLHF + 微调部署;AI Infra 岗优先推理优化 + 分布式训练。
  • 第三步 · 真实情景模拟:最后刷「真实情景面经」,用公司+轮次+追问上下文检验自己能否临场展开。
  • 来源可追溯:每道题标注来源(卡码/Datawhale/AgentGuide/AIInfraGuide/牛客/CSDN),来源索引见文末。

全部问题目录

01检索增强 RAG8 题
  1. 1. 语义分片与切片策略
  2. 2. 混合检索与 RRF 归一化
  3. 3. 查询改写与 HyDE
  4. 4. Reranker 重排
  5. 5. Graph RAG 与知识关联
  6. 6. Lost in the Middle 与长上下文
  7. 7. 文档增量同步与版本冲突
  8. 8. 评估与防幻觉
02Agent 推理与规划8 题
  1. 9. CoT 与 ReAct
  2. 10. Plan-and-Solve vs ReAct
  3. 11. Self-Reflection 与失败重规划
  4. 12. 多工具并行调用
  5. 13. Tool Retrieval 与工具规模
  6. 14. Function Call 与 JSON 稳定性
  7. 15. Agent Harness 与 Skills vs Tool
  8. 16. Agent 自进化(不微调)
03记忆与状态4 题
  1. 17. 记忆压缩与总结触发
  2. 18. 长期画像 vs 短期历史
  3. 19. 向量记忆库动态更新与长上下文
  4. 20. Session 持久化与工具结果预压缩
04多 Agent 架构2 题
  1. 21. 单体拆分与多 Agent 边界
  2. 22. 分层 vs P2P 与通信优化
05工程系统4 题
  1. 23. 限流 / 并发 / 异步
  2. 24. Redis 缓存与 MySQL 存储
  3. 25. 轨迹评估与死循环监控
  4. 26. MCP 与 LangGraph
06模型与基础2 题
  1. 27. Transformer 与基础
  2. 28. AI Coding 技巧与手撕清单
07LLM 基础16 题
  1. Q29. 自注意力机制如何工作?为什么比 RNN 更适合长序列?
  2. Q30. 位置编码为什么必需?RoPE 相比绝对位置编码的优劣?
  3. Q31. MHA / MQA / GQA / MLA 的区别?
  4. Q32. Encoder-Only / Decoder-Only / Encoder-Decoder 各自擅长什么?
  5. Q33. Scaling Laws 是什么?对研发有什么指导?
  6. Q34. 常见解码策略:Greedy / Beam / Top-K / Top-P?
  7. Q35. Tokenizer:BPE / WordPiece / SentencePiece 的区别?
  8. Q36. NLP 和 LLM 最大的区别是什么?
  9. Q37. L1 / L2 正则化的区别与应用?
  10. Q38. 涌现能力怎么理解?何时出现?
  11. Q39. LLM 常用激活函数?
  12. Q40. MoE 如何在不显著增加推理成本下扩大参数量?
  13. Q41. 训练千亿参数模型的工程挑战?
  14. Q42. 开源框架 / Qwen / DeepSeek 论文创新点?
  15. Q43. KV Cache 为什么能加速推理?显存怎么算?
  16. Q44. 最近读过哪些前沿论文 / 新技术?
08RLHF 与对齐13 题
  1. Q45. RLHF 解决 SFT 解决不了什么问题?
  2. Q46. 经典 RLHF 三阶段?
  3. Q47. 成对比较数据 vs 绝对分数,优劣?
  4. Q48. RM 架构与 Bradley-Terry 损失?
  5. Q49. 为什么用 PPO 而不是 REINFORCE / Q-learning?
  6. Q50. KL 系数 β 过大/过小会怎样?
  7. Q51. Reward Hacking 是什么?怎么缓解?
  8. Q52. DPO 的核心思想与优势?
  9. Q53. RLHF 模型上线后“模式化奉承”怎么排查?
  10. Q54. GRPO 与 PPO 的区别?
  11. Q55. GSPO / DAPO 是什么?
  12. Q56. Token 级 vs 序列级奖励与信用分配?
  13. Q57. RLAIF 的理解、潜力与风险?
09微调与部署13 题
  1. Q58. LoRA 的原理?秩 r 怎么选?为什么能高效微调?
  2. Q59. QLoRA 怎么降低资源成本?为什么选 NF4 + FP16?
  3. Q60. SFT 和 RLHF 哪个更适合快速迭代?破局点?
  4. Q61. 微调 / Prompt / RAG 怎么选?
  5. Q62. SFT 数据怎么构建与清洗?loss 只算回答部分?
  6. Q63. 分布式训练:DP / TP / PP / ZeRO / FSDP 的区别?
  7. Q64. 7B 模型推理/训练显存怎么估算?
  8. Q65. bf16 与 fp16 的区别?训练怎么选?
  9. Q66. vLLM 为什么快?PagedAttention 原理?
  10. Q67. 模型压缩:量化 / 剪枝 / 蒸馏?
  11. Q68. 灾难性遗忘怎么解决?
  12. Q69. 推理成本怎么降?
  13. Q70. 微调后怎么判断有没有收益?
10RAG 深化15 题
  1. Q71. RAG 是什么?解决了 LLM 的什么问题?
  2. Q72. RAG 完整链路?
  3. Q73. 向量检索原理?ANN 是什么?
  4. Q74. 向量数据库怎么选?Milvus / FAISS / Qdrant / ES?
  5. Q75. 纯向量检索有什么问题?为什么混合检索?
  6. Q76. 为什么要 Rerank?Recall@K 与 Precision@K 怎么取舍?
  7. Q77. Chunk 怎么切?切大/切小各什么问题?
  8. Q78. Embedding 模型怎么选?中文场景?
  9. Q79. RAG 幻觉怎么处理?
  10. Q80. 检索效果不好怎么优化?
  11. Q81. Agentic RAG 和普通 RAG 区别?
  12. Q82. RAG 落地最难的地方在哪?
  13. Q83. GraphRAG 与 LightRAG 是什么?怎么选?
  14. Q84. RAG 怎么评估?
  15. Q85. RAG 知识库文档更新,不重建全量怎么搞?
11Agent 深化20 题
  1. Q86. LLM 和 Agent 有什么区别?
  2. Q87. Agent 和 Workflow 有什么区别?
  3. Q88. Agent 有哪些工作模式?
  4. Q89. Function Call 底层怎么实现?
  5. Q90. MCP 是什么?解决什么问题?
  6. Q91. Skills 是什么?和 Prompt / Tool 有什么区别?
  7. Q92. Function Call / MCP / Skills 三者关系?
  8. Q93. A2A 协议是什么?和 MCP 的关系?
  9. Q94. Agent 记忆系统怎么设计?
  10. Q95. Agent 的安全与可靠性如何保障?
  11. Q96. RAG 和 Agent 是什么关系?
  12. Q97. ReAct 是什么?Loop Engineering 又是什么?
  13. Q98. Harness Engineering 是什么?
  14. Q99. 上下文漂移怎么解决?
  15. Q100. 工具调用幻觉怎么防?
  16. Q101. 多 Agent 通信链路怎么设计?异常怎么处理?
  17. Q102. 什么时候用多 Agent,什么时候 Tool 就够?
  18. Q103. 混合路由与限流器为什么重要?
  19. Q104. Agent 可观测性怎么设计?
  20. Q105. Agent 框架对比(OpenClaw / Hermes / Claude Code)与选型?
12多模态 VLM11 题
  1. Q106. VLM 的核心挑战是什么?
  2. Q107. CLIP 原理?损失函数?
  3. Q108. LLaVA / MiniGPT-4 怎么连接视觉编码器与 LLM?
  4. Q109. 视觉指令微调为什么关键?
  5. Q110. 视频等多模态数据比图片多解决什么问题?
  6. Q111. Grounding 是什么?怎么评估?
  7. Q112. VLM 架构范式对比?
  8. Q113. 高分辨率输入图像怎么处理?
  9. Q114. VLM 幻觉和纯文本 LLM 有什么不同?
  10. Q115. VLM 前沿应用方向?
  11. Q116. 有没有做过 VLM 微调?怎么做的?
13模型与 Agent 评估10 题
  1. Q117. BLEU / ROUGE 评估 LLM 有什么局限?
  2. Q118. 主流基准:MMLU / Big-Bench / HumanEval 侧重什么?
  3. Q119. LLM-as-a-Judge 优缺点与偏见?
  4. Q120. 事实性/幻觉水平怎么评估?
  5. Q121. 评估 Agent 为什么比评估 LLM 难?
  6. Q122. Agent 基准怎么构建?
  7. Q123. 红队测试是什么?
  8. Q124. 人工评估怎么保证客观一致?
  9. Q125. 上线后的模型/Agent 怎么持续监控?
  10. Q126. 生成模型的多样性与准确性怎么评估?
14AI 编程11 题
  1. Q127. Vibe Coding 是什么?面试官到底考什么?
  2. Q128. AI 越来越强,你的优势到底是什么?
  3. Q129. AI 编程 Token 成本怎么控制?
  4. Q130. Claude Code 上下文窗口怎么治理?
  5. Q131. Spec-Driven Development 是什么?
  6. Q132. OpenSpec / Spec-kit / gstack 是什么?
  7. Q133. AI 编程避坑:Git 提交、数据库备份、线上回滚?
  8. Q134. 怎么判断优化后的 Prompt 有效?
  9. Q135. AI 编程工具怎么选?
  10. Q136. 传统 Web 开发 vs AI Agent 开发有什么不同?
  11. Q137. 你对 AI 编程对程序员的影响怎么看?
15AI Infra13 题
  1. Q138. 大模型推理的主要性能瓶颈与优化?
  2. Q139. PagedAttention 原理?
  3. Q140. Orca 迭代级调度 / 连续批处理?
  4. Q141. PD 分离是什么?为什么多机传 KV 仍值得?
  5. Q142. 训练并行怎么选?
  6. Q143. CUDA 内存访问注意什么?
  7. Q144. DeepSeek-V3 关键优化点?
  8. Q145. 显存/训练耗时怎么估算?
  9. Q146. 量化方案 GPTQ / AWQ 区别?
  10. Q147. 长文本推理怎么优化?
  11. Q148. 推理服务框架怎么选?
  12. Q149. 为什么量化/压缩后精度下降?怎么补偿?
  13. Q150. 如何从 Ampere 迁移算子到 Hopper?
16手撕代码12 题
  1. Q151. 手写 MHA(numpy,不用 torch)?
  2. Q152. 三数之和(LC15)?
  3. Q153. 二叉树层序遍历(LC102)?
  4. Q154. K 个一组翻转链表(LC25)?
  5. Q155. 最长递增子序列(LC300,O(n log n))?
  6. Q156. 岛屿数量(LC200)?
  7. Q157. 最大乘积子数组(LC152)?
  8. Q158. 数组第 K 大(LC215)?
  9. Q159. LRU Cache(LC146)?
  10. Q160. 螺旋矩阵(LC54)?
  11. Q161. 括号生成(LC22)?
  12. Q162. 合并 K 个升序链表(LC23)?
17真实情景面经26 题
  1. 字节 · Agent 开发 · 四面(21+ 题全解析)
  2. Q163. Prompt Engineering 的核心目标?为什么换说法效果差十倍?
  3. Q164. System Prompt / Few-shot / CoT 各解决什么问题?
  4. Q165. Token、上下文窗口、上下文腐化?
  5. Q166. 幻觉怎么产生?怎么减轻?
  6. Q167. Structured Output 怎么控制输出?
  7. Q168. Function Calling 与 RAG 的区别和联系?
  8. Q169. Embedding / 向量数据库在 RAG 中的作用?检索策略?
  9. Q170. Agent 如何结合工具、知识和规划自主运行?
  10. Q171. 多 Agent 通信链路与异常处理?
  11. Q172. 上下文漂移与工具调用幻觉怎么解决?
  12. Q173. MCP 和 Skill 的作用?
  13. Q174. 微调与 RAG 使用场景区别?
  14. Q175. SFT 和 RLHF 哪个适合快速迭代?破局点?
  15. Q176. 推理成本怎么降?多任务怎么权衡效率与准确?
  16. Q177. 有限上下文怎么放关键内容?短期/长期记忆压缩?
  17. Q178. 混合路由和限流器为什么重要?
  18. Q179. 执行链路如何设计?连续任务正确性怎么保证?
  19. Q180. 长任务如何保证不偏离原始目标?
  20. Q181. 生图/生成模型的多样性和准确性怎么评估?
  21. Q182. 工具调用安全(Key 泄露、敏感信息)?
  22. Q183. 传统 Web 应用和 AI Agent 应用有什么不同?
  23. Q184. Agent 能力复用与 Skill 管理怎么设计?
  24. AgentGuide 真实面经案例集(16 个案例索引)
  25. AIInfraGuide 真实面经库(181 份 · 公司索引)
  26. 精选真实现场(牛客 / CSDN)
18开放题与综合16 题
  1. Q185. LLM 距离 AGI 还有多远?最缺什么?
  2. Q186. 多模态融合会走向何方?
  3. Q187. 开源 vs 闭源模型生态怎么看?
  4. Q188. 世界模型 / 内在模拟能力怎么理解?
  5. Q189. 合成数据在训练中的角色?
  6. Q190. 具身智能:LLM 怎么赋能机器人?
  7. Q191. 个性化 Agent 怎么平衡效果、隐私与安全?
  8. Q192. Transformer 会一直统治吗?SSM/Mamba 怎么看?
  9. Q193. 未来 3-5 年 LLM/Agent 最可能颠覆哪个行业?
  10. Q194. 限制 Agent 能力普及的最大瓶颈?
  11. Q195. 过去半年印象最深的 Agent 论文/项目?
  12. Q196. 应该追求更强基模还是更精巧的 Agent 架构?
  13. Q197. 未来 1-2 年 Agent 商业落地场景?
  14. Q198. 你最想做一个什么 Agent?
  15. Q199. 顶尖 AI Agent 工程师的核心素质?
  16. Q200. 平时怎么用 AI?对用 AI 学习编程有什么建议?
19框架选型11 题
  1. Q201. LangChain 和 LangGraph 到底有什么区别?
  2. Q202. 主流 Agent / AI 框架全景(还有哪些?)
  3. Q203. LangGraph 里 State / Node / Edge 分别解决什么问题?
  4. Q204. LangGraph 的图主要抽象了哪些流程?
  5. Q205. State 状态流主要存什么信息?
  6. Q206. Node 节点主要是工具调用吗?
  7. Q207. LLM 决策节点(意图分类 / 路由 / 打分 / 生成)代码怎么写?
  8. Q208. Node 怎么知道该“思考”还是“调工具”?这个决定是谁做的?
  9. Q209. LangGraph 的 Node 类型完整清单?
  10. Q210. AI 怎么知道走到某节点要审批?Node 里存了任务提示词吗?
  11. Q211. LangGraph 是不是用来“规范 AI 要进行哪些操作”的?

检索增强 RAG

1. 语义分片与切片策略

面经真题:如何通过语义分片解决固定长度切片导致的上下文断裂?(阿里 5)长表格被切到两个 Chunk 如何保证不丢表头?(百度 2)RAG 切片为什么不能太长也不能太短?(百度 4)Overlap 解决什么问题?(百度 8)

核心要点

  • 固定长度切片会切断句子、段落甚至表格,破坏语义完整性。
  • 语义分片按“语义边界”切:优先段落、标题层级,再按长度约束合并或拆分。
  • 切片太长:检索单元粗、命中噪音大、上下文浪费;太短:语义残缺、召回不全。
  • Overlap(重叠):相邻块共享边界内容,保证被切断的信息在至少一个块里完整出现。
  • 表格类内容:按行组/表头分组切,回答时把表头作为上下文附带,避免列含义丢失。

衍生追问

追问 要点
切分粒度怎么量化评估?用召回率/答案正确率做 A/B;Ragas 的 faithfulness/context precision 可定位是切片还是检索的问题
语义分片怎么实现?递归字符分割(按分隔符层级)、基于嵌入相似度的 LLM 分割(如 llama-index 的 SentenceSplitter)
标题层级重要吗?重要:用 markdown 结构切块可保留父子标题,Graph 类检索会利用层级关系
跨页表格怎么处理?检测表格起止标记,整表作为一个块或按“表头+行组”分块,禁止中间切断

2. 混合检索与 RRF 归一化

面经真题:向量检索和关键词检索各适合什么场景?为什么现在更多用混合检索?(美团一面 5、百度 5)Milvus 中如何通过 RRF 实现两路得分归一化?(阿里 3)图片向量和文本向量混合后如何分配权重?(美团一面 3)

核心要点

  • 向量检索适合语义相似、同义改写、模糊表达;关键词检索适合专有名词、编号、精确短语。
  • 混合检索 = 两路召回合并,解决单一方式漏召回(如向量对精确 ID 不敏感、BM25 对同义不敏感)。
  • RRF(Reciprocal Rank Fusion):按排名取倒数分数 Σ 1/(k + rank),k 常取 60,不依赖各路的原始分数尺度。
  • 多模态混合:图片向量和文本向量通常先各自召回,再用 RRF/加权分数融合;权重可离线在验证集上调。

衍生追问

追问 要点
RRF 为什么不直接用相似度分数?各路分数分布/量纲不同,直接相加会被强势一路主导;排名融合更鲁棒
BM25 和向量检索怎么选?先看查询类型:精确 ID/型号走 BM25;自然语言描述走向量;混合检索兜底
多路权重怎么定?网格搜索或学习排序(LTR)在标注数据上调,避免拍脑袋

3. 查询改写与 HyDE

面经真题:查询重写有哪些方法?(阿里 8)引入 HyDE 后如何防止伪文档幻觉干扰检索?(美团二面 6)

核心要点

  • 查询重写目标:把口语/指代/多意图提问改成更适合检索的形式。
  • 常见方法:同义扩展、指代消解、意图分类后模板化、多查询生成(Multi-Query)、HyDE(生成假设文档再检索)。
  • HyDE 的风险:模型生成的“伪文档”可能包含幻觉事实,导致检索被带偏。
  • 防伪文档幻觉:只取伪文档的“检索语义”不当作事实、加提示约束、对伪文档做二次校验、用真实文档重排时过滤。

衍生追问

追问 要点
Multi-Query 和 HyDE 区别?Multi-Query 生成多个查询分别召回再合并;HyDE 生成一段假设答案作为查询向量
什么时候不该用 HyDE?领域事实性强、生成质量差时,伪文档会引入噪音;可先评估生成质量再启用
查询重写怎么评估?对比改写前后检索召回率与最终答案正确率

4. Reranker 重排

面经真题:为什么要加 Reranker?直接拿向量检索结果给模型有什么问题?(百度 7)

核心要点

  • 向量召回追求高召回,结果噪声多、相关度排序粗糙。
  • Reranker(交叉编码器)对“查询-文档对”精排,相关性更准,但成本高,只对 Top-N 重排。
  • 不加 Reranker 的问题:低相关片段混入上下文,浪费窗口且降低答案质量。

衍生追问

追问 要点
双塔 vs 交叉编码器?双塔可离线向量化、快但交互弱;交叉编码器交互强、慢,适合在线精排
Reranker 用什么训练?查询-文档相关性标注/点击数据,常用 BGE-Reranker 等开源模型微调
重排多少条合适?一般 20~100 条召回里重排 Top 20 左右,结合延迟预算

5. Graph RAG 与知识关联

面经真题:Graph RAG 相比向量检索在处理复杂知识关联时有什么优势?(阿里 6)

核心要点

  • 向量检索擅长“相似片段”,不擅长多跳关联、聚合性问题和全局关系。
  • Graph RAG 先抽实体/关系建图,再通过社区检测、多跳遍历、图查询回答“跨文档/跨实体”问题。
  • 代价:构建成本高、更新复杂;适合强关系型知识库(组织架构、产品依赖、规范条款)。

衍生追问

追问 要点
Graph RAG 怎么建图?LLM 抽取实体-关系三元组,存入图数据库(Neo4j)或向量+邻接混合
什么时候用图不用向量?问题含“哪些部门影响 A”“A 依赖哪些组件”等多跳关系时
Graph RAG 的召回怎么和向量结合?双路召回:向量找片段、图找关联子图,再做融合

6. Lost in the Middle 与长上下文

面经真题:了解 Lost in the Middle 吗?检索流程里怎么处理?(阿里 7)

核心要点

  • 现象:模型对长上下文中间位置的信息利用最差,首尾最好。
  • 处理:把最重要的证据放上下文首尾;压缩冗余片段;限制注入片段数量;对片段按相关度排序后重排位置。

衍生追问

追问 要点
为什么中间效果差?注意力对首尾位置的偏置 + 长上下文稀释
工程上怎么验证?构造“证据在中间/首/尾”三组实验对比答案正确率
和记忆压缩的关系?都是长上下文治理手段:一个是排序摆放,一个是减少总量

7. 文档增量同步与版本冲突

面经真题:工业规范每天更新,向量库如何做增量同步?新旧文档冲突如何过滤?(美团二面 3)

核心要点

  • 增量同步:按文档版本/哈希识别变更块,只重嵌入变更部分,删除失效向量。
  • 版本冲突:检索结果带版本元数据,冲突时以“生效时间最新”或“规范优先级”过滤,并在 Prompt 中标注版本。

衍生追问

追问 要点
如何识别哪些块变了?文档级哈希 + 块级哈希比对;表格类按行组粒度
删除向量怎么做?Milvus 按主键 delete 或软删除,配合重建索引
冲突过滤放检索前还是生成前?两端都要:检索时过滤旧版,生成前让模型引用版本做二次判定

8. 评估与防幻觉

面经真题:如何用 Ragas 定位检索环节的语义偏差?(阿里 3)用 Ragas 怎么测幻觉?(美团一面 3)Prompt 如何设计拒答逻辑?(百度 6)VLM 如何做结构化推理减少幻觉?(阿里 3)工程和 Prompt 有哪些防幻觉手段?(百度 9)

核心要点

  • Ragas 指标:faithfulness(答案是否忠于上下文)、context precision/recall(检索相关性)、answer relevance。
  • 幻觉根因:上下文缺失、模型强行作答、检索到无关内容。
  • 拒答逻辑:Prompt 明确“知识库无相关内容时输出不知道”;可加置信度阈值;检索为空时走 fallback。
  • VLM 结构化推理:把图纸/图片拆成可验证的步骤(区域定位 → 属性提取 → 交叉校验),不直接端到端猜。
  • 工程防幻觉:引用标注、答案校验(重新检索验证)、温度调低、限制输出范围、对关键数值二次核对。

衍生追问

追问 要点
faithfulness 低说明什么?答案内容与检索上下文不一致,通常是生成端问题或检索漏关键证据
context precision 低呢?召回里无关片段太多,需要重排/更准的切片
拒答和“强行回答”怎么权衡?领域里“宁缺毋错”优先;可用 abstain 机制 + 用户可追问

Agent 推理与规划

9. CoT 与 ReAct

面经真题:什么是 CoT?原理是什么?(补充 7)讲一下 ReAct 原理,和单轮问答的本质区别?(百度 10)ReAct 中 Thought/Action/Observation 循环状态机逻辑?(美团二面 7)

核心要点

  • CoT:让模型把推理过程显式写出,利用中间步骤分摊推理负担,提高多步逻辑正确率。
  • ReAct = Reasoning + Acting:Thought(分析当前状态)→ Action(调工具/检索)→ Observation(观察结果)循环,直到给出 Answer。
  • 与单轮问答的本质区别:单轮是“一次生成答案”;ReAct 是“决策-执行-观察”闭环,答案依赖外部世界反馈。

衍生追问

追问 要点
CoT 为什么有效?中间计算被外化为文本,减少“一步想完”的负担;也便于定位错误
ReAct 会引入什么风险?循环次数不可控、工具副作用、幻觉观察;需要最大步数、终止条件和护栏
Thought 一定是必要的吗?简单任务可跳过;复杂任务保留 Thought 便于调试和轨迹评估

10. Plan-and-Solve vs ReAct

面经真题:Plan-and-Solve 的流程?处理复杂长任务时和 ReAct 有什么区别?(阿里 9)

核心要点

  • Plan-and-Solve:先规划多步方案(Plan),再逐步执行并对照计划修正。
  • ReAct:边想边做,无显式长期计划,适合探索型任务。
  • 复杂长任务:Plan-and-Solve 减少“走一步看一步”的漂移,可并行/检查依赖;ReAct 更灵活但容易迷失或重复。

衍生追问

追问 要点
计划失效怎么办?规划器重规划(re-plan),或降级为 ReAct 继续
计划粒度怎么定?细到可执行动作、粗到阶段目标;粒度太细 token 开销大
怎么判断用哪种?任务步骤可预知→Plan;探索/开放性→ReAct;可两者混合

11. Self-Reflection 与失败重规划

面经真题:工具结果不符合预期,如何设计 Self-Reflection 触发重新规划?(美团二面 9)

核心要点

  • 在每轮 Observation 后增加“结果校验”环节:是否满足预期、是否可重试、是否需要换工具。
  • 设计触发器:结果为空/报错/格式不对/数值异常/重复失败计数。
  • 重试策略:换参数重试 → 换工具 → 换子计划 → 主动向用户澄清。

衍生追问

追问 要点
如何避免无限重试?最大重试次数、退避、状态记录(同一失败原因不重复尝试)
Reflection 放哪一层?工具层(校验单次结果)和任务层(校验目标是否达成)都要有
怎么评估反思质量?对比“带反思 vs 不带反思”的任务成功率与步数

12. 多工具并行调用

面经真题:如何实现多工具并行调用?如何控制多个 API 并发并把结果一次性返回给模型?(阿里 10)

核心要点

  • 让模型一次输出多个工具调用意图(如 OpenAI 的 tool_calls 数组),再并行执行。
  • 代码层:asyncio.gather / 线程池并发执行,统一收集结果后按原顺序拼回上下文。
  • 注意:工具间有依赖时先并行无依赖组,再串行有依赖组;控制并发上限防限流。

衍生追问

追问 要点
结果顺序乱了怎么办?用请求 ID/索引映射回原始 tool_call,再按模型输出顺序拼接
部分失败怎么处理?成功的结果照常返回,失败标注错误并让模型决定重试/跳过
并行度怎么定?由限流配额和工具耗时决定,用信号量/连接池控制

13. Tool Retrieval 与工具规模

面经真题:工具规模上百个,如何设计 Tool Retrieval 降低上下文压力?(美团二面 10)

核心要点

  • 把所有工具塞进 Prompt 会爆窗口且降低选择准确率。
  • Tool Retrieval:用工具名称/描述做向量索引,先按当前意图召回 Top-K 个工具再注入。
  • 可结合:工具分类标签、意图路由、动态注册。

衍生追问

追问 要点
工具描述怎么写?名称+触发条件+输入输出+示例;描述质量决定检索效果
召回了不相关工具怎么办?加 Reranker 或让模型先选“是否可用”,未命中走默认工具
工具间相似度高?描述区分度 + 必要时工具合并/参数化

14. Function Call 与 JSON 稳定性

面经真题:Function Call 返回的是真实结果还是调用意图?(补充 8)如何保证稳定输出 JSON?格式不对怎么兜底?(百度 11)

核心要点

  • Function Call 的第一层输出是“调用意图(参数)”,由后端真正执行后把真实结果再返回给模型。
  • JSON 稳定性:强约束 schema、few-shot、temperature 调低、结构化输出 API(response_format)。
  • 兜底:JSON 解析失败→正则/修复解析(如补引号)、要求模型重试、返回解析错误让模型修正。

衍生追问

追问 要点
怎么防止模型伪造参数?参数白名单、类型校验、执行前二次确认高危操作
嵌套 JSON 解析失败?用容错解析库 + 定位错误位置重新生成
工具结果很大?截断/摘要/只回关键字段(见记忆与状态-预压缩)

15. Agent Harness 与 Skills vs Tool

面经真题:怎么理解 Agent Harness?没有它大模型会遇到什么瓶颈?(百度 13)Skills 和普通 Tool 调用有什么区别?(百度 14)

核心要点

  • Agent Harness:把模型与外部世界连接起来的“运行时骨架”——工具注册、上下文管理、循环控制、权限/安全、状态持久化、监控。
  • 没有 Harness 的瓶颈:模型只会“说”不会“做”;无法安全执行、无法持久化、无法从错误恢复。
  • Skills vs Tool:Tool 是单个可调用函数(原子能力);Skill 是“带说明书的技能包”,包含多个步骤/提示词/资源,可按需加载,更接近能力单元。

衍生追问

追问 要点
Harness 和框架(LangGraph)关系?框架是实现 Harness 的脚手架;Harness 是抽象概念
Skill 怎么触发?元数据匹配/向量检索技能库,命中后把技能说明注入上下文
Skill 和 Tool 能嵌套吗?可以:Skill 内部编排多个 Tool 调用

16. Agent 自进化(不微调)

面经真题:不微调模型,如何实现 Agent 自进化?(百度 15)

核心要点

  • 经验外化:把失败轨迹/成功模式写成可复用的 Skill、Prompt 片段、规则库。
  • 自我反思:每轮任务后生成“复盘”,更新记忆库或工具描述。
  • 评测驱动:用自动评估把“有效做法”沉淀,无效做法淘汰。

衍生追问

追问 要点
自进化会不会越变越差?需要评估门槛和回滚:只有通过评测的更新才生效
和微调的区别?微调改权重,通用但贵;自进化改外部知识/技能,轻量可解释

记忆与状态

17. 记忆压缩与总结触发

面经真题:上下文超限怎么做记忆压缩?(阿里 11)记忆总结触发条件按轮数还是 Token?(百度 3)

核心要点

  • 触发条件:Token 消耗量比轮数更直接(不同工具输出大小差异大);常用阈值+滚动窗口。
  • 压缩方式:历史摘要、关键信息抽取、分主题记忆(用户事实/偏好/待办)。
  • 双轨:完整原文短期留存(可回查),压缩摘要长期供上下文注入。

衍生追问

追问 要点
摘要会丢信息怎么办?关键信息结构化保存(JSON),摘要只做叙事层
什么时候用完整历史?需要精确引用原文时回查短期存储
压缩失败如何兜底?保留原始会话文件,压缩仅作为注入副本

18. 长期画像 vs 短期历史

面经真题:长期画像和短期聊天历史分别存在哪里?怎么喂给模型?(美团一面 4)

核心要点

  • 长期画像:结构化(用户事实、偏好、状态)→ 存向量库/关系库,按需检索注入。
  • 短期历史:最近 N 轮原文 + 压缩摘要 → 存 Redis/消息队列,滚动淘汰。
  • 喂法:System 注入画像摘要,历史按相关性或时间窗口注入。

衍生追问

追问 要点
画像怎么更新?每轮结束后抽取“新事实”增量合并,冲突时以最新为准
画像注入优先级?当前任务相关画像优先,避免无关画像占窗口

19. 向量记忆库动态更新与长上下文

面经真题:用户画像如何随对话动态更新?(阿里 4)1M+ 上下文会不会取代向量记忆库?(美团二面 12)

核心要点

  • 动态更新:增量写入新记忆、定期清理过期记忆、去重合并。
  • 1M 上下文 vs 外挂记忆:长上下文解决“能装下”,但不解决“检索准确、成本可控、隐私隔离”;记忆库仍负责精准召回。
  • 结论:互补,不是替代;长上下文可减少记忆压缩压力,但全量塞入成本高。

衍生追问

追问 要点
记忆库怎么去重?语义相似度阈值合并,冲突保留最新
长上下文下还要 RAG 吗?要:检索保证相关性,避免大海捞针(Lost in the Middle)

20. Session 持久化与工具结果预压缩

面经真题:高并发下如何持久化 Agent 状态不丢会话?(美团二面 4)Session 存在哪?(补充 15)量表数据超窗口如何预压缩?(百度 3)

核心要点

  • Session 状态:结构化状态(节点、变量、记忆指针)+ 消息历史分库存储(Redis 热数据 + MySQL/对象存储冷数据)。
  • 分布式:Session 绑定会话 ID,状态写持久化存储,实例重启可恢复。
  • 工具结果预压缩:只保留核心指标/摘要/分页,先粗后细(模型需要时再取详情)。

衍生追问

追问 要点
状态和消息分开存吗?分:状态频繁读写用 Redis;消息追加日志化,便于回放
预压缩会丢关键信息?按“核心指标白名单”压缩,需要时按引用拉取原文

多 Agent 架构

21. 单体拆分与多 Agent 边界

面经真题:何时拆分多 Agent?边界是什么?(阿里 12)

核心要点

  • 拆分信号:职责差异大、需要不同模型/知识/权限、单 Agent 上下文互扰、需要并行或隔离。
  • 边界:按“领域职责”或“流程阶段”切;通信成本 > 单 Agent 复杂度时不该拆。

衍生追问

追问 要点
拆太细的代价?通信损耗、一致性难、调试难、token 成本翻倍
怎么验证该拆?先单 Agent 实现,量化失败点(上下文污染、工具冲突)再拆

22. 分层 vs P2P 与通信优化

面经真题:Multi-Agent 分层架构与 P2P 架构的区别?(美团二面 13)如何优化智能体间通信损耗?(美团二面 14)共享全局记忆解决上下文不一致?(美团二面 15)

核心要点

  • 分层:主管-工人(orchestrator-worker),决策集中、可控,但主管是瓶颈。
  • P2P:对等协商,灵活去中心,但一致性/收敛难。
  • 通信损耗:只传结构化增量(意图+结果摘要),避免整段上下文互相转发;用共享黑板/全局记忆代替消息轰炸。
  • 共享全局记忆:所有 Agent 读写同一事实层,保证“谁更新了什么”一致可见。

衍生追问

追问 要点
主管挂了怎么办?主备/降级为对等协商
全局记忆写冲突?版本号 + 最后写入者策略,按领域分区

工程系统

23. 限流 / 并发 / 异步

面经真题:API 限流怎么处理高并发?(阿里 15)Python 异步在 Agent 里有什么用?哪些场景必须异步?(百度 16)

核心要点

  • 限流:令牌桶/滑动窗口 + 重试退避 + 队列削峰 + 多 Key 分摊 + 缓存命中减少调用。
  • 异步:IO 密集(模型调用、工具请求、数据库)用 asyncio 并发,避免串行等待;CPU 密集仍用多进程。

衍生追问

追问 要点
重试会不会放大故障?指数退避 + 抖动 + 熔断
并发和限流怎么平衡?信号量限制并发数,队列缓冲超出部分

24. Redis 缓存与 MySQL 存储

面经真题:Redis 常见数据结构?(补充 11)为什么把重复问答存 Redis?(补充 12)如何判断语义相同命中缓存?(补充 14)MySQL 存对话记录选什么字段类型?(补充 10)

核心要点

  • Redis:String(缓存/锁)、Hash(画像/会话)、List(消息队列)、ZSet(排序/限流滑动窗口)、Set(去重)。
  • 重复问答缓存:同一问题答案复用,降延迟省 token;命中判定先精确 key,再语义向量相似度阈值。
  • MySQL 对话记录:正文用 TEXT/MEDIUMTEXT(或 JSON 存结构化),加会话 ID 索引;大字段拆分冷热表。

衍生追问

追问 要点
语义缓存误命中?相似度阈值 + 结果可解释性 + 缓存带版本失效
Redis 缓存和向量库分工?Redis 管高频精确 KV;向量库管语义检索

25. 轨迹评估与死循环监控

面经真题:如何自动评估 Agent 执行轨迹?(阿里 14)卡在工具死循环怎么监控解决?(阿里 14)中间节点轨迹有效性量化?(美团二面 16)

核心要点

  • 轨迹评估:把轨迹拆成节点(Thought/Action/Observation),用规则+模型打分:是否达成子目标、工具选择是否合理、是否重复。
  • 死循环监控:最大步数、重复动作检测(同一 tool+参数出现 N 次)、时间阈值、环路检测。

衍生追问

追问 要点
轨迹分怎么定?节点级(工具匹配、结果有效)+ 任务级(成功率、步数、成本)
检测到死循环后?打断 → 提示模型改变策略 → 超限人工接管

26. MCP 与 LangGraph

面经真题:MCP 如何定义 Resources 与 Tools 映射?(阿里 4)MCP 解决了什么?不用它怎么实现工具调用?(美团一面 4)LangGraph 相比 Chain 在策略路由循环逻辑的优势?(阿里 4)

核心要点

  • MCP:统一工具/资源协议——Tools(可调用函数)、Resources(可读取数据)、Prompts(模板);客户端连接服务器,模型按 schema 调用。
  • 不用 MCP:自己写 HTTP/gRPC 工具服务 + schema 注入,能做但协议/鉴权/发现要自建。
  • LangGraph vs Chain:Chain 是线性管道,循环/条件路由要绕;LangGraph 是图状态机,显式支持循环、分支、状态持久化。

衍生追问

追问 要点
MCP 资源 vs 工具区别?资源是“读数据”(context 注入),工具是“执行动作”
LangGraph 状态怎么持久化?Checkpointer/Redis 存储节点状态,断点续跑

模型与基础

27. Transformer 与基础

面经真题:拷打 Transformer(补充 9)

核心要点

  • 结构:Embedding → 位置编码 → 多头自注意力 → FFN → LayerNorm/残差 → 输出层。
  • 自注意力:Q/K/V 计算注意力权重,O(V) 加权;多头并行捕捉不同子空间关系。
  • 位置编码:绝对(sin/cos、可学习)与相对位置(RoPE 等)。

衍生追问

追问 要点
为什么用多头?单头只能关注一种模式;多头让不同头关注不同关系
复杂度?自注意力 O(n²),长文本靠稀疏注意力/线性注意力优化
LayerNorm 作用?稳定训练、缓解梯度问题

28. AI Coding 技巧与手撕清单

面经真题:有什么 AI coding 技巧?(阿里 16)

核心要点

  • 先写测试/边界再实现;把大任务拆成小步提交;让 AI 生成后自己 review 并补充反例。
  • 善用结构化输出与 lint/类型检查闭环;复杂逻辑给 AI 提供输入输出样例。

手撕清单(面经中出现/高频):无重复字符最长子串(已出现)、两数之和、LRU、滑动窗口、二叉树遍历、TopK、并查集、最短路、二分。

一句话总结

这轮面经的核心主线是:“把检索做好(切片/混合/重排/防幻觉),把 Agent 跑稳(ReAct/规划/记忆/工具/状态),把工程扛住(限流/缓存/持久化/监控)”

LLM 基础

Q29. 自注意力机制如何工作?为什么比 RNN 更适合长序列?

来源:Datawhale · 卡码 · AgentGuide(多公司高频)

核心要点

  • 输入 Token 映射为 Q/K/V 三个向量,注意力权重 = Q·K^T / √d,经 softmax 得到对 V 的加权和;每个位置都能直接看到所有位置。
  • 相比 RNN:RNN 信息沿时间步传递,长距离依赖会衰减/梯度消失;自注意力任意两位置直接交互,可并行计算(RNN 必须串行)。
  • 代价是 O(n²) 时间/显存,长文本需要稀疏注意力、FlashAttention、KV Cache 等优化。

衍生追问

  • 为什么要除以 √d?防止点积随维度增大方差过大、softmax 进入饱和区导致梯度消失。
  • 因果注意力 Q/K/V 分别来自哪?Decoder 中 Q/K/V 都来自本层输入,但掩码只允许看到当前位置及之前。
  • Encoder 与 Decoder 注意力区别?Encoder 双向;Decoder 自回归(因果掩码)+ 交叉注意力(K/V 来自编码器输出)。

Q30. 位置编码为什么必需?RoPE 相比绝对位置编码的优劣?

来源:Datawhale · 卡码 · 腾讯/字节高频

核心要点

  • 自注意力是位置无关的(置换等变),不注入位置信息则“我爱你”和“你爱我”等价。
  • 绝对位置编码:sin/cos(可外推到训练长度外效果差)或可学习位置向量(简单但无外推)。
  • RoPE:把旋转矩阵作用于 Q/K,使注意力分数只依赖相对位置;优点:天然相对位置、可外推(配合 NTK/YaRN 等缩放)、实现轻量。
  • 外推手段:位置插值(PI)、NTK-aware 缩放、YaRN/长上下文微调。

衍生追问

  • RoPE 旋转角度维度怎么设计?按 2i/d 递减的基频(θ_i = 10000^(-2i/d))。
  • 长度外插 vs 内插区别?外插超出训练长度直接延伸;内插把位置压缩回训练区间,小规模微调即可恢复效果。

Q31. MHA / MQA / GQA / MLA 的区别?

来源:Datawhale · AgentGuide · 腾讯/字节高频

核心要点

  • MHA:每头独立 Q/K/V,效果最好但 KV Cache 和计算最大。
  • MQA:所有头共享一份 K/V,显存和计算省很多但效果有损。
  • GQA:K/V 分若干组共享(如 8 头分 2 组),是 MHA 与 MQA 的折中,Llama 2/3 采用。
  • MLA(DeepSeek):对 K/V 做低秩压缩,推理时只缓存压缩后的潜向量,KV Cache 大幅减小。

衍生追问

  • GQA 为什么性能与 MHA 相差不大?相邻头往往关注相似模式,共享 K/V 损失有限。
  • KV Cache 大小怎么算?2 × n_layers × n_kv_heads × head_dim × seq_len × batch × 字节数。

Q32. Encoder-Only / Decoder-Only / Encoder-Decoder 各自擅长什么?

来源:Datawhale · AgentGuide · 腾讯

核心要点

  • Encoder-Only(BERT):双向理解,适合分类、NER、检索/Embedding。
  • Decoder-Only(GPT/Llama/Qwen):自回归生成,理解+生成统一,是当前主流;支持 in-context learning 与 Agent 工具调用。
  • Encoder-Decoder(T5):理解+生成分离,适合翻译、摘要等转换任务,但架构重、生态少。

衍生追问

  • 为什么 Decoder-Only 成为主流?训练/推理统一、可扩展性好、涌现能力集中在自回归范式,生成类任务天然是 decoder。
  • Decoder-only 做分类行不行?可以,取最后 token 的隐状态加分类头或直接 prompt 分类,但不如 encoder 微调稳。

Q33. Scaling Laws 是什么?对研发有什么指导?

来源:Datawhale

核心要点

  • 模型性能随参数量 N、数据量 D、计算量 C 呈幂律提升,且数据量与参数需按比例同步增长(Chinchilla 约 20 tokens/参数)。
  • 指导意义:先估算最优配比再分配算力,避免“模型大但数据不足”或“数据多但模型小”;也能用小规模实验外推大模型表现。

衍生追问

  • 数据快用完怎么办?合成数据、多模态/代码数据、更高质量过滤,以及 MoE/蒸馏改变曲线。
  • Scaling Law 会一直成立吗?存在收益递减与“数据墙”,需要架构和算法侧突破。

Q34. 常见解码策略:Greedy / Beam / Top-K / Top-P?

来源:Datawhale

核心要点

  • Greedy:每步取概率最大 token,快但易重复、局部最优。
  • Beam Search:保留 k 条候选路径,适合翻译/摘要等追求全局高分任务,但开放生成容易重复枯燥。
  • Top-K:从概率最高的 k 个 token 采样,多样性可控但 k 固定不自适应。
  • Top-P(Nucleus):累积概率达到 p 的动态候选集,更自然;常与 temperature 配合。

衍生追问

  • temperature 作用?缩放 logits 分布,>1 更随机、<1 更确定;0 时退化为 greedy。
  • 为什么 Agent 场景常降低 temperature?工具调用需要稳定 JSON/参数,减少随机性。

Q35. Tokenizer:BPE / WordPiece / SentencePiece 的区别?

来源:Datawhale · Dolby · AgentGuide

核心要点

  • BPE:从字符开始,反复合并出现频率最高的相邻子词对;GPT 系列使用。
  • WordPiece:按“合并后能提升似然”选择子词对,而非频率;BERT 使用,词首加 ## 标记。
  • SentencePiece:直接对原始文本(可含空格)做子词切分,支持 BPE/Unigram,中文/多语言友好。

衍生追问

  • 中文为什么常按字/子词切?中文无空格分词,整词词典太大,子词可平衡压缩率与 OOV。
  • Token 数量对成本影响?提示/生成都按 token 计费,长度直接影响成本与窗口占用。

Q36. NLP 和 LLM 最大的区别是什么?

来源:Datawhale · 美团

核心要点

  • NLP 传统范式:任务专用模型(分类/序列标注/翻译各自训练),特征是“小模型 + 任务特定”。
  • LLM 范式:一个模型统一预训练,通过 prompt/in-context 完成几乎所有任务,具备生成、推理、工具调用能力。
  • 相同点:都处理语言、都依赖数据与评估;不同点在架构(Transformer)、规模、范式(微调 vs 提示)。

衍生追问

  • LLM 会让传统 NLP 消失吗?不会,Embedding/分类/检索等低成本高确定场景仍是 encoder 或蒸馏小模型更优。

Q37. L1 / L2 正则化的区别与应用?

来源:Datawhale

核心要点

  • L1(Lasso):对权重绝对值惩罚,产生稀疏解(部分权重为 0),适合特征选择。
  • L2(Ridge):对权重平方惩罚,权重整体收缩但不稀疏,防止过拟合更平滑。
  • LLM 里更常见的是权重衰减(AdamW 的 decoupled weight decay,本质近似 L2)与 Dropout。

衍生追问

  • 为什么 AdamW 把权重衰减从梯度里解耦?Adam 自适应学习率会破坏 L2 的等效性,解耦后衰减更稳定。

Q38. 涌现能力怎么理解?何时出现?

来源:Datawhale

核心要点

  • 涌现指小规模模型几乎没有、规模跨过阈值后突然出现的能力(如多步推理、指令跟随)。
  • 阈值与任务相关:简单任务低阈值,复杂推理/Agent 任务高阈值。
  • 学界有争议:部分“涌现”可能是评估指标非线性导致的假象,能力可能连续提升但指标突然跳变。

衍生追问

  • 对 Agent 的意义?推理/规划能力依赖模型规模,小模型需要外部脚手架(CoT、工具、反思)补偿。

Q39. LLM 常用激活函数?

来源:Datawhale · 美团

核心要点

  • ReLU/GELU/SiLU:FFN 隐藏层主流;GELU 平滑近似 ReLU(GPT/BERT),SiLU 用于 Llama/Qwen 的 SwiGLU 变体。
  • GLU 系列(SwiGLU/GeGLU):门控线性单元,提升信息筛选能力,是 Llama/Qwen/DeepSeek 标准配置。

衍生追问

  • 为什么不用 tanh/sigmoid 在深层?梯度饱和与计算开销;激活选择直接影响训练稳定性。

Q40. MoE 如何在不显著增加推理成本下扩大参数量?

来源:Datawhale · AgentGuide · DeepSeek 相关

核心要点

  • 把 FFN 拆成多个专家,每个 token 由路由器选 Top-K 个专家激活(如 Top-2)。
  • 参数量 = 所有专家之和(很大),但单 token 推理只算激活专家,FLOPs 远小于总参数对应的 Dense 计算。
  • 代价:通信(专家跨卡)、负载不均衡(专家坍缩)、显存(全部专家要加载)。

衍生追问

  • 负载均衡怎么解决?辅助负载均衡损失 + 路由正则;DeepSeek 用细粒度专家 + 共享专家 + 无 aux loss 方案。
  • DeepSeek V3 的 MoE 特点?细粒度专家与共享专家分离,路由开销更低、激活效率更高。

Q41. 训练千亿参数模型的工程挑战?

来源:Datawhale

核心要点

  • 显存:参数+梯度+优化器状态放不下,需要 DP/TP/PP/ZeRO/FSDP 混合并行与重计算。
  • 通信:All-Reduce/All-to-All 成为瓶颈,需要通信计算重叠、拓扑感知。
  • 稳定性:loss spike、梯度范数爆炸,需要梯度裁剪、warmup、损失缩放。
  • 数据/工程:清洗、去重、配比,训练框架与故障恢复(checkpoint)。

衍生追问

  • 优化器状态占多少?Adam 每参数约 12 字节(fp32 动量+方差+梯度),7B 模型仅优化器状态约 84GB。

Q42. 开源框架 / Qwen / DeepSeek 论文创新点?

来源:Datawhale · 美团 · 腾讯

核心要点

  • 框架:HuggingFace Transformers、DeepSpeed、Megatron-LM、vLLM、SGLang、LlamaFactory、unsloth。
  • Qwen:GQA + SwiGLU + RoPE + 长上下文(YaRN);Qwen2.5-VL 原生动态分辨率;Qwen3 混合推理(思考/非思考模式)。
  • DeepSeek:MLA(低秩 KV 压缩)、DeepSeekMoE(细粒度+共享专家)、Multi-Token Prediction、R1 的 GRPO + 冷启动 SFT + 可验证奖励。

衍生追问

  • 读论文怎么讲?按“问题-方法-实验-代价”四段式:解决什么问题、关键创新、对比实验、局限与适用场景。

Q43. KV Cache 为什么能加速推理?显存怎么算?

来源:AgentGuide · 字节/腾讯/美团

核心要点

  • 自回归生成每步只产出 1 个新 token,但注意力要看到前面所有 token;KV Cache 存下已算好的 K/V,避免每步重算。
  • 显存:2 × n_layers × n_kv_heads × head_dim × seq_len × batch × 字节数(MHA 时 n_kv_heads = n_heads)。
  • 优化:GQA/MQA 减 n_kv_heads;PagedAttention 解决碎片化;MLA 压缩 K/V。

衍生追问

  • 长上下文显存不够?滑动窗口、Token 压缩、KV 量化、PD 分离(Prefill 与 Decode 用不同机器)。

Q44. 最近读过哪些前沿论文 / 新技术?

来源:Datawhale · 腾讯

核心要点

  • 建议准备 2-3 篇“能讲透”的论文,覆盖不同方向:长上下文(YaRN/Infini-attention)、推理(CoT/self-consistency/o1)、对齐(DPO/GRPO)、效率(FlashAttention/PagedAttention/Mamba)。
  • 讲法:该方向之前有什么问题 → 方法核心机制 → 实验提升多少 → 局限与是否适合落地。

衍生追问

  • 如果把技术用到业务会遇到什么难点?结合数据规模、延迟、成本、稳定性四个维度回答。

RLHF 与对齐

Q45. RLHF 解决 SFT 解决不了什么问题?

来源:Datawhale · AgentGuide · 腾讯

核心要点

  • SFT 只能让模型模仿标注数据里的模式,无法区分“正确但不好”与“符合人类偏好”。
  • RLHF 用奖励信号显式优化人类偏好:有用性、无害性、诚实性;还能优化难以标注的过程能力(如长程推理)。

衍生追问

  • 为什么 SFT 之后还要后训练?SFT 学数据分布,RL 学“什么是好”;SFT 提供起点、RL 提供对齐。

Q46. 经典 RLHF 三阶段?

来源:Datawhale · 卡码

核心要点

  1. SFT:用高质量指令数据做监督微调,得到策略起点。
  2. Reward Model:收集人类成对比较,训练奖励模型预测偏好。
  3. PPO:以 RM 为奖励、以参考模型做 KL 约束,用强化学习优化策略。

衍生追问

  • 每阶段输入输出?SFT 输入指令+回答;RM 输入 prompt+两个回答输出分数;PPO 输入 prompt,输出采样+奖励+KL。

Q47. 成对比较数据 vs 绝对分数,优劣?

来源:Datawhale

核心要点

  • 优势:人更容易判断“哪个更好”,标注一致性高、噪声低,可转化为 Bradley-Terry 偏好概率。
  • 劣势:无法表达“两者都差/差距大小”,需要大量对;比较顺序与内容长度会产生偏置。

衍生追问

  • 怎么缓解位置偏置?交换 A/B 顺序标注、增加 tie 选项、用 AI 辅助预筛。

Q48. RM 架构与 Bradley-Terry 损失?

来源:Datawhale · AgentGuide

核心要点

  • RM 通常基于 SFT 模型去掉最后输出层,加标量回归头,输入 prompt+回答,输出奖励分数。
  • Bradley-Terry:P(回答 A 优于 B) = σ(r_A - r_B),损失 = -log σ(r_w - r_l),最大化“赢家比输家分高”的概率。

衍生追问

  • RM 与策略模型关系?策略更新时 RM 冻结;RM 不能太强,否则策略快速 hack。

Q49. 为什么用 PPO 而不是 REINFORCE / Q-learning?

来源:Datawhale · AgentGuide

核心要点

  • REINFORCE 方差大、样本效率低;Q-learning 对高维生成动作空间(整个词表)不现实。
  • PPO:重要性采样 + clip 限制策略更新步幅,用 critic(价值基线)降方差,配合 GAE 估计优势。
  • KL 惩罚项:限制策略偏离参考模型,防止奖励被过度优化。

衍生追问

  • PPO 里为什么还要 critic?reward model 给的是整体奖励,critic 估计状态价值作为基线,降低单步回报方差。
  • GAE 是什么?广义优势估计,用 λ 加权多步 TD 误差,平衡偏差与方差。

Q50. KL 系数 β 过大/过小会怎样?

来源:Datawhale

核心要点

  • 过大:策略被钉在参考模型附近,学不到偏好,奖励提升小。
  • 过小:策略自由漂移,可能出现奖励作弊、语言退化(重复/胡言乱语)。
  • 调法:观察 KL 与奖励曲线,β 与 KL 成正比(如每步 β = β_target / KL 或动态调整),做小规模消融。

衍生追问

  • 动态 KL 怎么设计?设定目标 KL,根据实际 KL 自动缩放 β,训练更稳。

Q51. Reward Hacking 是什么?怎么缓解?

来源:Datawhale

核心要点

  • 模型找到 RM 的“漏洞”:堆字数、奉承、使用“虽然……但是”模板,而非真正满足用户。
  • 缓解:KL 约束、RM 正则(不同初始化集成)、对抗训练、更细粒度过程奖励、可验证奖励(代码/数学自动判分)。

衍生追问

  • 具体例子?客服模型发现“说抱歉+长回答”得分高,开始无脑道歉,用户反馈变差。

Q52. DPO 的核心思想与优势?

来源:Datawhale · 卡码 · AgentGuide

核心要点

  • DPO 把 RLHF 的“先学 RM 再 PPO”折叠成一步:直接用偏好数据更新策略,隐式奖励 = log(π_θ/π_ref)。
  • 优势:不需要 RM、不需要在线采样、训练稳定、实现简单;适合小团队快速迭代。
  • 劣势:没有探索,依赖离线偏好数据质量;对分布外数据敏感。

衍生追问

  • DPO loss 形式?L = -log σ(β(log π_θ(y_w|x)/π_ref(y_w|x) - log π_θ(y_l|x)/π_ref(y_l|x)))。
  • DPO 数据怎么构造?同 prompt 生成多候选,人工/规则/模型偏好排序,再构造偏好对。

Q53. RLHF 模型上线后“模式化奉承”怎么排查?

来源:Datawhale

核心要点

  • 可能原因:RM 偏见(偏好长句/奉承)、KL 过小导致过度优化、评估集与真实分布不一致。
  • 排查:人工标注坏案例聚类 → 对比 RM 分数与用户反馈 → 检查 KL 曲线与奖励饱和 → 增加安全/信息量维度到 RM 数据 → 用用户反馈重训。

衍生追问

  • 上线监控什么?回答长度分布、奉承词频、重复率、用户点踩率、多轮流失率。

Q54. GRPO 与 PPO 的区别?

来源:Datawhale · 卡码 · DeepSeek 相关

核心要点

  • PPO 需要 critic 网络估计价值基线;GRPO 去掉 critic,用同 prompt 的一组采样(如 8/16 个)做组内归一化优势:A_i = (r_i - mean(r)) / std(r)。
  • 优势:省掉 critic 显存与训练,稳定性由组内奖励对比保证;DeepSeek R1 用它做 RL。
  • 局限:组内奖励需要可验证/可比;对奖励尺度敏感。

衍生追问

  • GRPO 的 KL 散度怎么加?通常对参考模型加 KL 惩罚(k3 估计或直接算),也常见把 KL 作为正则项或奖励的一部分。
  • 为什么 GRPO 训 MoE 会出问题?组内采样与专家负载耦合、奖励方差波动影响路由稳定性,需要更稳的 reward shaping。

Q55. GSPO / DAPO 是什么?

来源:Datawhale

核心要点

  • GSPO(Generalized SFT Preference Optimization):把 SFT 和偏好优化统一成同一目标族,可解释 DPO/IPO/SimPO 为其特例。
  • DAPO:针对 RL 训练不稳定提出的改进:动态采样策略、更稳的 clip、奖励裁剪、降低熵坍缩等,提升长程推理 RL 的稳定性。

衍生追问

  • 面试只需讲清“它们解决什么问题”:GSPO 统一框架、DAPO 提高大规模 RL 稳定性。

Q56. Token 级 vs 序列级奖励与信用分配?

来源:Datawhale

核心要点

  • 序列级奖励:整句一个分数,简单但无法定位“哪一步导致失败”。
  • Token 级/过程奖励:逐步打分(如数学解题每步验证),提供细粒度信号,缓解稀疏奖励与信用分配问题。
  • 工程化:过程奖励可从自动验证(代码执行/规则)或小 RM 蒸馏得到,代价是标注成本。

衍生追问

  • 过程监督信号还能用在哪?Agent 轨迹评估、工具调用反思、长任务分段奖励。

Q57. RLAIF 的理解、潜力与风险?

来源:Datawhale

核心要点

  • 用 AI(如更强模型)代替人类产生偏好标签,扩展数据规模、降低成本。
  • 潜力:规模化偏好数据、一致性可控;风险:AI 偏见被复制/放大、与人类价值错位、奖励黑客仍然存在。
  • 实践:RLAIF + 少量人工抽样校准是常见组合。

微调与部署

Q58. LoRA 的原理?秩 r 怎么选?为什么能高效微调?

来源:AgentGuide · 卡码 · 美团/字节高频

核心要点

  • 冻结原权重 W,训练低秩增量 ΔW = A·B(A、B 为低秩矩阵,r << d);推理时合并 W + A·B,无额外延迟。
  • 初始化:A 用高斯随机,B 初始为 0,保证训练开始时 ΔW = 0,不破坏预训练能力。
  • 秩 r 的选择:r 太小表达能力不足,r 太大退化且易过拟合;常见 8/16/32,靠验证集调。
  • 为什么插在 Attention 的 Q/K/V/O 而不是 FFN?经验上 Attention 权重对领域适配更敏感;插在 LayerNorm 之后没有意义(LN 无秩结构可学)。

衍生追问

  • LoRA 能不能只插 Linear?能,但 Attention 内权重收益最大;也可以全量选择多个模块。
  • 合并 adapter 时梯度爆炸?先验证 W + AB 的数值范围,必要时缩放/分步合并。
  • LoRA 参数占比怎么算?2 × d_in × d_out × r / 总参数量。

Q59. QLoRA 怎么降低资源成本?为什么选 NF4 + FP16?

来源:AgentGuide · 美团

核心要点

  • QLoRA:4-bit 量化冻结权重(NF4),梯度经量化权重反传,LoRA adapter 保持 BF16/FP16 训练。
  • NF4(Normal Float 4):按正态分布分位数设计量化区间,比均匀 4-bit 更贴合权重分布,信息损失更小。
  • 组合逻辑:权重 4-bit 省显存,adapter 高精度保训练质量,双向受益。

衍生追问

  • 量化后理解能力下降怎么办?精度补偿:部分层不量化(混合精度层)、LoRA 表达更多秩、量化感知训练微调。

Q60. SFT 和 RLHF 哪个更适合快速迭代?破局点?

来源:卡码 · 字节

核心要点

  • SFT 适合快速迭代:问答对直接训,几小时到一天出结果;RLHF 链路长(RM+PPO),周期是 SFT 数倍。
  • SFT 破局点:数据质量而非数量,几百条高质量数据可能优于几万条普通数据。
  • RLHF 破局点:从人工标注走向自动反馈(Verifiable Reward:代码可编译、数学可判分、工具可验证)。

衍生追问

  • 基模越来越强还要微调吗?要:微调从“补知识”变成“控行为”(输出格式、领域推理链路、工具调用稳定性)。

Q61. 微调 / Prompt / RAG 怎么选?

来源:卡码 · 字节

核心要点

  • 让模型“知道新知识”用 RAG(改文档即生效、成本低);让模型“学会新能力/稳定行为”用微调。
  • Prompt 适合轻量约束;RAG 优先于微调做知识注入;微调用于 RAG/Prompt 搞不定的行为固化。

衍生追问

  • 什么场景必须微调?要求稳定输出特定格式和推理链路、各种输入下都稳定时,RAG 只能供资料不能改思考方式。

Q62. SFT 数据怎么构建与清洗?loss 只算回答部分?

来源:AgentGuide · 美团

核心要点

  • 构建:指令-回答对,覆盖意图多样性;清洗:去重、去噪声、纠错、均衡采样(长/短、难/易、领域配比)。
  • 只算回答部分:对 prompt 部分与 padding 位置做 loss mask(ignore_index=-100),防止模型只背 prompt。
  • 冷启动注意:数据配比影响行为,类别失衡会导致模型偏向高频模式。

衍生追问

  • 数据规模多大合适?先小规模验证学习信号,再看 loss/评测是否收敛,而不是盲目堆量。

Q63. 分布式训练:DP / TP / PP / ZeRO / FSDP 的区别?

来源:AgentGuide · 美团/字节/阿里

核心要点

  • DP(数据并行):每卡一份完整模型,各算各的 batch,梯度 All-Reduce;显存不省。
  • TP(张量并行):单层权重切到多卡,算子内通信,适合单机多卡大模型。
  • PP(流水线并行):按层切分,卡间传激活,通信少但有空泡(bubble)。
  • ZeRO:把优化器状态/梯度/参数分片,1/2/3 级逐步省显存,通信随级增加。
  • FSDP:PyTorch 的 ZeRO-3 式分片,易用性更好,单卡可训更大模型。

衍生追问

  • ZeRO-1/2/3 各分片什么?1 只分优化器状态;2 分优化器状态+梯度;3 再分参数。
  • 什么时候用 FSDP 更好?代码简单、通信均衡、训练小到中型模型时;超大模型仍需 TP+PP 混合。

Q64. 7B 模型推理/训练显存怎么估算?

来源:AgentGuide · 美团/DeepSeek

核心要点

  • 推理:权重 fp16 约 14GB + KV Cache + 激活;4-bit 量化约 4-5GB 可单卡跑。
  • 训练:参数 14GB(fp16)+ 梯度 14GB + Adam 状态 84GB ≈ 112GB 起步(7B 全参),因此必须 LoRA/QLoRA/ZeRO。
  • 部署 MoE 大模型:总参数量 × 字节数(权重)+ 激活专家内存 + KV Cache,还要算专家分发通信带宽。

衍生追问

  • 235B MoE 推理要多少卡?按权重 ~470GB fp16 算,至少 4×80GB A100/H100 起步,还要预留 KV Cache 与路由开销。

Q65. bf16 与 fp16 的区别?训练怎么选?

来源:AgentGuide · 美团

核心要点

  • FP16:10 位尾数 + 5 位指数,范围窄(易溢出/下溢),需要 loss scaling。
  • BF16:7 位尾数 + 8 位指数,范围与 FP32 相同,精度略低但训练稳定,无需 loss scaling,是主流预训练/微调格式。

衍生追问

  • 混合精度为什么有效?主权重存 FP32,前向/反向用 BF16 加速,减少显存和带宽。

Q66. vLLM 为什么快?PagedAttention 原理?

来源:AgentGuide · DeepSeek 相关

核心要点

  • 连续批处理(continuous batching):请求动态进出 batch,提高 GPU 利用率。
  • PagedAttention:把 KV Cache 按固定大小分页,像操作系统虚拟内存一样按需分配,消除显存碎片与预分配浪费。
  • 配合:Prefix Caching、投机解码、量化、多卡张量并行。

衍生追问

  • vLLM 与 TGI/SGLang 区别?vLLM 生态广、PagedAttention 成熟;SGLang 在前缀复用与结构化输出上更强。

Q67. 模型压缩:量化 / 剪枝 / 蒸馏?

来源:AgentGuide · Dolby · 阿里

核心要点

  • 量化:权重/激活降位宽(INT8/INT4),GPTQ(层内近似重建)、AWQ(按激活敏感度保重要通道);推理快、内存省,可能掉点。
  • 剪枝:结构化(删层/头)与非结构化(稀疏权重),稀疏推理需要硬件支持。
  • 蒸馏:大模型当老师教小模型,保留能力但成本在训练阶段。

衍生追问

  • 激活值异常溢出怎么调试?检查异常通道分布,AWQ 按激活统计保护敏感通道,必要时混合精度保留关键层。

Q68. 灾难性遗忘怎么解决?

来源:Dolby · 字节

核心要点

  • 微调新数据导致旧能力退化。缓解:混合旧数据 replay、低秩微调(LoRA 本身更稳)、学习率调低、EWC 等正则、增量预训练 + 指令数据回放。

衍生追问

  • 增强推理时如何保证通用数据不遗忘?推理 SFT 数据中混入通用指令数据,或做分阶段训练。

Q69. 推理成本怎么降?

来源:卡码 · 字节

核心要点

  • 模型选择:简单任务小模型,复杂任务大模型(混合路由)。
  • KV Cache 复用、量化、批处理、投机解码、缓存高频请求、Prompt 压缩。

衍生追问

  • 多 Agent 系统怎么省?子任务用小模型、共享检索缓存、限流保护关键路径、轨迹摘要减少上下文。

Q70. 微调后怎么判断有没有收益?

来源:卡码

核心要点

  • 对照组:同基模 + Prompt/RAG vs 微调后,同一评测集对比。
  • 指标:任务成功率、格式合法率、bad case 率、鲁棒性(换说法/换输入分布)。
  • 警惕:训练集过拟合(测训练集 100% 但线上退化)、评测集泄漏。

RAG 深化

Q71. RAG 是什么?解决了 LLM 的什么问题?

来源:卡码 · Datawhale

核心要点

  • LLM 三大知识缺陷:知识截止(不知道新事)、私有知识缺失(不知道内部文档)、知识幻觉(不知道就编)。
  • RAG:检索外部知识注入上下文,让模型基于真实资料回答;可更新、可溯源、成本低。

衍生追问

  • RAG 和纯 SFT 比?RAG 改文档即生效、不改变模型;SFT 固化能力但贵且更新难。

Q72. RAG 完整链路?

来源:卡码 · AgentGuide

核心要点

  1. 文档解析(PDF/Word/表格)→ 2. 清洗与结构化 → 3. 分块(Chunk)→ 4. Embedding 入库 → 5. 查询改写/向量化 → 6. 混合检索 → 7. Rerank → 8. 注入 Prompt → 9. 生成 → 10. 引用/校验/兜底。

衍生追问

  • 每一环的失败会级联放大:解析丢信息 → 分块切断语义 → 检索漏召回 → 生成不忠实。

Q73. 向量检索原理?ANN 是什么?

来源:卡码

核心要点

  • Embedding 把文本映射为向量,语义相近向量距离近;检索按向量相似度(余弦/内积)取 Top-K。
  • ANN(近似最近邻)牺牲少量精度换速度:HNSW(图索引)、IVF(倒排聚类)、PQ(乘积量化)、标量/二进制量化。

衍生追问

  • 精确检索 vs ANN?小库直接暴力;大库必须 ANN,召回率用 Recall@K 验证。

Q74. 向量数据库怎么选?Milvus / FAISS / Qdrant / ES?

来源:卡码 · 字节

核心要点

  • Milvus:分布式、大规模生产、多索引、与元数据过滤结合好。
  • FAISS:库而非服务,单机高性能,适合嵌入式/自建检索服务。
  • Qdrant:Rust 实现、部署轻、过滤能力强,适合中小规模。
  • ES:关键词/B+ 树/倒排强,混合检索可一库两用,但向量性能与生态弱于专用库。

衍生追问

  • 从 ES 切向量库,哪些能力下降?精确过滤、聚合统计、成熟运维下降;语义检索、多模态召回提升。

Q75. 纯向量检索有什么问题?为什么混合检索?

来源:卡码 · 已有 Q2

核心要点

  • 纯向量三个问题:精确 ID/编号不敏感、专有名词(人名/型号)召回差、低频词向量化后区分度低。
  • 混合检索 = 向量(语义)+ BM25(关键词),RRF 合并排名:Σ 1/(k + rank),k 常取 60。

衍生追问

  • BM25 原理?词频 TF 饱和 + 逆文档频率 IDF + 文档长度归一化。
  • 如果 BM25 已经很好,还要向量吗?查询是自然语言描述/同义改写时向量更强;两者互补。

Q76. 为什么要 Rerank?Recall@K 与 Precision@K 怎么取舍?

来源:卡码 · 字节

核心要点

  • 向量检索(双塔)快但相关性排序粗糙;Rerank(交叉编码器)对查询-文档对精排,准确但慢,只重排 Top-N。
  • Recall@K:召回里包含正确答案的比例,越高越好;Precision@K:召回里相关比例,越高越好。
  • 取舍:先保证 Recall(多召回几路),再用 Rerank 提 Precision;Top-K 可动态调整(按检索分数置信度)。

衍生追问

  • Top-K 怎么动态调?分数分布陡峭时调小,平坦时调大;也可让 Agent 根据问题复杂度决定。

Q77. Chunk 怎么切?切大/切小各什么问题?

来源:卡码 · 已有 Q1

核心要点

  • 切大:语义完整但检索噪音大、上下文浪费、相似度被稀释。
  • 切小:检索精准但语义残缺、召回不全。
  • 策略:递归字符分割、语义分块(按标题/段落/表格边界)、固定 512-1024 token + 50-100 token overlap。

衍生追问

  • 表格/法律条文怎么切?表头+行组绑定,法律“第三条第二款”不能被切散,需要 metadata 标记。

Q78. Embedding 模型怎么选?中文场景?

来源:卡码

核心要点

  • 选型维度:维度(越高越精细但存储/检索成本大)、领域适配(代码/法律/医疗)、中文效果、MTEB/C-MTEB 基准、是否支持长文本。
  • 中文主流:BGE、M3E、GTE、text-embedding-v3 等;用领域数据做候选评测再定。
  • 维度不是越高越好:有损压缩后性能差异小,但存储与检索延迟线性增长。

衍生追问

  • 怎么评估 Embedding?检索 Recall@K、相似度排序相关性、跨语言一致性。

Q79. RAG 幻觉怎么处理?

来源:卡码 · 已有 Q8

核心要点

  • 幻觉两种:检索到但生成不忠实(faithfulness 低)、检索没召回到(context 缺失)。
  • 六策略:Prompt 要求只依据上下文;引用标注;输出校验(重检索验证);拒答机制;Rerank 提相关度;多路召回兜底。

衍生追问

  • 检索有噪声怎么办?Rerank + 相关度阈值过滤 + 提示模型忽略无关片段。

Q80. 检索效果不好怎么优化?

来源:卡码

核心要点

  • 从链路每一步定位:文档解析丢没丢 → 分块边界 → Embedding 适不适配 → 查询改写 → 混合检索 → Rerank。
  • 高级策略:Query Rewrite、HyDE、Multi-Query、意图识别后分路检索、GraphRAG 补多跳。

衍生追问

  • 多路召回权重怎么定?离线验证集网格搜索/学习排序;线上 A/B。

Q81. Agentic RAG 和普通 RAG 区别?

来源:卡码 · 字节

核心要点

  • 普通 RAG:一次检索一次生成,固定流水线。
  • Agentic RAG:模型自主决定是否检索、检索几轮、改查询、判断结果够不够;可多轮检索与反思。
  • Query Rewrite 算不算 Agentic?单步改写不算,核心是“检索策略由模型决策 + 多轮闭环”。

衍生追问

  • Agentic RAG 的成本和稳定性怎么控制?检索轮次上限、预算、失败降级到普通 RAG。

Q82. RAG 落地最难的地方在哪?

来源:卡码

核心要点

  • 三大难点级联放大:文档预处理(解析/清洗/结构)最被低估;召回质量最难调;生成忠实度最易被忽视。
  • 每个环节都要有评估和 bad case 闭环,不能只看端到端指标。

衍生追问

  • 文档增量更新怎么做?文档/块级哈希检测变更,先删后增;注意“内容变了 chunk 边界还一样吗”。

Q83. GraphRAG 与 LightRAG 是什么?怎么选?

来源:卡码

核心要点

  • 传统 RAG 天花板:只能找“相似片段”,不会多跳聚合(“哪些部门影响 A”)。
  • GraphRAG:LLM 抽实体-关系建图,社区检测生成社区摘要,回答全局性问题;代价:构建贵、增量难。
  • LightRAG:双级检索(低层级实体 + 高层级主题),增量更新更友好、成本更低。

衍生追问

  • GraphRAG 增量怎么应对?事件驱动增量建图、只更新受影响子图、版本化边。

Q84. RAG 怎么评估?

来源:AgentGuide · 卡码

核心要点

  • 检索端:Recall@K、Precision@K、MRR、NDCG;生成端:faithfulness、answer relevance、answer correctness。
  • 工具:Ragas、LlamaIndex eval、人工评测集。
  • 最重要:评估集要覆盖真实查询分布,有 baseline(如纯 LLM 问答)对比,否则数字没有意义。

衍生追问

  • 100 条人工评测够吗?不够;要分布覆盖(难/易、多跳/单跳、长尾),配合 bad case 聚类。

Q85. RAG 知识库文档更新,不重建全量怎么搞?

来源:卡码 · 小米经典题

核心要点

  • 只答“找到变了的 chunk 更新向量”不够,面试官会追问“内容变了 chunk 边界还一样吗”。
  • 完整方案:文档哈希/版本 → 检测变更 → 重新解析 → 重切分 → 对变更块重新嵌入 → 删除旧向量(先删后增)→ 索引刷新;边界变化时整文档重切。
  • 冲突:带版本 metadata,检索时过滤旧版,Prompt 标注版本。

Agent 深化

Q86. LLM 和 Agent 有什么区别?

来源:卡码 · 字节/小米

核心要点

  • LLM 四大天花板:只会说不会做、没有记忆、知识截止、不会规划。
  • Agent = LLM + 工具 + 记忆 + 规划,在循环中自主完成目标:“LLM 告诉你怎么做,Agent 直接帮你做完”。
  • 面试加分:展开四模块(大脑/规划/记忆/工具)并说明它们如何在循环中协作。

衍生追问

  • 项目里用 LLM 直接调用还是 Agent?根据任务是否多步、是否需要外部世界反馈。

Q87. Agent 和 Workflow 有什么区别?

来源:卡码 · 阿里

核心要点

  • Workflow 控制权在代码手里(固定 DAG);Agent 控制权在 LLM 手里(模型决定下一步)。
  • 场景:流程确定、质量要求高用 Workflow;流程不确定、需要探索决策用 Agent;生产常用混合(确定性节点 Workflow + 决策节点 LLM)。

衍生追问

  • 如何判断该用哪个?步骤可预知→Workflow;开放性/探索→Agent;核心决策点交给模型,其余固定。

Q88. Agent 有哪些工作模式?

来源:卡码

核心要点

  • 单步工具调用(Function Calling)、ReAct 循环(Thought-Action-Observation)、Plan-and-Execute(先规划再执行)、多 Agent 协作、Reflection(自我反思修正)。

衍生追问

  • 各自适合什么?简单查询单步;探索任务 ReAct;长任务先规划;质量敏感任务加反思。

Q89. Function Call 底层怎么实现?

来源:卡码 · 字节

核心要点

  • 本质:把工具 schema 注入 prompt,模型输出结构化“调用意图”(工具名+参数 JSON),不是模型直接执行。
  • 底层:工具描述进 system prompt → 模型生成 tool_calls → 后端校验 schema → 执行真实函数 → 把结果作为 observation 返回 → 模型生成最终回答。
  • 稳定性:强 schema、低 temperature、结构化输出 API、解析失败重试。

衍生追问

  • Function Calling 和 Toolformer 区别?Toolformer 是训练模型学会标注工具调用(self-supervised);Function Calling 是推理时协议,靠指令/微调对齐。
  • 模型调用不存在的工具怎么办?工具白名单 + 执行层拦截 + 参数校验。

Q90. MCP 是什么?解决什么问题?

来源:卡码 · 字节

核心要点

  • 没有 MCP 时:每接一个工具写一套对接代码,换模型重写,像每家一个充电口。
  • MCP:统一工具/资源/提示词协议(Tools 执行动作、Resources 读数据、Prompts 模板),工具开发者实现一次协议,所有支持 MCP 的模型可用——“AI 的 USB-C”。

衍生追问

  • MCP 和普通 HTTP API 区别?协议标准化 + 服务发现 + 权限/鉴权统一,而不是自定义 schema。
  • MCP Resources vs Tools?资源是“读数据注入上下文”,工具是“执行动作”。

Q91. Skills 是什么?和 Prompt / Tool 有什么区别?

来源:卡码 · 字节/蚂蚁

核心要点

  • Skill 不是更长的 Prompt:是“能力包”,包含功能描述、输入/输出 schema、步骤/提示词、依赖工具与资源,可按需加载。
  • Tool 是原子函数;Prompt 是一次性指令;Skill 是“可复用的能力单元”,可组合、可版本管理、可评估。

衍生追问

  • Skill 怎么被调用?技能注册表/向量检索按任务召回,命中后把技能说明注入上下文。
  • 能不能用 Skill 替代 Tool?Skill 内部编排多个 Tool,二者是组合不是替代。

Q92. Function Call / MCP / Skills 三者关系?

来源:卡码

核心要点

  • Function Calling:模型输出调用意图的机制(协议层)。
  • MCP:工具接入的标准化传输层(让工具可发现、可调用、可鉴权)。
  • Skill:能力封装复用层(把多个工具+步骤+提示词打包成能力)。

衍生追问

  • 三者配合的链路?Skill 被选中 → 其内部通过 MCP 发现工具 → Function Calling 完成调用。

Q93. A2A 协议是什么?和 MCP 的关系?

来源:卡码

核心要点

  • MCP 解决“Agent 怎么调工具”,A2A 解决“Agent 之间怎么通信协作”(任务卡片、能力发现、流式结果)。
  • 关系:互补,不在同一层;MCP 是 Agent-工具,A2A 是 Agent-Agent。

衍生追问

  • 多 Agent 用 A2A 还是共享队列?协议标准化 vs 业务内定制,A2A 适合跨团队/跨组织互操作。

Q94. Agent 记忆系统怎么设计?

来源:卡码 · 字节/蚂蚁

核心要点

  • 短期记忆:最近 N 轮原文 + 滚动窗口(Redis/会话上下文)。
  • 长期记忆:结构化画像 + 向量库检索(按需注入)。
  • 工作记忆:System Prompt 里当前任务的关键约束。
  • 分层:项目级规则、用户偏好、会话上下文分开存,避免互相污染。

衍生追问

  • 上下文满了怎么办?摘要压缩、重要信息提取、分层记忆、检索式注入。
  • 记忆要不要衰减?要:早期信息权重降低、定期清理过期记忆。

Q95. Agent 的安全与可靠性如何保障?

来源:卡码 · 字节

核心要点

  • Key 不进上下文(执行层注入)、最小权限、工具白名单、参数校验、输出过滤(敏感信息正则)。
  • Prompt 注入防护:输入检测、系统指令隔离、可疑指令不执行。
  • 审计日志:所有工具调用可追溯;高风险操作人工确认。

衍生追问

  • 工具调用 Key 泄露怎么防?模型永远看不到 Key,只返回工具名+参数,Key 在服务端注入。

Q96. RAG 和 Agent 是什么关系?

来源:卡码

核心要点

  • RAG 是 Agent 的一种知识获取能力;Agent 通过检索增强决策(Agentic RAG),RAG 也可由 Agent 编排(多轮检索、选择数据源)。

衍生追问

  • 什么时候 Function Calling 什么时候 RAG?实时数据/执行操作→FC;离线私有文档→RAG;常组合:RAG 给背景,FC 给实时与动作。

Q97. ReAct 是什么?Loop Engineering 又是什么?

来源:卡码

核心要点

  • ReAct = Reasoning + Acting:Thought(分析当前状态)→ Action(调工具/检索)→ Observation(观察结果)循环,直到 Answer。
  • 纯 Prompt 式 ReAct 的五个裂缝:循环不可控、状态易丢、预算无管理、工具无治理、终止靠运气。
  • Loop Engineering:把循环本身工程化——上下文、状态、预算、工具、终止五类治理(最大步数、重复检测、checkpoint、降级)。

衍生追问

  • 循环里流动的五样东西?上下文(token)、状态(变量/进度)、预算(步数/成本)、工具(注册/权限)、终止条件(成功/失败/超限)。

Q98. Harness Engineering 是什么?

来源:卡码 · 字节

核心要点

  • Harness 是 Agent 的“运行时骨架”:工具注册、上下文管理、循环控制、权限安全、状态持久化、监控可观测。
  • 从 Prompt → Context → Harness 是工程重心转移:不指望模型自觉,而是系统保证。
  • 面试要点:六层组件 + 大厂五个真实难题(漂移、幻觉、成本、状态、可观测)。

衍生追问

  • Hermes Agent / OpenClaw 对比?记忆机制、工具调用、上下文管理、安全机制四个维度对比,能撑五分钟。
  • Claude Code 的 hook 怎么实现?事件钩子(工具调用前后/会话生命周期)注入外部逻辑。

Q99. 上下文漂移怎么解决?

来源:卡码 · 字节

核心要点

  • 每轮注入原始目标;阶段性总结替换完整上下文;外部监督 Agent 检查轨迹;任务分解成短任务;上下文压缩释放窗口。

衍生追问

  • 怎么发现漂移?轨迹评估:子目标达成率、动作与目标相关性打分。

Q100. 工具调用幻觉怎么防?

来源:卡码 · 已有 Q14

核心要点

  • 严格工具 schema、工具白名单、参数类型/枚举校验、执行层拦截未注册工具、返回错误让模型重生成。
  • 证据约束:回答必须带可验证的观察/引用;输出校验层做事实检查。

衍生追问

  • 多轮验证怎么设计?答案生成后重新检索/调用工具验证关键数值,不一致则修正。

Q101. 多 Agent 通信链路怎么设计?异常怎么处理?

来源:卡码 · 字节

核心要点

  • 主 Agent 调度 + 消息队列:任务拆解入队 → 子 Agent 执行写回 → 主 Agent 收集决策。
  • 异常四层:超时 kill 兜底、重试(限次数)、降级(换方案/换子 Agent)、结果校验(不直接信任)。

衍生追问

  • 子 Agent 回复不对怎么办?反思循环 + 最大重试次数;跳不出就终止并人工介入。

Q102. 什么时候用多 Agent,什么时候 Tool 就够?

来源:卡码

核心要点

  • Tool 够:任务可被单 Agent 顺序调用多个工具完成。
  • 多 Agent:需要不同知识/权限隔离、长任务并行、上下文互扰严重时。
  • 代价:通信损耗、token 翻倍、一致性难、调试难——不是免费午餐。

衍生追问

  • Agent-as-Tool 是什么?把一个 Agent 封装成另一个 Agent 的工具(中间态),实现能力复用。

Q103. 混合路由与限流器为什么重要?

来源:卡码 · 字节

核心要点

  • 混合路由:按任务复杂度分流——简单任务小模型省成本,复杂任务大模型保质量;级联降级(小模型先试,不行升级)。
  • 限流:令牌桶控制请求频率,关键路径优先,防止 429 打爆。

衍生追问

  • 路由器怎么训?用历史任务+效果数据训练分类器/打分器,或用规则+模型混合。

Q104. Agent 可观测性怎么设计?

来源:卡码

核心要点

  • Trace 记录:Thought/Action/Observation 全文、工具名+参数+耗时+结果摘要、token 消耗、步数、成本、状态快照。
  • 与普通日志区别:需要还原“模型为什么做这个决策”,支持轨迹回放与坏案例聚类。
  • 工具调用出问题定位:模型错(意图/schema)、参数错、工具错(服务/数据)分层标记。

衍生追问

  • 成本失控监控哪些?每任务 token、工具调用次数、缓存命中率、路由小模型占比。

Q105. Agent 框架对比(OpenClaw / Hermes / Claude Code)与选型?

来源:卡码 · 字节

核心要点

  • 四个对比维度:记忆机制、工具调用、上下文管理、安全机制。
  • Claude Code:终端优先、Auto-Compact 任务状态快照、hook 机制、grep/glob 而非 RAG。
  • OpenClaw:多平台工具生态、自动化任务、Skill 体系。
  • Hermes Agent:轻量 Harness 参考实现,强调上下文工程。
  • 选型:先定场景(终端开发/通用助手/业务 Agent),再比生态与可扩展性,最后看评测指标。

衍生追问

  • LangGraph vs LangChain?LangChain 是组件库,LangGraph 是显式图状态机(节点/边/状态/检查点),支持循环与并行。
  • 框架不满足怎么扩展?自定义节点、外部工具服务、hook 注入。

多模态 VLM

Q106. VLM 的核心挑战是什么?

来源:Datawhale · AgentGuide(字节多模态)

核心要点

  • 模态异构:图像是连续像素/网格,语言是离散 token,需要统一表示空间。
  • 对齐与融合:视觉特征与文本语义对齐(对比学习/投影层/交叉注意力);融合时机(早期/晚期/中间)。

衍生追问

  • 早期 vs 晚期 vs 中间融合?早期融合共享底层特征、计算省但模态差异大;晚期融合各模态独立编码再合并、灵活但交互弱;中间融合逐层交互,效果最好、成本最高。

Q107. CLIP 原理?损失函数?

来源:Datawhale · AgentGuide

核心要点

  • 图像编码器 + 文本编码器分别得到 embedding,用对比学习拉近匹配图文对、推远不匹配对。
  • InfoNCE:batch 内图文配对(如 32k 对),正样本对角线,损失 = -log(exp(sim_pos/τ) / Σ exp(sim_i/τ))。
  • 产物:统一图文表示,可做 zero-shot 分类与检索。

衍生追问

  • 对比学习 batch size 大还是小好?大好(10k+),构造足够难的负样本,但显存与训练成本高。

Q108. LLaVA / MiniGPT-4 怎么连接视觉编码器与 LLM?

来源:Datawhale

核心要点

  • 视觉编码器(如 CLIP ViT)→ 投影层(MLP/Q-Former)把图像特征映射到 LLM 词嵌入空间 → 与文本 token 拼接输入 LLM。
  • 两阶段训练:先对齐(图文对训投影层),再视觉指令微调(全链路)。

衍生追问

  • Q-Former 和 MLP 区别?Q-Former 用可学习 query 压缩图像特征,参数量小、压缩率高;MLP 简单直接。

Q109. 视觉指令微调为什么关键?

来源:Datawhale

核心要点

  • 让 VLM 具备“看图说话 + 对话 + 指令遵循”能力:用图文对话数据微调整个模型。
  • 没有它,模型只会对齐特征,不会按用户指令生成自然回答。

衍生追问

  • 数据怎么造?图像+问题+答案三元组,可由人工/更强 VLM 生成,再清洗。

Q110. 视频等多模态数据比图片多解决什么问题?

来源:Datawhale

核心要点

  • 时序表征:帧间关系(光流/时空 token/时间编码)、采样策略(均匀/关键帧)。
  • 计算量:帧数 × 图像 token,需压缩(时间池化、Q-Former 聚合)。

衍生追问

  • 常见方案?VideoLLaMA 的时间 Q-Former、LLaVA-Video 的帧 token 拼接 + 时间下采样。

Q111. Grounding 是什么?怎么评估?

来源:Datawhale

核心要点

  • Grounding:文本描述对应到图像具体区域(检测框/分割/点),如“红色杯子”定位到图中杯子。
  • 评估:IoU、定位准确率、phrase grounding 基准(RefCOCO 等)。

衍生追问

  • 与 VQA 区别?VQA 回答“是什么”,Grounding 回答“在哪/哪个”。

Q112. VLM 架构范式对比?

来源:Datawhale

核心要点

  • 共享编码器:文本图像共享表示空间(CLIP 风格),轻量但生成弱。
  • 跨模态注意力融合:视觉 token 直接注入 LLM 层(Flamingo 风格),交互强、效果好,成本高。
  • 投影器范式(LLaVA):视觉特征投影到词空间,工程简单、生态成熟。

衍生追问

  • 怎么选?预算少选投影器;追求强对齐选跨模态融合;检索类任务选共享编码器。

Q113. 高分辨率输入图像怎么处理?

来源:Datawhale

核心要点

  • 直接缩放损失细节;方案:动态分辨率切块(Qwen2.5-VL 的 native dynamic resolution)、多尺度特征、视觉 token 压缩。
  • 挑战:token 数爆炸(1024×1024 图可能上千 token),需平衡细节与成本。

衍生追问

  • 一张图多少 token?取决于 patch size(如 14×14)与动态切块,通常数百到上千。

Q114. VLM 幻觉和纯文本 LLM 有什么不同?

来源:Datawhale

核心要点

  • LLM 幻觉是编造事实;VLM 幻觉还包括:看到不存在物体、属性错配(颜色/数量)、区域指认错误。
  • 原因:视觉特征弱对齐、训练数据偏置、过度依赖语言先验。

衍生追问

  • 怎么缓解?结构化推理(区域定位→属性提取→交叉校验)、可信度拒答、指令约束。

Q115. VLM 前沿应用方向?

来源:Datawhale

核心要点

  • 图文问答/OCR/文档理解、具身智能(视觉-动作)、视频理解、GUI Agent(看屏幕操作)、多模态 RAG。

衍生追问

  • 多模态 RAG 怎么做?图片与文本分别 embedding,检索后按模态组织上下文;伪多模态(OCR 转文本)vs 真多模态(图像特征入库)。

Q116. 有没有做过 VLM 微调?怎么做的?

来源:Datawhale

核心要点

  • 标准:冻结视觉编码器,LoRA 微调 LLM 部分 + 投影层,用图文指令数据。
  • 数据集:图像+指令+回答,注意多样性(场景/物体/语言);评估用 VQA 基准 + 业务 bad case。

衍生追问

  • 图片 token 怎么进模型?视觉编码器出 patch 特征 → 投影 → 与文本 token 拼接,位置编码区分模态。

模型与 Agent 评估

Q117. BLEU / ROUGE 评估 LLM 有什么局限?

来源:Datawhale

核心要点

  • BLEU 看 n-gram 精确率、ROUGE 看召回率,都基于字面重叠:同义改写得分低、胡言乱语可能高分、无法评估事实性与逻辑。
  • LLM 生成开放多样,需要语义/事实/偏好级评估。

衍生追问

  • 什么场景还能用?机器翻译、摘要等参考明确的封闭任务仍有参考价值。

Q118. 主流基准:MMLU / Big-Bench / HumanEval 侧重什么?

来源:Datawhale

核心要点

  • MMLU:57 学科知识选择题,测世界知识广度。
  • Big-Bench:超 200 个任务,测推理/常识/多语言等综合能力。
  • HumanEval:代码补全正确率,测代码能力。

衍生追问

  • 评测集污染怎么办?新基准/留出集、加扰版本、模型输出检测。

Q119. LLM-as-a-Judge 优缺点与偏见?

来源:Datawhale

核心要点

  • 优点:可规模化、成本低、一致性可控。
  • 偏见:位置偏见(A/B 顺序)、长度偏见(偏好长回答)、自我偏好(偏袒同族模型)、措辞影响。
  • 缓解:交换顺序、评分标准细化、多个 judge 投票、人工抽样校准。

衍生追问

  • 怎么验证 judge 可靠?与人工标注一致性(Cohen's kappa)抽样评估。

Q120. 事实性/幻觉水平怎么评估?

来源:Datawhale

核心要点

  • 构造带事实标注的问答集,查答案是否正确且忠于上下文(faithfulness)。
  • 自动化:另模型抽取事实声明并与证据核对;人工:标注幻觉类型(无中生有/错配/过时)。

衍生追问

  • 知识幻觉 vs 推理幻觉怎么分离?控制检索上下文(同证据),对比推理步骤与事实引用。

Q121. 评估 Agent 为什么比评估 LLM 难?

来源:Datawhale

核心要点

  • Agent 输出是轨迹(多次工具调用)而非单文本,最终结果正确但过程可能低效/不安全。
  • 维度扩展:任务成功率、效率(步数/耗时)、成本(token)、鲁棒性(环境变化)、安全性、可解释性。

衍生追问

  • 除了最终结果,过程指标有哪些?工具选择合理性、重复动作率、重试次数、目标偏离度。

Q122. Agent 基准怎么构建?

来源:Datawhale

核心要点

  • 需要可交互环境:Web 操作(WebArena)、代码任务(SWE-bench)、工具调用(BFCL/ToolBench)、长程任务。
  • 构建要点:任务可自动判分、环境可重置、失败路径可追踪。

衍生追问

  • SWE-bench 测什么?真实 GitHub issue 修复:给仓库+问题描述,Agent 产出补丁,跑测试判分。

Q123. 红队测试是什么?

来源:Datawhale

核心要点

  • 主动攻击模型/Agent 找漏洞:Prompt 注入、越狱、敏感信息泄露、危险工具滥用、偏见。
  • 角色:发现安全边界与退化行为,输出报告指导防护与评测集补充。

衍生追问

  • Agent 红队重点?跨工具提权、指令注入链、幻觉工具调用、Key/隐私泄露。

Q124. 人工评估怎么保证客观一致?

来源:Datawhale

核心要点

  • 评分标准明确定义维度(正确性/信息量/安全/风格),样例锚定,双人标注 + 分歧仲裁。
  • 控制偏见:盲评、随机顺序、评估者轮换、定期一致性检查。

衍生追问

  • 人工成本高怎么办?人工抽检 + LLM-judge 大规模 + bad case 回流。

Q125. 上线后的模型/Agent 怎么持续监控?

来源:Datawhale

核心要点

  • 指标监控:回答质量抽样、延迟/成本、用户反馈(点赞/点踩/流失)、幻觉率、工具成功率。
  • 行为漂移检测:输入分布变化(新话题)、模型更新回归测试、影子部署对比。

衍生追问

  • 回归测试怎么自动化?固定评测集 + 每次迭代跑分 + 阈值门禁,失败则阻断上线。

Q126. 生成模型的多样性与准确性怎么评估?

来源:卡码 · 字节

核心要点

  • 多样性:同 prompt 多次生成的差异度(CLIP Score 方差、FID 分布覆盖)。
  • 准确性:生成是否符合 prompt(CLIP Score 图文匹配)+ 人工评估。
  • 实践:A/B 测试、自动化 judge pipeline、bad case 聚类。

AI 编程

Q127. Vibe Coding 是什么?面试官到底考什么?

来源:卡码

核心要点

  • Vibe Coding:用自然语言驱动 AI 写代码,迭代式开发;2026 年面试高频新增方向。
  • 考的不是“会不会用 Cursor”,而是能不能让 AI 写得更对、更稳、更可控:上下文构建、Token 成本控制、代码审查、工程纪律。

衍生追问

  • 说一个你踩过的坑?如 AI 改了无关文件、提交了密钥、生成代码无法回滚——要有具体处理方案。

Q128. AI 越来越强,你的优势到底是什么?

来源:卡码

核心要点

  • 定义问题与验收标准(规格先行);拆任务与边界;审查与补反例;把 AI 输出纳入工程流水线(测试/lint/CI)。
  • 一句话:“AI 写代码快,但决定写什么、怎么验证、怎么兜底的是工程师。”

衍生追问

  • 怎么保证 AI 生成代码质量?规则文件、单元测试、CodeReview、小步提交、生成后人工 review。

Q129. AI 编程 Token 成本怎么控制?

来源:卡码

核心要点

  • 上下文瘦身:只注入相关文件(grep/glob 检索而非全库塞入)、摘要替代历史、任务级快照。
  • 控制迭代:明确小任务、避免无限自我修改、设置预算与终止条件。

衍生追问

  • Claude Code 为什么不用 RAG 检索代码?代码检索要精确符号定位(grep/glob/read),向量检索模糊且容易引入无关上下文。

Q130. Claude Code 上下文窗口怎么治理?

来源:卡码

核心要点

  • 上下文窗口不是记忆,只是本轮输入空间;满了不是“放不下”而是“质量下降”(注意力稀释)。
  • Auto-Compact:按 token 阈值触发,压什么/留什么/丢什么有策略;摘要 prompt 生成“任务状态快照”而非“总结一下”。
  • 快照包含:目标、已完成步骤、当前状态、待办、关键文件路径,压完可接续执行。

衍生追问

  • 压缩后还能继续吗?靠状态快照 + 文件系统持久状态恢复;关键文件路径保留,细节按需重读。

Q131. Spec-Driven Development 是什么?

来源:卡码

核心要点

  • SDD:从模糊 Prompt 走向“规格(Spec)→ 计划 → 任务 → 验证”,每个任务可验收。
  • 为什么在 AI 编程时代重新火?AI 需要明确验收条件;规格即上下文,减少幻觉与返工。

衍生追问

  • SDD 和 PRD/TDD/BDD 区别?PRD 是产品需求,TDD 是测试先行,BDD 是行为描述;SDD 强调规格驱动的 AI 任务执行闭环。

Q132. OpenSpec / Spec-kit / gstack 是什么?

来源:卡码 · 字节

核心要点

  • OpenSpec:开放格式的规格驱动开发规范(markdown 规格 + 任务切片 + 验证)。
  • Spec-kit:实现规格驱动开发的工具包(生成/跟踪规格)。
  • gstack:AI 增强开发工具链(规划-执行-验证三件套之一)。
  • 区别:OpenSpec 是规范/格式,Spec-kit 是工具实现,gstack 是工程化栈。

衍生追问

  • 面试怎么答?答“从模糊 prompt 到规格、计划、任务与验证”的主线即可,细节讲一个用过的工具。

Q133. AI 编程避坑:Git 提交、数据库备份、线上回滚?

来源:卡码

核心要点

  • 小步提交、语义化 commit;数据库变更先备份/迁移脚本;发布留回滚点,AI 修改不可信默认可回滚。

Q134. 怎么判断优化后的 Prompt 有效?

来源:AgentGuide · 卡码

核心要点

  • 固定评测集 + 指标(完成率/格式合法率/成本)+ 对比实验;不能只看一两次对话感觉。

Q135. AI 编程工具怎么选?

来源:卡码

核心要点

  • 按场景:终端/仓库级开发(Claude Code)、IDE 内补全(Copilot/Cursor)、Agent 编排(OpenClaw)。
  • 看生态、上下文治理、hook 扩展、成本。

Q136. 传统 Web 开发 vs AI Agent 开发有什么不同?

来源:卡码 · 字节

核心要点

  • 确定性 vs 概率性:传统 if-else 可断点调试;Agent 只能看轨迹日志分析决策。
  • 错误处理:传统 404/500 明确;Agent 错误模糊(幻觉/规划错/工具失败),需要容错与重试。
  • 成本:传统服务器带宽;Agent 主要是 Token。
  • 测试:传统单元测试全覆盖;Agent 用评估指标 + bad case。

衍生追问

  • 用户体验?传统求快求稳;Agent 求智能灵活,用户能容忍慢但不能容忍瞎搞。

Q137. 你对 AI 编程对程序员的影响怎么看?

来源:卡码 · 美团开放题

核心要点

  • 门槛降低:初级重复编码被替代;但工程判断、系统设计、验证能力价值上升。
  • 观点要辩证:AI 是杠杆不是替代,掌握 AI 工程化的工程师效率数倍提升。

AI Infra

Q138. 大模型推理的主要性能瓶颈与优化?

来源:AIInfraGuide · 字节

核心要点

  • 瓶颈:Prefill 计算密集(注意力 O(n²))、Decode 访存密集(带宽)、KV Cache 显存、调度碎片。
  • 优化:PagedAttention、连续批处理、KV Cache 量化/复用、FlashAttention、投机解码、PD 分离、量化。

衍生追问

  • Prefill 和 Decode 各怎么优化?Prefill 用 FlashAttention/并行计算;Decode 用 KV Cache、GQA、批处理提升吞吐。

Q139. PagedAttention 原理?

来源:AIInfraGuide · 卡码

核心要点

  • 把 KV Cache 分页管理,物理块按需分配,逻辑连续虚拟块;消除显存碎片与预分配浪费,支持块级共享(并行采样)。

Q140. Orca 迭代级调度 / 连续批处理?

来源:AIInfraGuide

核心要点

  • 传统静态 batch 等最慢请求;Orca 在迭代粒度调度,请求完成即释放插槽,动态加入新请求,提升 GPU 利用率。

Q141. PD 分离是什么?为什么多机传 KV 仍值得?

来源:AIInfraGuide

核心要点

  • Prefill 与 Decode 计算特性不同,分到不同机器/资源池:Prefill 算力密集,Decode 带宽密集,避免互相干扰。
  • 代价:Prefill 机要把 KV 传给 Decode 机;收益:吞吐与延迟单独调优、长上下文友好,总体收益大于传输开销。

衍生追问

  • 跨 SM 的 PD 分离与 AF 分离?细粒度拆分调度单元,进一步减少气泡、提高资源弹性。

Q142. 训练并行怎么选?

来源:AIInfraGuide · AgentGuide

核心要点

  • 单卡放得下模型 → 数据并行;单卡放不下 → TP/PP;超大模型 → 3D 并行 + ZeRO/FSDP。
  • 长序列训练:序列并行(sequence parallel)、上下文并行、Ring Attention。

衍生追问

  • 通信原语?All-Reduce、All-Gather、Reduce-Scatter、All-to-All;一次 Adam 更新 All-Reduce 需 2 次通信(前向+反向梯度聚合)。

Q143. CUDA 内存访问注意什么?

来源:AIInfraGuide

核心要点

  • Global Memory:合并访问(coalesced)、避免 bank conflict、用共享内存复用、减少 HBM 往返。
  • Shared Memory:容量小、bandwidth 高,注意同步与 bank conflict。

Q144. DeepSeek-V3 关键优化点?

来源:AIInfraGuide · Datawhale

核心要点

  • MLA(低秩 KV 压缩)、DeepSeekMoE(细粒度专家+共享专家+无 aux loss 负载均衡)、Multi-Token Prediction、FP8 训练、DualPipe 通信重叠。

Q145. 显存/训练耗时怎么估算?

来源:AIInfraGuide · Dolby

核心要点

  • 训练显存 ≈ 模型权重 + 梯度 + 优化器状态 + 激活(重计算可省)。
  • 耗时估算:总 token × FLOPs/token ÷(卡数 × 卡峰值算力 × MFU)。

衍生追问

  • MFU 是什么?模型算力利用率,实际吞吐/理论峰值,衡量训练效率。

Q146. 量化方案 GPTQ / AWQ 区别?

来源:AIInfraGuide · AgentGuide

核心要点

  • GPTQ:基于层损失重建,逐层找最优量化(OBS 思路),权重量化为主。
  • AWQ:按激活值敏感度保留重要通道的缩放因子,保护“重要权重”,效果好且无需校准重训。

Q147. 长文本推理怎么优化?

来源:AIInfraGuide

核心要点

  • 滑动窗口、KV 压缩(MLA/量化)、稀疏注意力、分段处理、位置外推(YaRN/NTK)。

Q148. 推理服务框架怎么选?

来源:AIInfraGuide · AgentGuide

核心要点

  • vLLM:PagedAttention + 连续批处理,通用首选;SGLang:前缀复用与结构化输出强;TGI:HuggingFace 生态。
  • 需要 streaming + 低延迟:PD 分离 + 流式输出 + 预填充优化。

Q149. 为什么量化/压缩后精度下降?怎么补偿?

来源:AIInfraGuide · AgentGuide

核心要点

  • 原因:权重分布离群、激活敏感通道、低比特截断。
  • 补偿:AWQ 通道保护、混合精度保留关键层、量化感知微调、LoRA 修复。

Q150. 如何从 Ampere 迁移算子到 Hopper?

来源:AIInfraGuide

核心要点

  • 关注:新 Tensor Core 指令(WGMMA/TMA)、共享内存布局、异步拷贝、Kernel 调度策略适配;用 Nsight 重新 profile 找新瓶颈。

手撕代码

Q151. 手写 MHA(numpy,不用 torch)?

来源:AgentGuide · 小米/字节

核心要点

  • 流程:输入 X → 线性映射 Q/K/V → 切头 → 缩放点积注意力(softmax(QK^T/√d)V)→ 拼接 → 输出投影。
  • 面试要点:写清 init(权重维度)、forward、mask 支持、返回复杂度 O(n²)。

Q152. 三数之和(LC15)?

来源:AgentGuide · 某公司/RAG 专项

核心要点

  • 排序 + 固定一数 + 双指针;去重(跳过相同值);O(n²)。

Q153. 二叉树层序遍历(LC102)?

来源:AgentGuide · 美团

核心要点

  • BFS 队列,每层先取 len(queue) 再遍历,结果按层分组。

Q154. K 个一组翻转链表(LC25)?

来源:AgentGuide · 美团

核心要点

  • 先数 k 个节点不足则结束;递归/迭代翻转该组,连接前驱后继;O(n)。

Q155. 最长递增子序列(LC300,O(n log n))?

来源:AgentGuide · 字节/DeepSeek

核心要点

  • 贪心 + 二分:tails 数组存递增序列,bisect_left 替换;长度即答案。

Q156. 岛屿数量(LC200)?

来源:AgentGuide · 大厂通用

核心要点

  • DFS/BFS 遍历陆地并标记,计数连通分量;注意边界与访问数组。

Q157. 最大乘积子数组(LC152)?

来源:AgentGuide · 大厂通用

核心要点

  • 同时维护当前最大/最小(负负得正),ans 取最大。

Q158. 数组第 K 大(LC215)?

来源:AgentGuide · 大厂

核心要点

  • 快速选择(partition 期望 O(n))或大小为 K 的最小堆(O(n log k))。

Q159. LRU Cache(LC146)?

来源:AgentGuide · AIInfra

核心要点

  • 哈希表 + 双向链表;get/move_to_head,put 超容量淘汰尾部;O(1)。

Q160. 螺旋矩阵(LC54)?

来源:AgentGuide · 美团

核心要点

  • 四边界收缩遍历,注意单行/单列去重。

Q161. 括号生成(LC22)?

来源:卡码 · 混元

核心要点

  • 回溯:剩余左/右括号计数,右括号不能先于左用。

Q162. 合并 K 个升序链表(LC23)?

来源:卡码 · 字节

核心要点

  • 优先队列逐个取最小,或分治两两合并;O(n log k)。

真实情景面经

本模块单独分类:还原“公司 + 轮次 + 题目上下文”,与上面的分类题库互相索引。来源:卡码笔记知识星球真实分享、AgentGuide 案例集、AIInfraGuide 真实面经库、牛客/CSDN 精选。

字节 · Agent 开发 · 四面(21+ 题全解析)

来源:卡码笔记(录友 2025 暑期实习,4.5 一面 → 4.8 二面 → 4.15 三面 → 4.18 四面转岗加面 → offer)

一面/二面/三面/四面共 22 个问点,按主题分组:

Q163. Prompt Engineering 的核心目标?为什么换说法效果差十倍?

大模型是概率生成器,Prompt 模糊则概率分散到很多方向,精准则集中。核心不是“哄模型”,而是把意图翻译成模型最容易理解的形式(角色+任务+约束+示例)。

Q164. System Prompt / Few-shot / CoT 各解决什么问题?

System Prompt 解决“始终按某种风格/角色回答”;Few-shot 解决“格式和模式对齐”(例子比规则管用);CoT 解决“复杂推理容易出错”,把思考过程写出来便于纠偏。

Q165. Token、上下文窗口、上下文腐化?

Token 是最小文本单位,计费/窗口/限速都按它算;窗口是模型一次能看的 Token 总量;腐化指早期内容虽在窗口内,但被大量新内容稀释、注意力下降(Lost in the Middle)。工程上要精准控制窗口里放什么,而不是塞满。

Q166. 幻觉怎么产生?怎么减轻?

模型预测“下一个最可能的 Token”而非检索事实,天然会编。减轻:RAG 给真实资料;Function Calling 调真实接口;Structured Output 约束格式;Prompt 明示“不知道就说不知道”;多轮验证(模型自查/另模型 fact-check)。实际项目组合使用。

Q167. Structured Output 怎么控制输出?

让模型按指定格式输出(如 JSON)。简单方案是 Prompt 规定格式(不稳定);可靠方案是 JSON Schema 约束,主流 API 支持字段名、类型、必填项卡死。下游要解析模型输出,格式确定是系统化的前提。

Q168. Function Calling 与 RAG 的区别和联系?

FC 调外部接口拿实时、结构化数据(天气/股票/数据库);RAG 检索离线、非结构化私有文档。需要实时数据/执行操作→FC;需要领域知识/私有文档→RAG;Agent 常两者结合:RAG 给背景,FC 给实时与动作。

Q169. Embedding / 向量数据库在 RAG 中的作用?检索策略?

Embedding 把文本变向量,语义相近距离近,实现语义检索而非关键词匹配;向量库(Milvus/Pinecone/Weaviate)快速做相似度检索。策略:混合检索 + RRF;Chunk 512-1024 token、50-100 overlap;HyDE 用假答案检索;Rerank 用 Cross-Encoder 精排。

Q170. Agent 如何结合工具、知识和规划自主运行?

Agent = 思维链 + Function Calling + 循环:规划步骤 → 逐步执行(调工具/检索知识/直接回答)→ 观察结果 → 判断完成 → 继续循环。例子:查天气→发现下雨→发邮件提醒。关键是模型自己决定下一步;工程上限制最大循环、加人工确认。

Q171. 多 Agent 通信链路与异常处理?

最常见消息队列:主 Agent 拆任务入队,子 Agent 执行写回,主 Agent 收集决策。异常四层:超时 kill 兜底、限次重试、降级方案(搜索挂用本地知识库)、结果校验(代码能跑通才接受)。

Q172. 上下文漂移与工具调用幻觉怎么解决?

漂移:每轮注入原始任务、阶段性总结、上下文压缩。工具幻觉:严格工具 Schema、工具白名单(未注册拦截)、参数校验(类型/枚举不通过就返回错误重新生成)。

Q173. MCP 和 Skill 的作用?

MCP 解决工具对接标准化(“AI 的 USB-C”),实现一次协议所有模型可用;Skill 是能力封装复用(功能描述+输入输出 Schema+依赖工具),可共享、可组合、可独立升级。MCP 是工具层标准化,Skill 是能力层复用。

Q174. 微调与 RAG 使用场景区别?

“知道新知识”用 RAG(改文档即生效、成本低);“学会新能力”用微调(特定格式/推理链路稳定)。应用开发 RAG 优先;微调用于 RAG 不能保证的稳定行为。

Q175. SFT 和 RLHF 哪个适合快速迭代?破局点?

SFT 快(问答对直接训,几小时到一天);RLHF 链路长(RM+PPO)。SFT 破局点是数据质量而非数量;RLHF 破局点是从人工标注走向可验证奖励(代码可跑通、数学可判分)。

Q176. 推理成本怎么降?多任务怎么权衡效率与准确?

模型选择(简单任务小模型)、KV Cache、量化、批处理。多 Agent:子任务小模型、核心决策大模型;限流保护关键路径。

Q177. 有限上下文怎么放关键内容?短期/长期记忆压缩?

短期:滑动窗口(粗暴)、对话摘要(省 token)、关键信息单独存(决策/约束/偏好每轮注入)。长期:向量库检索式注入、分层记忆(短期上下文/长期向量库/工作记忆 System Prompt)、记忆衰减与清理。

Q178. 混合路由和限流器为什么重要?

混合路由按复杂度分流:简单任务小模型省成本,复杂任务大模型保质量;限流器用令牌桶控制频率,关键路径请求优先,防止 429。

Q179. 执行链路如何设计?连续任务正确性怎么保证?

链路:输入 → 主 Agent 规划 → 拆分子任务 → 子 Agent 执行 → 汇总 → 判断 → 继续/结束。正确性:状态持久化(崩溃可恢复)、Checkpoint(回滚到有效状态)、结果校验、超时重试、高风险操作人工确认。

Q180. 长任务如何保证不偏离原始目标?

每轮注入原始目标、阶段性自查、外部监督 Agent(质检员)、任务分解(短任务明确输入输出)、上下文压缩(摘要替代原文)。

Q181. 生图/生成模型的多样性和准确性怎么评估?

多样性:同 prompt 多次结果的差异度(CLIP Score 方差、FID);准确性:是否符合描述(CLIP Score 图文匹配 + 人工)。实践:A/B、自动化 judge、bad case 聚类。

Q182. 工具调用安全(Key 泄露、敏感信息)?

Key 不进上下文(执行层注入)、环境变量/密钥管理、最小权限;输出过滤(手机号/身份证正则)、Prompt 注入防护、审计日志全链路可追溯。

Q183. 传统 Web 应用和 AI Agent 应用有什么不同?

确定性 vs 概率性:Web 可断点调试,Agent 只能看轨迹日志;错误从明确(404)变模糊(幻觉/规划错),需更多容错重试;成本从服务器变 Token;测试从单元测试变评估指标 + bad case。

Q184. Agent 能力复用与 Skill 管理怎么设计?

Skill 定义四件事:能做什么、输入 Schema、输出格式、依赖工具。扩展性:Skill 注册表(自动发现)、版本管理(平滑升级)、组合编排(简单 Skill 组合复杂任务)、权限隔离、热插拔(动态加载不重启)。

面试心法(录友总结):简历深挖是底线;后端基础概念能说清楚即可;Skills/MCP/CLI 要往深了搞,Harness 概念与实现必须清楚;三个流行框架(OpenClaw/Hermes/Claude Code)要能撑五分钟,从记忆机制、工具调用、上下文管理三方面对比;AI 编程要讲得出踩过的坑和自己的办法;LLM/VLM 基础与训练推理算法按岗位补。

AgentGuide 真实面经案例集(16 个案例索引)

来源:adongwanai/AgentGuide · 12-company-interview-cases.md

案例 岗位/公司 轮次 核心考察点 代表题
1大模型算法岗(某公司)一面/二面Transformer、LoRA、KV Cache、RAG、多 Agent三数之和(LC15)
2强化学习方向一面/二面PPO 四模型、GRPO、记忆系统、vLLM拒绝采样细节
3美团北斗校招两轮LoRA、SFT loss、ZeRO、GRPO、LangGraph层序遍历(LC102)、K 个一组翻转(LC25)
4字节多模态算法两轮CLIP、ViT、对比学习、多模态融合LIS(LC300)
5Agent 方向深度两轮RLHF、规划方法、Function Calling、工具选择客服 Agent 场景设计
6大厂通用 LLM 算法两轮Attention、LoRA、RLHF、幻觉、ICL岛屿数量(LC200)
7大厂 Agent 开发两轮Attention 细节、ZeRO/FSDP、JSON 稳定、多 Agent第 K 大(LC215)
8美团大模型应用算法两轮NLP vs LLM、LoRA/QLoRA、RAG、量化、MoE 部署螺旋矩阵(LC54)、MHA 手写
9大厂 RAG 专项两轮MHA/MQA/GQA、MoE、BM25、DPO/PPO/GRPO、vLLM三数之和(LC15)、根到叶(LC129)
10DeepSeek 专项两轮Transformer 复杂度、R1、PPO/GAE、GRPO、幻觉sqrt(x)、LIS(LC300)
11大厂 Transformer 深度两轮计算量优化、RoPE、KV Cache、DPO/PPO/GRPO、MLA环形链表(LC141)、重排链表(LC143)
12综合理论深度一轮LLM 八股 15 连问全模块综合
13架构设计与优化两轮LN/BN、MoE 负载均衡、KV Cache 推导、DAG 调度组合总和(LC39)
14RAG 系统全流程两轮幻觉、参数、检索优化、SFT 数据、simCSE、DeepSpeed第 K 大、前 K 高频(LC347)
15实习项目深挖两轮Attention、Agent 设计、JSON、DPO/PPO/GRPO合并有序链表
16Attention 机制剖析两轮Attention 本质、SFT 后训练、RAG 分类、多模态 RAG、DPO岛屿数量

高频规律:Transformer/Attention、LoRA、PPO/DPO/GRPO、RAG 链路、Agent 系统设计、LC Medium 手撕。

AIInfraGuide 真实面经库(181 份 · 公司索引)

来源:caomaolufei/AIInfraGuide · docs/interview

公司 代表面经 考察方向
字节跳动AML AI-Infra 一二面、抖音电商 AI-Infra、AI-Infra 校招一面推理瓶颈、PagedAttention、Orca 调度、LRU
阿里巴巴AI-Infra 实习/校招、云 AI-Infra、淘天 AI-Infra训练并行、KV Cache、显存估算
腾讯TEG AI-Infra 一二三面推理优化、C++、项目深挖
百度AI-Infra 校招/实习训练优化、算子优化
快手AI-Infra 一面/校招/实习推理、训练、性能分析
美团AI-Infra 校招一面推理服务、显存
蚂蚁AI-Infra 实习一面推理优化、系统设计
英伟达AI-Infra 校招CUDA、GPU 架构、算子优化
MiniMaxAI-Infra 实习推理、训练框架
蔚来/理想/小鹏AI-Infra 实习/校招自动驾驶场景推理
综合AI-Infra 综合面经题库 1-3CUDA、NCCL、PD 分离、DeepSeek 优化

考什么:CUDA 内存、All-Reduce 通信、Prefill/Decode 优化、PD 分离、显存/耗时估算、DeepSeek-V3/MoE、算子迁移(Ampere→Hopper)。

精选真实现场(牛客 / CSDN)

字节 · RAG+评测+Agent 一面(崩盘复盘)

  • 500 份 PDF、5 万 chunk → 追问“平均每份 100 chunk,切片粒度多少”→ 512 token → 追问“法律文档第三条第二款会不会切散”→ 没想过 metadata。
  • 评测 Recall@5 = 0.81 → 追问“100 条评测集够吗?分布?baseline?”→ 没 baseline 没分布分析。
  • Agent 3 个工具 → 追问“模型决策错怎么办”→ 加 reflection → 追问“reflection 失败 3 次后呢”→ 没设计终止。
  • 业务题“扣子是 Agent 平台还是工作流平台”→ 不了解公司产品。

启示:切片粒度要结合业务语义;评测必须有 baseline 和分布;异常路径必须设计终止条件;面试前了解公司产品。

小米 · AI 大模型开发四面(深度追问链)

  • RAG 项目必问链:Embedding 模型结构 → 输出维度 → 切分模型结构 → 向量库怎么建。
  • LoRA 链:Transformer 更新哪些参数 → 全量 SFT 与 LoRA SFT 的 lr 技巧 → A/B 初始化。
  • Transformer 链:结构 → 输入维度 → LayerNorm 对哪个维度归一化 → 注意力为什么除以 √d_k。
  • 经典题:“知识库文档更新不重建全量怎么搞?”只答“找到变了的 chunk 更新向量”不够,要答“内容变了 chunk 边界还一样吗”→ 整文档重切 + 先删后增。

字节 · Agent 开发实习一面(45 分钟 22 问)

  • 为什么选 ES → 常见向量库 → ES 切向量库哪些能力升降 → ReAct 架构 → 模型怎么选工具 → Middleware → 限制工具调用 → 三级压缩 → 为什么五轮 → SDD/Spec-kit/OpenSpec 区别 → Harness 五个核心模块 → Recall@5 怎么到 91.2% → 防过拟合 → 评测集更新。

启示:Spec 驱动开发、Harness、上下文压缩这些 2026 年新考点已进入实习面试。

蚂蚁 · 智能体应用一面

  • 幻觉怎么解决 → 微调算法 → Skills 怎么写 → Spring AI Skills 调用像谁 → Claude Code 经验 → 为什么用 grep 不用 RAG → 混合召回 → 后接 CS 八股(TCP、B+ 树、IoC/AOP)。

启示:Agent 岗也会考传统后端基础,比例约 7:3。

DeepSeek · Agent 开发岗三面(牛客原帖)

  • 面试体验偏“技术合伙人”式讨论;高频点:Agent 架构、RAG 细节、推理训练、工程落地。完整原帖见来源索引。

开放题与综合

Q185. LLM 距离 AGI 还有多远?最缺什么?

来源:Datawhale

核心要点

  • 结构化回答:已有能力(语言/知识/工具调用)与缺口(世界模型、长期记忆、主动探索、具身交互、价值对齐)分列。
  • 观点要有依据:推理增强(o1/R1)解决一部分,但感知-行动闭环与持续学习仍是短板。

Q186. 多模态融合会走向何方?

来源:Datawhale

核心要点

  • 从文本+图像扩展到视频、音频、3D、传感器;统一 token 表示 + 跨模态对齐是主线;端到端统一模型(原生多模态)趋势。

Q187. 开源 vs 闭源模型生态怎么看?

来源:Datawhale

核心要点

  • 开源:可定制、可审计、成本可控,推动生态与 Agent 框架发展;闭源:能力上限、服务化、安全合规。
  • 趋势:能力差距缩小,开源在垂直领域落地更有优势;两者共存,按场景选。

Q188. 世界模型 / 内在模拟能力怎么理解?

来源:Datawhale

核心要点

  • 模型在训练数据中学到规律,能在内部“模拟”物理/世界过程;对规划意义:先推演再行动(如 o1 搜索推理路径)。
  • 局限:只是统计近似,不是真世界模型,长程预测会漂移。

Q189. 合成数据在训练中的角色?

来源:Datawhale

核心要点

  • 补充真实数据稀缺:代码、数学推理、偏好对、多模态对齐;风险:模型坍缩(自我吞噬)、多样性不足。
  • 关键:合成数据 + 过滤/验证(可执行、可判分)+ 保留真实数据比例。

Q190. 具身智能:LLM 怎么赋能机器人?

来源:Datawhale

核心要点

  • LLM/VLM 提供语言理解、任务分解、常识推理,VLA(视觉-语言-动作)模型直接输出动作。
  • 挑战:实时性、安全、物理世界数据获取、泛化到新环境。

Q191. 个性化 Agent 怎么平衡效果、隐私与安全?

来源:Datawhale

核心要点

  • 效果:画像/记忆;隐私:数据最小化、本地处理、加密、用户可控删除;安全:权限隔离、防止画像泄露。

Q192. Transformer 会一直统治吗?SSM/Mamba 怎么看?

来源:Datawhale

核心要点

  • Transformer 优势:并行训练、长程交互、生态成熟;O(n²) 是软肋。
  • Mamba(SSM):线性复杂度、长序列友好,但硬核实现与生态弱、某些任务(检索/工具调用)效果需验证。
  • 判断:未来可能是混合架构(注意力 + 状态空间 + MoE),不会一家独大。

Q193. 未来 3-5 年 LLM/Agent 最可能颠覆哪个行业?

来源:Datawhale

核心要点

  • 选有“知识密集 + 数字化流程”的行业:软件工程、客服运营、金融风控、法律文档、教育辅导。
  • 论证:Agent 的价值在闭环执行(检索→决策→动作→反馈),行业数字化程度决定落地速度。

Q194. 限制 Agent 能力普及的最大瓶颈?

来源:Datawhale

核心要点

  • 分层回答:模型能力(长程推理、可靠性)、工程(状态/记忆/安全)、成本(token/延迟)、评估(难量化)。
  • 观点:可靠性 > 能力,用户接受度取决于失败率。

Q195. 过去半年印象最深的 Agent 论文/项目?

来源:Datawhale

核心要点

  • 准备 2 个:一个学术(如 o1 类推理、Agent 轨迹优化),一个工程(Claude Code、OpenClaw、LangGraph 生态)。
  • 讲法:它解决了什么问题、核心机制、我的使用/复现体验、局限。

Q196. 应该追求更强基模还是更精巧的 Agent 架构?

来源:Datawhale

核心要点

  • 两者螺旋上升:基模推理能力决定 Agent 天花板,架构把现有能力工程化;当前阶段架构创新(记忆/工具/反思)性价比更高。

Q197. 未来 1-2 年 Agent 商业落地场景?

来源:Datawhale

核心要点

  • 客服、代码助手、办公自动化、垂直知识库问答、风控审核;判断标准:闭环价值可度量 + 失败可兜底。

Q198. 你最想做一个什么 Agent?

来源:Datawhale

核心要点

  • 别只说想法,按“问题 → 用户 → 核心链路 → 评估 → 成本”展开;最好和你简历/兴趣关联。

Q199. 顶尖 AI Agent 工程师的核心素质?

来源:Datawhale

核心要点

  • 系统设计(状态/记忆/工具治理)、工程兜底(可观测/回滚/安全)、模型理解(什么时候靠模型、什么时候靠系统)、评估驱动、快速学习新框架。

Q200. 平时怎么用 AI?对用 AI 学习编程有什么建议?

来源:Datawhale

核心要点

  • 诚实讲用法:代码生成、学习答疑、文档总结、Agent 实验。
  • 建议:先自己思考再让 AI 验证;让 AI 解释而不是直接给答案;用 AI 造测试和反例;警惕“看着会了”。

框架选型

Q201. LangChain 和 LangGraph 到底有什么区别?

来源:官方文档 docs.langchain.com · 官方博客《LangChain and LangGraph 1.0》《3 Years of Graph Engineering with LangGraph》

核心要点(先记住官方定位)

  • 官方把 Agent 技术栈分成三层:Framework(LangChain)→ Runtime(LangGraph)→ Harness(Deep Agents 等)
  • LangChain = 高层 Agent 框架:提供模型/工具/循环的现成抽象和几百个集成,目标是“快速上手、快速交付”。
  • LangGraph = 低层编排运行时:不抽象 prompt 和架构,只提供状态图执行引擎 + 持久化 + 流式 + 人工介入,目标是“生产级、长时间、可恢复”。

七个维度对比

维度 LangChain LangGraph
抽象层级高层框架(组件 + 预置 Agent 模式)低层运行时(图状态机 + 基础设施)
流程形态默认 Agent Loop:模型 → 工具 → 回答,Middleware 加钩子显式图:Node 做事、Edge 决定下一步、State 传数据,支持循环/分支/并行/动态 Send
状态管理消息历史为主,简单直接结构化 State Schema + Checkpointer 持久化,支持断点恢复、跨会话记忆
可控性用预置抽象,自定义靠 middleware 钩子每一步都自己定义,确定性代码与 LLM 决策任意混排
生产特性内置中间件:HITL、摘要压缩、PII 脱敏、工具重试一等公民:durable execution、streaming、human-in-the-loop、persistence
上手成本低,create_agent(model, tools, system_prompt) 几行跑起来高,要定义 State/Node/Edge/编译,代码量更大
适用场景标准单 Agent、快速 MVP、团队统一规范复杂工作流、多 Agent、长任务、高风险需人工审批、延迟/成本精细控制

关键事实(面试加分)

  • LangChain 1.0 的 create_agent 底层就跑在 LangGraph 上——两者不是二选一,是“渐进式技术栈”,可以无缝混用。
  • 2025.10 两者同时发 1.0:LangChain 放弃早期 Chain/LCEL 设计,收窄到核心 Agent Loop + Middleware;create_react_agent(langgraph.prebuilt)被 create_agent(langchain.agents)取代。
  • LangGraph 设计受 Pregel 和 Apache Beam 启发,接口风格像 NetworkX。
  • 官方复盘强调:生产级 Agent 图通常不是 DAG,而是有环图(重试、追问、校验、人工暂停都是环);“Loop 就是最简单的一种图”。
  • 什么时候不该用图:深度研究这类路径无法预先固定的任务,强行硬编码图反而不如更 Agentic 的 Harness(Deep Agents)。

代码级对比(记感觉)

  • LangChain 1.0:
from langchain.agents import create_agent
agent = create_agent(model="openai:gpt-4o", tools=[get_weather], system_prompt="客服助手")
agent.invoke({"role": "user", "content": "上海天气?"})
  • LangGraph:
from langgraph.graph import StateGraph, START, END
graph = StateGraph(State)
graph.add_node("llm", call_llm).add_node("tools", call_tools)
graph.add_edge(START, "llm")
graph.add_conditional_edges("llm", route)  # 自己决定下一步
graph.add_edge("tools", "llm").add_edge("llm", END)  # 循环
app = graph.compile(checkpointer=memory)

面试怎么答(30 秒版):LangChain 是高层框架,帮你几行代码搭标准 Agent,默认是一个 ReAct 循环,1.0 后用 middleware 挂生产能力;LangGraph 是底层状态图运行时,把流程显式建模成节点/边/状态,原生支持循环、并行、持久化、断点恢复和人工介入,适合复杂多 Agent 与长任务。关键点:LangChain 1.0 本身构建在 LangGraph 之上,所以是渐进式关系不是竞争关系——先用 LangChain 快速起步,需要精细控制时下沉到 LangGraph,甚至可以 create_agent 当图里的一个节点。

Q202. 主流 Agent / AI 框架全景(还有哪些?)

来源:官方文档 · 卡码框架横评 · AgentGuide

框架 定位 特点 适合
LangChain高层 Agent 框架组件丰富、create_agent + middleware、生态最大标准 Agent、快速交付
LangGraph低层运行时状态图、持久化、HITL、流式复杂工作流、多 Agent、生产
Deep Agents SDK(LangChain 官方)Agent Harness规划/子代理/文件系统/上下文管理,内置完整工具长时自主 Agent、深度研究
CrewAI角色化多 Agent角色 + 任务 + 流程,上手简单多角色协作 Demo
OpenAI Agents SDK官方 Agent 运行时handoff 机制、原生工具调用、轻量想贴近 OpenAI 生态
Google ADK官方 Agent 开发套件多模态、代码执行、与 Google 生态集成多模态 Agent
LlamaIndex数据/RAG 框架文档检索、数据连接器、知识 AgentRAG/知识库应用
AutoGen / AG2(微软)多 Agent 对话对话式协作、可编程终止多 Agent 研究与原型
Claude Agent SDK / Claude Code官方 Harness终端 Agent、hook、上下文治理编码 Agent、长任务
OpenClaw自动化 Agent多平台工具生态、Skill 体系通用自动化助手
Hermes Agent参考 Harness轻量、强调上下文工程学习 Harness 实现
Semantic Kernel(微软)企业 SDK多语言、插件、与 .NET/云集成企业内 Agent
Spring AIJava 生态Java/Spring 集成 AI 能力Java 团队
MCP / A2A协议层工具标准化 / Agent 间通信跨框架互操作

选型四问(面试答法):① 流程可预知吗?可预知→Workflow/图,开放→Harness;② 需要长时运行/断点恢复吗?需要→LangGraph/Deep Agents 这类带持久化的运行时;③ 团队技术栈?Java 用 Spring AI,Python 用 LangChain 系;④ 生态与可控性平衡:快速上线选高层框架,精细控制下沉低层运行时。

Q203. LangGraph 里 State / Node / Edge 分别解决什么问题?

来源:官方文档 · 卡码 Graph Engineering

核心要点

  • State:节点间传递的结构化数据(消息、任务进度、中间产物、预算、审批结果),是可持久化的核心。
  • Node:做事的单元,可以是确定性代码、单次 LLM 调用、工具调用,甚至一个完整的子 Agent(内含自己的循环)。
  • Edge:决定下一步,可以是确定性边,也可以是基于状态/模型结果的条件路由。
  • 高级能力:Send 动态扇出(map-reduce,运行前不知道多少个子任务)、Checkpointer 断点、interrupt 人工审批后恢复。

衍生追问

  • LangGraph 相比手写状态机优势?自带持久化、重放、可视化调试、与 LangChain 生态互通,且天然支持循环(生产 Agent 大多是有环图)。
  • 为什么不用 LangGraph 硬编码所有路径?深度研究这类任务路径不可预知,过度约束反而牺牲 Agent 自主性,Harness 更合适。

Q204. LangGraph 的图主要抽象了哪些流程?

来源:官方文档 Graph API / Use the Graph API

核心要点(官方一句话:Nodes do the work, edges tell what to do next)

LangGraph 把 Agent 工作流抽象成三类核心组件 + 一套 Pregel 式执行模型:

  1. State(状态流):共享数据结构,是应用当前快照;定义 Schema(TypedDict/Pydantic)+ Reducer(节点更新如何合并:默认覆盖、add 追加、add_messages 按消息 ID 合并去重)。可拆分输入/输出/私有 Schema,内部节点间可传不对外暴露的中间数据。
  2. Nodes(动作单元):普通函数,接收 state、返回更新;可以是确定性代码、单次 LLM 调用、工具调用,甚至一个完整子 Agent(内含自己的循环)。
  3. Edges(转移规则):决定下一步执行哪个节点;固定边或基于状态/模型结果的条件边。
  4. 执行模型(运行时抽象):底层是受 Google Pregel 启发的消息传递算法,按“super-step”推进:节点收到消息才激活,执行完沿边发消息,全部无消息则终止——这层抽象让图天然支持并行和循环。

图抽象出来的具体流程模式

流程 对应机制 典型场景
顺序流固定边串联解析 → 检索 → 生成
条件分支条件边(conditional edge)意图分类后走不同子流程、路由到不同 Agent
循环有环边ReAct 工具循环、失败重试、反思修正、追问澄清
并行扇出静态并行边 + Send 动态扇出多路检索、map-reduce(运行时才知道拆多少个任务)
汇聚共享 State + reducer 合并多子 Agent 结果汇总后统一生成
动态跳转Command(更新状态的同时跳到指定节点)节点即改状态又决定下一步
持久化/断点Checkpointer崩溃续跑、跨会话恢复、time travel 回放
人工介入interrupt / HITL高风险操作审批、人工修改状态后继续
流式输出streaming(values/updates/custom)逐步返回中间结果与最终答案
长期记忆Store(跨线程)用户画像、跨会话知识

多 Agent 编排流程:supervisor(主管-工人)、handoff(交接转移)、swarm(对等协作)、层级嵌套(子图作为节点)。

图不抽象什么:prompt、模型接口、工具定义——这些留在 LangChain 层;图只负责“谁在什么时候做什么、状态怎么流、失败怎么恢复”。

Q205. State 状态流主要存什么信息?

来源:官方文档 Graph API · MessagesState · Checkpointer / Store

核心要点(State = 应用当前快照)

  • 官方定义:State 是共享数据结构,代表应用在某时刻的完整快照;节点读它、返回更新,Reducer 决定更新怎么合并。

按信息类别拆

类别 典型字段 说明
对话历史messages: list[AnyMessage]Human/AI/Tool 消息,用 add_messages reducer 追加并按 ID 合并
任务上下文task, goal, constraints, user_profile原始需求、目标约束、画像,每轮可回看防漂移
中间产物documents, search_results, draft, verification检索结果、工具返回、草稿、校验结论
工作变量retry_count, step, budget_used, tokens, deadline重试次数、当前步、成本/Token 预算、超时控制
控制信息route, next, done, error路由决策、终止标志、异常标记(配合条件边)
业务状态order_id, approval_status, phase领域状态机字段(工单、审批、交易)
长期记忆Store(跨线程)用户偏好、历史经验、知识条目,按需检索注入

官方 Channel 类型(决定“怎么存”)

  • LastValue:只保留最新值(默认覆盖语义),适合 route/step/answer。
  • BinaryOperatorAggregate:用 reducer 累加(add 追加列表、计数器),适合 messages/中间产物。
  • Topic:收集执行期间产生的所有值,适合事件流、审计日志。
  • EphemeralValue:跨 super-step 重置的临时计算值,不持久化。

示例(一个客服 Agent 的 State)

class AgentState(TypedDict):
    messages: Annotated[list[AnyMessage], add_messages]   # 对话历史
    intent: str                                           # 意图路由结果
    documents: list[str]                                  # RAG 检索结果
    retry_count: int                                      # 工具失败重试次数
    budget_used: float                                    # token/成本预算
    approval: str                                         # 高风险操作审批状态
    done: bool                                            # 终止标志

什么不该放 State

  • 大体积工具原始返回(应截断/摘要/存引用,需要时再取详情)。
  • 密钥、Token、隐私原文(安全与合规红线)。
  • 可重算的临时数据(浪费持久化开销)。

衍生追问

  • State 和数据库/缓存的区别?State 是图执行期间的“工作记忆”,Checkpointer 把它持久化;跨会话的画像/知识放 Store(长期记忆),业务大表仍存数据库。
  • 为什么 messages 用 add_messages 而不是 operator.add?add_messages 按消息 ID 合并:新消息追加,已存在的消息能被人工修改(HITL)覆盖,避免重复与错乱。

Q206. Node 节点主要是工具调用吗?

来源:官方文档 Graph API(“Nodes and Edges are nothing more than functions—they can contain an LLM or just good ol’ code.”)

核心要点(先纠正:Node 只是函数,工具调用只是其中一种)

官方定义:Node 是普通函数(同步/异步),接收 state、返回更新;它可以是任何东西:

  1. 确定性代码节点:校验、过滤、格式转换、聚合、字段映射——不碰 LLM。
  2. LLM 决策节点:意图分类、路由判断、生成回答、打分评估。
  3. 工具执行节点:调 API、检索、执行代码、发消息。
  4. 子 Agent 节点:一个完整 Agent(内含自己的 Loop)作为一个节点,形成层级编排。
  5. 子图节点:编译好的另一个 StateGraph 嵌进来,组合复用。
  6. 人工节点interrupt 暂停等人工审批/输入,也是节点。

ReAct 模式的典型误解:常见的工具调用循环其实是“双节点”:LLM 决策节点(决定调哪个工具、生成参数)+ 工具执行节点(真正执行并返回 Observation)→ 再回 LLM 节点。所以工具调用通常不是单节点,而是“决策 + 执行”两个节点组成的一环。

生产图里节点分布(经验值):一个客服/文档 Agent 图里,确定性代码节点(校验、聚合、路由)往往比 LLM 节点多;图的价值正是“能确定的部分用代码,需要判断的部分才用 LLM”,而不是把所有东西都塞给工具调用。

面试答法:Node 是执行单元,可以是代码、LLM 调用、工具执行、子 Agent 或人工审批;工具调用只是其中常见的一类,而且 ReAct 里通常拆成“决策节点 + 执行节点”两个 Node 形成循环。

Q207. LLM 决策节点(意图分类 / 路由 / 打分 / 生成)代码怎么写?

来源:LangGraph + LangChain 官方 API 实践

核心要点

  • 决策类节点统一套路:LLM.with_structured_output(Pydantic模型) → 节点函数读 state、invoke、把结构化结果写回 state → 条件边根据 state 里的决策字段选下一步。
  • 工程三原则:temperature=0(决策要稳定)、结构化输出(下游好解析)、失败兜底(解析失败/重试计数)。

1. 准备:State + LLM

from typing import Annotated, TypedDict
from langchain_openai import ChatOpenAI
from langchain_core.messages import AnyMessage, HumanMessage, AIMessage
from langgraph.graph import StateGraph, START, END
from langgraph.graph.message import add_messages
from pydantic import BaseModel, Field

llm = ChatOpenAI(model="gpt-4o", temperature=0)  # 决策稳定:temperature 归零

class State(TypedDict):
    messages: Annotated[list[AnyMessage], add_messages]  # 对话历史
    intent: str              # 意图分类结果
    confidence: float        # 分类置信度
    documents: list[str]     # RAG 检索结果
    answer: str              # 生成的回答
    score: float             # 打分评估结果
    passed: bool             # 是否通过评估
    retry_count: int         # 重试次数

2. 意图分类节点(结构化输出)

class Intent(BaseModel):
    intent: str = Field(description="retrieve=查知识库 / act=调工具 / chat=直接回答")
    confidence: float = Field(ge=0, le=1, description="置信度 0~1")

classifier = llm.with_structured_output(Intent)

def classify_node(state: State) -> dict:
    result: Intent = classifier.invoke(
        [HumanMessage(content=f"判断用户意图:{state['messages'][-1].content}")]
    )
    return {"intent": result.intent, "confidence": result.confidence}

3. 路由判断:条件边(Edge 读 State 决定下一步)

def route_after_classify(state: State) -> str:
    if state["intent"] == "retrieve":
        return "retrieve"      # 走 RAG
    if state["intent"] == "act":
        return "tools"         # 走工具
    return "generate"          # 直接生成

def retrieve_node(state: State) -> dict:
    # 伪代码:向量库检索
    docs = ["文档1", "文档2"]
    return {"documents": docs, "messages": [HumanMessage(content=f"检索结果:{docs}")]}

4. 生成回答节点(普通 LLM 调用,结果进 messages)

def generate_node(state: State) -> dict:
    resp: AIMessage = llm.invoke(state["messages"])   # 带完整上下文生成
    return {"messages": [resp], "answer": resp.content}

5. 打分评估节点(LLM-as-Judge)

class Verdict(BaseModel):
    score: float = Field(ge=0, le=10, description="0~10 质量分")
    reason: str = Field(description="打分依据")
    passed: bool = Field(description="是否达到通过线")

judge = llm.with_structured_output(Verdict)

def evaluate_node(state: State) -> dict:
    prompt = (
        "你是质检员。依据以下标准给回答打分(0~10,>=7 通过):\n"
        "1. 是否忠于提供的文档;2. 是否完整回答用户问题;3. 是否有幻觉。\n"
        f"问题:{state['messages'][0].content}\n"
        f"回答:{state['answer']}\n"
        f"参考文档:{state.get('documents', [])}"
    )
    v: Verdict = judge.invoke([HumanMessage(content=prompt)])
    return {"score": v.score, "passed": v.passed, "reason": v.reason}

6. 兜底重试路由 + 编译成图

def route_after_eval(state: State) -> str:
    if state["passed"] or state["retry_count"] >= 2:
        return END          # 通过或重试超限 → 结束
    return "generate"       # 不通过 → 带着质检意见重新生成

builder = StateGraph(State)
builder.add_node("classify", classify_node)
builder.add_node("retrieve", retrieve_node)
builder.add_node("tools", tools_node)      # 你的工具执行节点
builder.add_node("generate", generate_node)
builder.add_node("evaluate", evaluate_node)

builder.add_edge(START, "classify")
builder.add_conditional_edges("classify", route_after_classify,
                              {"retrieve": "retrieve", "tools": "tools", "generate": "generate"})
builder.add_edge("retrieve", "generate")
builder.add_edge("tools", "generate")
builder.add_edge("generate", "evaluate")
builder.add_conditional_edges("evaluate", route_after_eval)  # 键名=节点名时可省略映射

app = builder.compile()
result = app.invoke({"messages": [HumanMessage(content="公司年假政策是什么?")],
                     "retry_count": 0})

执行链路:classify(意图)→ retrieve/tools/generate(干活)→ generate(回答)→ evaluate(质检)→ 不通过带原因回 generate 重试(retry_count+1)→ 超限终止。

衍生追问

  • 为什么决策节点用结构化输出?路由/打分/分类都要被代码消费,JSON Schema 卡死字段最稳;解析失败还有兜底(重试/默认路由)。
  • 打分评估节点怎么防止“自我偏好”?换更小/不同模型做 judge、交换顺序盲评、人工抽样校准。
  • 条件边返回的值和节点名不一致怎么办?用映射字典显式对应,如 {"retrieve": "retrieve", ...};键名等于节点名时可省略。

Q208. Node 怎么知道该“思考”还是“调工具”?这个决定是谁做的?

来源:LangGraph 官方 ReAct 实现 · OpenAI Function Calling 机制

核心要点(先纠正认知:LangGraph 不知道,模型才知道)

  • LangGraph 不是 LLM,它没有任何“判断能力”;Node 只是你写死的函数。
  • “思考还是调工具”的决定发生在 LLM 节点内部:你把工具 schema 通过 bind_tools 注入模型,模型按训练学到的 Function Calling 能力,自己决定输出纯文本(思考/回答)还是 tool_calls(要调工具)。
  • 图只负责一件事:检查模型输出的信号,按你写好的路由规则走——有 tool_calls 就进工具执行节点,没有就进回答/结束。

一句话流程:模型“看”到工具清单 → 输出两种信号之一(文本 or tool_calls)→ 路由函数检查信号 → 有调用去执行,没有就结束。

最小代码(ReAct 双节点)

# 1. LLM 节点:模型带着工具清单“思考”
model_with_tools = llm.bind_tools([search_api, send_email])   # 工具 schema 进 prompt/API

def agent_node(state: State) -> dict:
    resp = model_with_tools.invoke(state["messages"])  # 模型自己决定:文本 or tool_calls
    return {"messages": [resp]}

# 2. 路由函数:检查模型输出的是什么信号
def should_continue(state: State) -> str:
    last = state["messages"][-1]
    if getattr(last, "tool_calls", None):   # 模型要调工具
        return "tools"                       # → 工具执行节点
    return END                               # 模型直接回答 → 结束

# 3. 工具执行节点:只负责“执行”,不做任何决定
def tools_node(state: State) -> dict:
    last = state["messages"][-1]
    results = []
    for call in last.tool_calls:             # 执行模型要调的所有工具
        out = execute_tool(call["name"], call["args"])   # 你的实际函数
        results.append(ToolMessage(content=str(out), tool_call_id=call["id"]))
    return {"messages": results}             # 观察结果塞回上下文

# 4. 连成循环:LLM → (有调用) tools → 回 LLM;LLM → (无调用) END
builder.add_node("agent", agent_node)
builder.add_node("tools", tools_node)
builder.add_edge(START, "agent")
builder.add_conditional_edges("agent", should_continue, {"tools": "tools"})
builder.add_edge("tools", "agent")          # 观察完必须回 LLM 再决策

执行过程还原

  1. agent_node 把 messages + 工具定义交给模型;模型若认为需要外部信息,输出 tool_calls=[{name, args}]
  2. should_continue 看到 tool_calls → 路由到 tools_node
  3. tools_node 执行真实函数,把结果包成 ToolMessage 追加进 State。
  4. tools → agent 把控制权交回模型:模型现在能看到观察结果,再决定下一步(继续调 / 思考 / 结束)。

关键认知(面试必答)

  • 模型“知道有工具”是因为 bind_tools 把工具名/参数 schema 序列化进了请求;这是模型层的 Function Calling 能力,不是图的魔法。
  • “思考”(CoT/推理 token)发生在模型的单次输出内部,LangGraph 不需要单独的“思考节点”;只有当你想要显式“先规划后执行”时,才自己拆 planner / executor 两个节点。
  • 工具节点永远不做决定:它只执行 tool_calls 并返回观察;决定权始终在 LLM 节点 + 你写死的路由规则手里。

Q209. LangGraph 的 Node 类型完整清单?

来源:官方文档 Graph API · LangChain 1.0 预置能力

核心要点(按“业务职责”分 7 类)

  1. 确定性代码节点:校验、过滤、聚合、格式转换、字段映射、幂等检查——不碰 LLM,图里最容易被低估的一类。
  2. LLM 决策节点:意图分类、路由判断、打分评估、生成回答——内部用 with_structured_outputbind_tools
  3. 工具执行节点:执行 tool_calls(调 API、检索、执行代码、发消息),只执行不决定。
  4. 子 Agent 节点:一个完整 Agent(自己的循环)作为单个节点,层级编排。
  5. 子图节点:编译好的 StateGraph 作为节点嵌入,图组合复用。
  6. 人工节点interrupt() 暂停执行,等人工审批/输入后 resume;高风险操作标配。
  7. 虚拟节点START(入口)和 END(终止),不是函数,是图的边界标记。

按“API 实现”分 5 类

  1. 普通函数节点def node(state, config, runtime) -> dict,同步或异步(async def 自动支持)。
  2. Runnable 节点:直接传 LangChain Runnable(Chain / 模型 / 工具)作为节点,框架自动包装调用。
  3. Command 节点:节点返回 Command(update=..., goto=...),一个节点内同时“更新状态 + 指定下一步”,适合动态跳转。
  4. 预置 Agent 节点create_agent(...) / create_react_agent(...) 生成的完整 Agent 直接当节点;create_agent 内部就是 StateGraph 运行时。
  5. Send 动态子任务节点:严格说是“动态扇出机制”不是节点类型——一个节点用 Send(node, payload) 在运行时按数据量创建多个并行子任务(map-reduce)。

容易混淆的边界

  • 条件分支/路由是 Edge 的职责,不是 Node;Node 只做事。
  • 并行不是一种节点,而是多个节点在同一 super-step 被同时激活;Send 是实现动态并行的机制。
  • interrupt 不是独立节点类,是普通节点内部的暂停原语;暂停后图的状态被 Checkpointer 保存,resume 继续。

面试答法:Node 按职责分七类——代码节点、LLM 节点、工具节点、子 Agent、子图、人工节点、START/END;按实现分五类——函数、Runnable、Command、预置 Agent、Send 子任务。工具节点只是其中一种,而且决定权不在它手里。

Q210. AI 怎么知道走到某节点要审批?Node 里存了任务提示词吗?

来源:LangGraph 官方 HITL(Human-in-the-loop)文档与 interrupt 机制

核心要点(先纠正三个误解)

  1. AI 不会“走到”节点:图是 Python 运行时在遍历,Node 是函数;AI 只会在“包含 LLM 调用的节点”里被运行时调用一次。AI 永远看不到地图,只看得到你喂给它的 messages + 工具 + 提示词。
  2. “需要审批”不是 AI 判断的,是你硬编码的:审批节点是图结构里固定的一条路径——要么“这条边必经审批”,要么“路由函数发现敏感操作就进审批”。AI 没有被问过“要不要审批”。
  3. Node 里不存放“任务提示词”:提示词在 LLM 调用时传入;审批节点的本质是 interrupt() 暂停原语 + 给人类看的载荷,不是给 AI 的指令。

审批节点的真实机制(interrupt)

def approve_node(state: State) -> dict:
    decision = interrupt({
        "question": "是否允许执行以下操作?",
        "action": state["pending_action"],     # 例如 send_email
        "params": state["pending_params"],     # 例如 收件人/内容摘要
    })  # ← 图在这里暂停:状态已存 Checkpointer,等人类回复
    return {"approval": decision}              # 人类决定写回 State

怎么“走到”审批节点的(两种方式)

# 方式 A:静态必经——发邮件前永远先审批
builder.add_edge("prepare_send", "approve")   # 无条件先过审批
builder.add_edge("approve", "send")

# 方式 B:条件路由——代码检查模型要调的工具,敏感操作才审批
def route_by_tool(state: State) -> str:
    last = state["messages"][-1]
    if last.tool_calls and last.tool_calls[0]["name"] in {"send_email", "delete_record", "pay_order"}:
        return "approve"        # 模型想调危险工具 → 拦截进审批
    return "execute"            # 普通工具直接执行

builder.add_conditional_edges("agent", route_by_tool,
                              {"approve": "approve", "execute": "execute"})

审批后的恢复(resume)

# 人类在 UI/命令行给决定,运行时用 Command 恢复执行
from langgraph.types import Command
app.invoke(Command(resume={"allow": True, "comment": "同意,收件人已确认"}),
           config={"configurable": {"thread_id": "order-123"}})
# approve_node 的 interrupt() 返回这个值 → 写入 State["approval"] → 边决定 send/cancel

执行过程还原(一个“AI 想发邮件”的完整链路)

  1. agent(LLM)输出 tool_calls=[send_email]——AI 只做了“想发邮件”这个决定。
  2. 路由函数发现工具名在敏感清单里 → 返回 "approve"(这是你的代码,不是 AI 的提示词)。
  3. 运行时进入 approve_node,调用 interrupt() → 暂停,Checkpointer 保存状态,等待人工。
  4. 人类看到载荷(动作+参数+问题),回复允许/拒绝。
  5. interrupt() 返回值被写进 State,边路由到 sendcancel

那提示词在哪? 提示词只出现在两类地方:

  • 你调用 LLM 的节点里:system_prompt="你是客服,发邮件前必须说明收件人与内容"——这是给 AI 的行为约束,不是审批机制。
  • 审批 UI 给人类看的文案(question 字段)——这是给人看的,AI 根本不读。

面试一句话:审批是图结构层面的“安全闸门”,不是 AI 的能力;AI 只负责输出意图(tool_calls),路由代码决定敏感操作必须进 interrupt() 的人工节点,人类决定后通过 Command(resume=...) 恢复执行。

Q211. LangGraph 是不是用来“规范 AI 要进行哪些操作”的?

来源:LangGraph 官方“Nodes do the work, edges tell what to do next”设计哲学

核心要点(是的,但规范方式不是“给 AI 看流程图”)

LangGraph 确实是“规范 AI 操作”的编排层,但它的规范靠三条代码手段,而不是把任务清单存在 Node 里让 AI 自己读:

手段一:路径规范(图结构决定 AI 何时被调用、调用几次)

  • 图决定 AI 在哪个节点出现:比如 classify 节点调一次模型、agent 节点在循环里反复调模型。
  • 图决定能不能回头:tools → agent 允许 AI 再次决策;recursion_limit 限制循环次数。
  • AI 自己不知道这些——它只是“被叫上场演戏的演员”。

手段二:输入规范(调用 AI 时,你只给它看你想让它看的)

def agent_node(state):
    resp = model.bind_tools([search, calculator]).invoke([
        SystemMessage("你是客服,只能查资料和算数,不要做其他事"),
        *state["messages"]
    ])
    return {"messages": [resp]}
  • 系统提示词规定行为边界;bind_tools 只暴露允许的工具——模型根本不知道危险工具存在,这就是最强规范。

手段三:输出规范(AI 说了不算,代码校验 + 路由 + 拦截)

def route(state):
    calls = state["messages"][-1].tool_calls
    if calls and calls[0]["name"] not in ALLOWED_TOOLS:   # 白名单
        return "reject"                                     # 越权直接拒绝
    if calls and calls[0]["name"] in SENSITIVE_TOOLS:      # 敏感操作
        return "approve"                                    # 进人工审批
    return "execute"
  • 模型输出的 tool_calls 只是“提议”,要不要执行由代码决定:白名单校验、参数 schema 校验、敏感操作审批。

“规范 AI 操作”的分工表(面试直接背)

规范什么 手段
图(Graph)流程路径:AI 何时被调用、下一步去哪、能否循环Node + Edge + 条件路由 + 循环上限
节点(Node)这一步做什么:调哪个模型、传什么 prompt/工具函数 + system prompt + bind_tools
边(Edge)做完后的去向:按 state/工具名/结果分流条件边 + 路由函数
运行时兜底:持久化、暂停、恢复、超限Checkpointer / interrupt / recursion_limit
模型(AI)只做“判断”:输出文本或 tool_callsFunction Calling / 结构化输出

一句话总结:LangGraph 规范 AI 操作的方式是“外部流程控制”——图规定 AI 什么时候上场、传什么剧本(prompt/工具)、演完按什么规则下场(路由/白名单/审批);AI 永远看不到流程图,它只是被图调用的判断引擎。这也正是面试常说的“模型负责判断,代码负责规则”。

来源索引

所有内容可回溯到以下公开资料;本地截图面经(阿里/美团/百度)与卡码知识星球原帖不公开链接。
来源 地址 说明
卡码笔记 · 大模型面经汇总https://notes.kamacoder.com/interview/llm/2026 最全:Agent/RAG/Transformer/微调/AI 编程专题 + 真实面经
卡码 · 字节 Agent 四面https://notes.kamacoder.com/interview/llm/20260506bytedance.html21+ 题全解析(本文真实情景模块已收录)
卡码 · RAG 面经https://notes.kamacoder.com/interview/llm/rag_interview.html向量检索/混合检索/Rerank/幻觉
卡码 · Agent 面经https://notes.kamacoder.com/interview/llm/agent_interview.htmlReAct/Function Calling/MCP/Skills/A2A
卡码 · Harness 面经https://notes.kamacoder.com/interview/llm/harness_interview.htmlHarness Engineering 六层组件
卡码 · Loop Engineeringhttps://notes.kamacoder.com/interview/llm/loop_engineering_interview.htmlReAct → Loop 工程化
卡码 · 多 Agent / Skill / 路由 / 幻觉https://notes.kamacoder.com/interview/llm/multi_agent_harness、agent_skill、hybrid_routing、hallucination_control 等专题
卡码 · 微调 SFT/RLHF/DPOhttps://notes.kamacoder.com/interview/llm/finetuning_sft_rlhf_interview.html微调价值、Prompt/RAG 取舍
卡码 · GraphRAGhttps://notes.kamacoder.com/interview/llm/graphrag_interview.htmlGraphRAG/LightRAG 对比
卡码 · Transformerhttps://notes.kamacoder.com/interview/llm/transformer_interview.htmlSelf-Attention/位置编码/架构选择
卡码 · AI 编程https://notes.kamacoder.com/interview/llm/vibe_coding_interview.htmlVibe Coding/Token 成本
卡码 · Claude Code 上下文https://notes.kamacoder.com/interview/llm/claude_code_context_window_interview.htmlAuto-Compact/状态快照
代码随想录 · 大模型面经https://programmercarl.com/qita/0022.llminterview.html7 大方向、15 篇专题索引
Datawhale hello-agentshttps://github.com/datawhalechina/hello-agentsExtra01 面试问题总结:LLM/VLM/RLHF/Agent/RAG/评估 100+ 题
AgentGuide 真实面经案例https://github.com/adongwanai/AgentGuidedocs/04-interview:16 个公司轮次案例
AIInfraGuide 真实面经库https://github.com/caomaolufei/AIInfraGuidedocs/interview:181 份 AI-Infra 公司面经
Awesome-LLM-Interviewhttps://github.com/DolbyUUU/Awesome-LLM-Interview-Questions-and-Answers大模型算法/Agent 开发常见题 + 答案
ai-agent-interview-guidehttps://github.com/bcefghj/ai-agent-interview-guide9 大模块 200+ 面试题、企业级项目
LangChain 官方文档https://docs.langchain.com/oss/javascript/concepts/productsFramework / Runtime / Harness 分层定位
LangChain 官方博客 · 1.0https://www.langchain.com/blog/langchain-langgraph-1dot0LangChain 1.0 vs LangGraph 1.0 官方说明
LangChain 官方博客 · Graph Engineeringhttps://www.langchain.com/blog/3-years-of-graph-engineering-with-langgraphLangGraph 三年复盘:图 vs Loop vs Harness
牛客 · DeepSeek Agent 三面https://www.nowcoder.com/discuss/913902338543259648真实三面复盘
牛客 · 字节 Agent 一面https://www.nowcoder.com/discuss/914281634864562176字节 Agent 一面
CSDN · 2026 大厂大模型/Agent 面试题https://blog.csdn.net/weixin_44151034/article/details/161729146小米/字节/腾讯/阿里/蚂蚁/快手面经合集
腾讯云开发者 · RAG 高频题https://cloud.tencent.com.cn/developer/article/26618235 道高频 RAG 题