Interview Outline · Agent / LangChain / LangGraph

Agent 面试大纲:汪勇

候选人两个项目都很集中:一个菜谱 RAG 问答,一个 LangGraph 四智能体系统。这份大纲围绕他简历深挖,重点考察真实理解,每题带标准答案、加分点和扣分点。点问题下方的「答案与评分」可展开。

60 分钟
建议总时长
12 题
三个部分
2 道
验真题(Q7 / Q10)
4 条
红旗信号

面试结构

时间分配的重心放在 LangGraph 和项目深挖,这两块最能看出他是真做过还是包装。

环节时长看什么
热身5 min自我介绍,让他自己选一个项目讲 2 分钟。听他先讲什么:先讲指标还是先讲问题
Part 1 · Agent 概念15 minQ1–Q4。概念是不是理解到「控制流」「重规划」「记忆读写」这一层
Part 2 · LangChain / LangGraph20 minQ5–Q9。框架用得深不深,能不能画出自己系统的图
Part 3 · 项目深挖15 minQ10–Q12。简历上的漂亮数字能不能对上真实评测
追问与反问5 min留给他问你。问的问题质量也算信号

Part 1 · Agent 基础概念

15 分钟,4 题。目标:把「背概念」和「真理解」分开。

Q1

什么是 Agent?它和普通的 LLM 调用、和 RAG,本质区别在哪?

答案与评分
标准答案
  • Agent = LLM + 工具 + 循环决策。核心是模型在循环里自己决定下一步:调哪个工具、继续想、还是结束。
  • 普通 LLM 调用是一问一答。RAG 是写死的固定流程:检索、拼 prompt、生成。Agent 的控制流由模型在运行时决定,这是本质区别。
加分
  • 点出「控制流由谁决定」这个分界;提到 workflow 和 agent 的谱系(Anthropic《Building Effective Agents》里的分类)。
  • 能说 Agent 的代价:延迟高、不可控、成本高,不是万能选择。
扣分
  • 只会背「感知—规划—行动」这类空话。
  • 认为接了工具就叫 Agent;说不清 RAG 和 Agent 的区别。
Q2

讲讲 ReAct 怎么工作的。它有什么缺陷?

答案与评分
标准答案
  • Thought → Action → Observation 循环:模型先想,再决定调哪个工具、传什么参数,工具结果作为 Observation 拼回上下文,继续下一轮,直到给出 Final Answer。
  • 缺陷:每一步都是一次 LLM 调用,步数越多延迟和 token 花得越多;长任务容易迷路或死循环;上下文越滚越长;没有全局规划,走一步看一步。
加分
  • 知道现代实现里 Action 已经从解析文本变成原生 function calling。
  • 提到最大迭代次数、循环检测这类工程兜底。
  • 能对比 Plan-and-Execute。他简历写了「轻量任务走 ReAct,复杂任务走 Plan-and-Execute」——追问:判别标准是什么?
扣分
  • 说不清 Observation 从哪来;只把 ReAct 当黑盒用。
  • 简历写了「失败动态重规划」,但说不出重规划的触发条件和实现。
Q3

Plan-and-Execute 下,执行到第 3 步发现计划不可行,怎么办?

直接打他简历里的「失败动态重规划」。

答案与评分
标准答案
  • Replanning:把已完成步骤的结果加上失败信息喂回 Planner,生成新计划,而不是从头重来。
  • 要分清两层:「步骤级重试」(同一步换参数再试)和「计划级重规划」(目标拆解本身错了)。
  • 重规划要设次数上限,防死循环。
加分
  • 他简历写了「拓扑排序执行」——让他解释:步骤之间的依赖怎么表达?没有依赖的步骤能不能并行跑?
  • 提到用状态机 / LangGraph 条件边实现「执行 → 检查 → 重规划」这个环。
扣分
  • 解释不了 DAG 依赖从哪来(是 LLM 输出的,还是人定义的)——这是简历注水的强信号。
Q4

Agent 的记忆怎么设计?短期记忆和长期记忆各解决什么问题?

答案与评分
标准答案
  • 短期记忆 = 会话上下文:对话历史、当前任务状态。受 context window 限制,要裁剪或摘要。
  • 长期记忆 = 跨会话持久化:结构化画像(用户偏好这类 KV)+ 语义记忆(向量库存事实,按相似度找回来)。
  • 写入侧要有提取和总结(不是原文全存),读取侧是个检索问题。
加分
  • 他简历写了「按访问频次与时间戳被动遗忘」——追问具体怎么算:类似 LRU 加时间衰减?有没有权重公式?答得出具体实现说明真做过。
  • 提到记忆写入时机(每轮写还是会话结束写)、记忆冲突怎么处理(用户改口了怎么办)。
扣分
  • 只会存储视角:「Redis 存短期,Milvus 存长期」,说不出提取、更新、遗忘的逻辑。
  • 不知道上下文放不下时,摘要和截断各有什么取舍。

Part 2 · LangChain / LangGraph

20 分钟,5 题。Q7 是本场第一道验真题:让他现场画自己系统的图。

Q5

LCEL 是什么?| 管道背后是什么?

答案与评分
标准答案
  • LCEL = LangChain Expression Language。所有组件实现 Runnable 接口(invoke / stream / batch / ainvoke),| 把 Runnable 拼成 RunnableSequence。
  • 好处:统一拿到流式、批量、异步,还有 with_retry / with_fallbacks 这些重试回退能力。
加分
  • 说得出 RunnablePassthrough / RunnableParallel 在拼 RAG 链时怎么用。
  • 知道 LangChain 0.2/0.3 之后,官方推荐复杂逻辑用 LangGraph,别硬拼 LCEL。
扣分
  • 只会 prompt | llm | parser 一句话,不知道 Runnable 接口。
  • 把 LangChain 当成「就是个调 API 的壳」。
Q6

LangGraph 的核心抽象是什么?State、Node、Edge 各是什么?为什么 Chain 不够用,要上图?

答案与评分
标准答案
  • StateGraph:一个共享 State(通常 TypedDict 或 Pydantic),Node 是接收 state、返回 state 更新的函数,Edge 分固定边和条件边(conditional edge,由函数看 state 决定往哪走)。
  • Chain 是单向 DAG,表达不了循环。Agent 的本质是环——执行、判断、再回到执行——所以需要图。
加分
  • 能讲 reducer / Annotated[list, add_messages]:state 更新是「合并」不是「覆盖」。说得出这个的基本是真写过。
  • 提到 checkpointer(MemorySaver / SqliteSaver / RedisSaver)做持久化和断点恢复,知道 thread_id。
  • 提到 interrupt / human-in-the-loop;提到 Send API 做动态并行分发。
扣分
  • 不知道条件边和普通边的区别。
  • 声称解决了「长会话上下文丢失」却没听说过 checkpointer。
Q7 · 验真题

你的规划 / 执行 / 检索 / 总结四智能体,在 LangGraph 里具体怎么路由?「轻量走 ReAct、复杂走 Plan-and-Execute」这个分流是谁判断的?

给他纸笔或白板,让他现场画:几个节点、条件边在哪、环在哪。

答案与评分
合格版答案
  • 入口有个 router 节点(LLM 分类或规则),条件边路由到 ReAct 子图或 Plan-Execute 子图。
  • 执行智能体失败时,条件边回到规划节点做重规划。
  • 总结智能体在会话末端或达到阈值时触发,负责写记忆。
加分
  • 说得清分流判据:意图分类的 prompt 怎么写的?分错了怎么兜底?
  • 讲清「分层 Prompt 注入控制上下文污染」到底是什么——比如各节点只看到自己需要的 state 字段,而不是全量 messages。这是他简历里最玄的一句,务必追问。
扣分
  • 画不出自己系统的图。
  • 说不清「上下文污染」指什么、怎么隔离的。
  • 四个智能体其实就是四个 prompt 顺序调一遍,没有真正的路由和环——那「状态机」就是包装词。
Q8

LangGraph 里多个 Agent 协作有哪些常见架构?各自适合什么场景?

答案与评分
标准答案
  • Supervisor(中心路由)、层级式(supervisor 管 supervisor)、网状 / handoff(Agent 之间直接移交)、流水线式。
  • Supervisor 简单可控,但中心节点是瓶颈,还多一跳延迟;handoff 灵活但难调试。
加分
  • 提到子图(subgraph)复用,多 Agent 之间 state 哪些共享、哪些隔离。
  • 提到 supervisor 模式下「传完整历史 vs 只传结果」的取舍。
扣分
  • 只知道 multi-agent 这个词,说不出任何一种具体拓扑。
Q9

FastAPI + SSE 下,怎么把 LangGraph 的中间过程流给前端?

答案与评分
标准答案
  • 用 LangGraph 的 astream / astream_events,stream_mode 有 values / updates / messages 等档。
  • token 级流式用 messages 模式,或用 astream_events 过滤 on_chat_model_stream 事件。
  • FastAPI 侧用 StreamingResponse / EventSourceResponse 转发。
加分
  • 分得清两类流:「节点进度事件」和「token 流」。
  • 流到一半出异常怎么办:SSE 里发 error 事件,而不是直接断连。
扣分
  • 简历写了 SSE 流式,但实际只在最外层 llm.stream()——说明多智能体流程里没真正解决中间态流式。

Part 3 · 项目深挖 / 工程判断

15 分钟,3 题。Q10 是第二道验真题:漂亮指标必须对得上评测方法。

Q10 · 验真题

RRF 融合的公式是什么?为什么用 RRF,不直接加权分数融合?

答案与评分
标准答案
  • RRF score = Σ 1/(k + rank_i),k 常取 60。
  • BM25 分数和向量相似度量纲不同、分布不同,直接加权要先归一化,还不稳定。RRF 只用排名,天然不受量纲影响。
加分
  • 说得出 k 的作用:平滑头部差距。
  • 说得出 Hit@5 95% 这个数的评测集怎么来的:多少条、谁标的。答不出评测集来源,指标可信度直接存疑,重点扣分。
扣分
  • 简历明确写了 RRF 这个词,却说不出公式。
  • 交叉编码器重排和双塔召回的区别说不清。
Q11

语义缓存怎么判断「两个问题算同一个问题」?误命中怎么办?

答案与评分
标准答案
  • query embedding 相似度超过阈值就命中。
  • 风险是语义相近但答案不同:「红烧肉怎么做」和「红烧肉热量多少」。需要较高阈值,加上意图 / 实体一致性校验。
  • 还要有缓存失效策略:TTL、知识更新时清掉。
加分
  • 阈值是怎么调出来的:有没有一个 bad case 集。
  • 说得出实际的命中率和误命中率数字。
扣分
  • 没意识到「语义缓存会答错题」这个核心风险。
Q12

熔断和降级:连续失败几次触发?半开状态怎么恢复?「切内存模拟」之后用户看到的是什么?

答案与评分
标准答案
  • 熔断三态:closed / open / half-open。
  • Milvus 挂了可以降级为内存向量检索,或干脆跳过检索、纯 LLM 回答——但要向用户提示能力受限。
加分
  • 说得出自己系统里的具体阈值和恢复策略。
  • 能讨论降级之后回答质量掉多少,值不值。
扣分
  • 熔断只会背概念,说不出自己系统里的参数和实测行为——又一个简历注水信号。

评分总纲

维度权重关键判据
Agent 概念深度30%Q1–Q4 能否讲到「控制流」「重规划触发条件」「记忆读写策略」这一层
LangGraph 真实经验30%Q6–Q7 能否画出自己的图,讲清 reducer / checkpointer / 条件边
工程判断力25%Q10–Q12 指标可复现、失败处理、有取舍意识
诚实度15%简历里「拓扑排序」「被动遗忘」「上下文污染」三处玄学表述能不能讲实
红旗信号 · 任一出现即强扣分
强加分信号
使用建议

两个项目都是个人项目,指标都很漂亮。重心放在 Q7(画自己的图)Q10(评测集来源)这两道验真题上——真做过的人这两题会越问越兴奋,包装的人会在第二层追问处崩掉。

agent-interview · candidate: 汪勇 · 2026-07