2025 年以来,Agent 已经从“概念热词”变成了“岗位刚需”。字节、阿里、百度、腾讯的招聘 JD 里,Agent 相关的岗位数量翻了好几倍,面试官也从“你听说过 Agent 吗”进化到了“你们生产环境的 Agent 怎么做的,踩过什么坑”。

只会背概念已经远远不够了。面试官要的是你能把 Agent 的底层原理讲清楚,能把 Function Call、MCP、A2A 这些协议的关系理顺,能在系统设计题里给出落地方案。

这篇文章把 Agent 面试从底层到实战的核心考点全部梳理一遍,认真看完,面试不再怕被追问。


一、LLM 和 Agent 有什么区别?

这是最基础也最高频的面试题。面试官通常会这样问:“你们项目里用的是 LLM 直接调用还是 Agent?为什么这么选?”

LLM 的四大天花板

LLM(大语言模型)本质上是一个条件概率模型——给它一段输入 token,它预测下一个 token 最可能是什么。你可以把它当成一个无状态的函数:输入 Prompt,输出文本。每次调用都是独立的,没有记忆,没有状态,对外部世界一无所知。

但这带来了四个根本性局限:

  1. 只会说不会做——它能告诉你“你可以去天气 App 查一下”,但它自己不会去查。

  2. 没有记忆——上下文窗口一满就“失忆”,跨会话什么都没留下。

  3. 知识截止——训练数据有截止日期,昨天发生的事它不知道。

  4. 不会规划——你让它“做一份竞品分析”,它只会线性回答,不会自己拆解步骤。

Agent 是什么?

一句话:Agent = LLM + 工具 + 记忆 + 规划,在循环中自主完成目标。

用例子说明本质区别最清楚:

任务:帮我查一下明天北京的天气,如果下雨就取消我日历里的跑步计划。

  • LLM:告诉你“可以打开天气 App 查询……建议取消户外运动……”

  • Agent:调用天气 API → 查到中雨 → 调用日历 API 找到跑步计划 → 调用日历 API 删除计划 → 回复“已为您取消”

LLM 告诉你怎么做,Agent 直接帮你做完。 这就是本质区别。

面试加分点:Agent 的完整四模块

面试时别只说“Agent 就是 LLM 加工具”,要展开讲四个模块:

模块 角色 职责
LLM(大脑) 理解意图、推理判断 核心决策引擎
规划模块 任务拆解、步骤排序 把大目标拆成小步骤
记忆模块 短期上下文 + 长期知识存储 跨会话记忆
工具模块 调用外部 API、数据库、代码执行器 Agent 的“手和脚”

二、Agent 和 Workflow 有什么区别?

面试官会追问:“你说你用了 Agent,为什么不用 Workflow?如何判断一个任务该用 Agent 还是 Workflow?”

核心区别:谁在控制流程?

这两者最核心的分歧只有一点:Workflow 的控制权在代码手里,Agent 的控制权在 LLM 手里

Workflow 把流程提前写死在代码里,LLM 只是其中某些节点的处理器。每个 if/else 分支、每个步骤的顺序,都是开发者预先定义的。

Agent 接收到目标后自主规划执行路径。每一步都是 LLM 自己决定的,不在代码里写死。同一个 Agent,面对不同的任务,可能会走完全不同的路径。

量化对比

维度 Workflow Agent
控制者 代码/开发者 LLM
Token 消耗 低(约1x) 高(约4-8x)
可预测性
灵活性
适合任务 固定流程 开放式目标
调试难度 容易 困难

实际生产:混合架构最常见

别把 Workflow 和 Agent 对立起来。大多数生产系统是 Workflow + Agent 的混合架构——Workflow 提供稳定骨架,Agent 负责处理异常和复杂情况。

比如智能客服系统:简单问题走 Workflow 直接回答,复杂问题启动 Agent 自主分析决策。能说出这个,面试官就知道你做过实际项目。


三、Agent 有哪些工作模式?

面试官会问:“你了解 ReAct 吗?除了 ReAct 还有哪些 Agent 工作模式?各自的优缺点是什么?”

模式一:ReAct(推理 + 行动)

最经典的 Agent 工作模式,几乎所有主流框架(LangChain、LangGraph)的默认选择。

ReAct 的核心是一个三步循环:Thought(思考)→ Action(行动)→ Observation(观察)→ 回到 Thought,直到任务完成。

text

Thought: 用户想查北京明天天气,我需要调用天气工具
Action: get_weather(city="北京", date="明天")
Observation: {"city":"北京","weather":"中雨","temp":"14-20°C"}
Thought: 天气查到了,是中雨。我应该告诉他结果
Action: 结束,生成最终回答

  • 优点:透明可审计(每步思考看得见)、灵活适应、通用性强

  • 缺点:Token 消耗大、可能死循环、延迟高

如何防止 ReAct 死循环?(面试高频追问)

这是必考题,三个方法要能脱口而出:

  1. 最大步数限制——通常设 15 步,超过就强制终止

  2. 重复动作检测——连续 3 次调用同一个工具且参数相同,直接退出循环

  3. 超时控制——整个任务设置最大执行时间

模式二:Plan-and-Execute(先规划再执行)

ReAct 的问题是每一步都要重新思考全局,Token 消耗太大。Plan-and-Execute 的思路是:先把计划想清楚,再按计划逐步执行

Token 消耗对比:ReAct 消耗 100%,Plan-and-Execute 消耗约 20%。

模式三:Reflection(自我反思)

让一个 Agent 生成,另一个 Agent 审查,循环迭代直到质量达标。适用于代码生成、法律文书、学术论文等对输出质量要求高的场景。

面试加分:Reflection 也可以用于自我校正幻觉。当 Agent 发现自己给出的事实存疑时,可以触发“验证反思”,调用搜索工具去核实。

模式四:Multi-Agent(多智能体协作)

多个专业 Agent 协作完成复杂任务。

重要提醒:不要过早引入 Multi-Agent。一个强大的单 Agent 往往比多个简单 Agent 协作更稳定、更省钱。只有任务明确需要并行处理或专业分工时,才引入多 Agent。


四、Function Call 是什么?底层怎么实现?

面试官会问:“Function Call 和普通的 Prompt + 正则解析有什么区别?LLM 自己执行 Function Call 吗?”

关键认知:LLM 自己并不执行函数!

Function Call 是让 LLM 输出结构化的工具调用指令,再由应用程序实际执行。LLM 只告诉你“我想调用什么函数、传什么参数”,真正执行的是你的代码

Function Call 四步流程

Step 1:定义工具——告诉 LLM 有哪些工具可用(用 JSON Schema 描述工具名称、参数等)

Step 2:LLM 判断并生成调用指令——LLM 的输出不是普通文本,而是结构化的 JSON

Step 3:你的代码解析执行——拿到 LLM 的调用指令后,真正去执行函数

Step 4:把结果传回 LLM——工具执行结果传回 LLM,生成最终回答

Parallel Function Call(并行调用)

GPT-4o 和 Claude 3.5+ 都支持一次返回多个工具调用,可以并行执行。串行执行 T = T1 + T2 + T3,并行执行 T = max(T1, T2, T3),延迟大幅降低。


五、MCP 是什么协议?解决什么问题?

面试官会问:“MCP 和 Function Call 有什么本质区别?如果给团队接入 10 个外部工具,你会用 MCP 还是直接写 Function Call?”

MCP 解决的根本问题:N × M 爆炸

没有 MCP 之前,每个 AI 应用要跟每个外部服务单独写一套集成代码。3 个应用 × 3 个工具 = 9 套代码,10 个应用 × 20 个工具 = 200 套代码。

MCP 把这个问题变成了 N + M:每个应用只需接入 MCP 协议,每个工具只需实现一个 MCP Server。

MCP 架构

MCP 由三个角色组成:

  • MCP Host:你使用的 AI 应用(Claude Desktop / Cursor / 你自己的 Agent)

  • MCP Client:住在 Host 里,负责和 Server 通信的“翻译官”

  • MCP Server:对外暴露具体工具能力的服务端

MCP 的工具发现机制

这是 MCP 最强大的特性之一:Agent 启动时动态扫描所有 MCP Server,获取工具列表并注入 LLM 的上下文。

这意味着 Agent 可以在运行时动态发现新能力,不需要重新部署代码。今天加一个 Slack MCP Server,明天 Agent 就能用 Slack 的能力了。

MCP 底层协议

  • 本地通信:stdio(标准输入输出)

  • 远程通信:HTTP + SSE(Server-Sent Events,支持流式)

  • 消息格式:基于 JSON-RPC 2.0 规范


六、Function Call、MCP、Skills 三者区别与协作

面试官会问:“这三个东西我感觉都是让 Agent 能干更多事,能用一个统一的比喻讲清楚吗?”

用“新员工入职”来类比:

  • Function Call:打电话的基础能力

  • MCP:公司统一的通讯录和电话系统

  • Skills:岗位培训手册

技术层面的三维对比

Function Call MCP Skills
解决的问题 LLM 如何调用函数 工具集成标准化 领域知识编码
运行位置 你的应用程序 外部 MCP Server Agent 上下文窗口
技术本质 API 协议 通信标准 提示词扩展
标准化程度 各厂商不统一 开放统一标准 无统一标准

一句话总结:Skills 决定「怎么想」→ MCP 决定「用什么」→ Function Call 决定「怎么调」


七、A2A 协议是什么?和 MCP 的关系?

面试官会问:“MCP 和 A2A 都是协议,它们有什么区别?”

为什么需要 A2A?

MCP 解决了 Agent ↔ 工具 的连接,但没有解决 Agent ↔ Agent 的连接。

Agent A 想请求 Agent B 帮忙完成一个子任务,面临的问题:不知道 Agent B 有什么能力、不知道怎么给 Agent B 发任务、不知道 Agent B 完成没有、不同框架做的 Agent 怎么通信。

MCP vs A2A:互补而非替代

  • MCP 解决纵向问题:Agent ↔ 工具(一个 Agent 连接多个外部服务)

  • A2A 解决横向问题:Agent ↔ Agent(多个 Agent 之间协作)

两者互补,不互相替代。Agent 内部用 MCP 调工具,Agent 之间用 A2A 协作。


八、Agent 的记忆系统怎么设计?

面试官会问:“Agent 怎么实现跨会话记忆?RAG 是 Agent 记忆的一部分吗?”

记忆的两种层次

上下文窗口(In-Context Memory)——速度最快的短期记忆,存当前对话、任务状态、加载的 Skill、工具调用历史。但容量有限(通常 128K tokens)。

外部记忆(External Memory)——分三类:

存储类型 存什么 特点
向量数据库 用户偏好、历史经验 语义检索,模糊匹配
关系数据库 结构化事实、用户档案 精确查询
KV 存储(Redis) 任务状态、中间结果 极快读写,会话级别

记忆压缩策略

上下文快满的时候怎么办?三种策略:

  1. 滑动窗口——丢弃最旧的消息,保留最近 N 条

  2. 摘要压缩——用 LLM 把旧对话总结成一段话

  3. 重要性过滤——只保留关键信息,丢弃过程细节


九、Agent 的安全与可靠性如何保障?

面试官会问:“如果 Agent 要操作数据库,怎么保证它不会误删数据?什么是 Prompt Injection?怎么防御?”

核心防御:最小权限 + Human in the Loop

最小权限原则

  • 读任务只给 SELECT 权限,不给 DELETE

  • MCP Server 声明工具时限制操作范围

  • 不同环境使用不同凭证

Human in the Loop(人类审批):高风险操作暂停,请求人类确认。必须人工审批的操作:删除数据、发送外部邮件、修改权限配置、超过阈值的资金操作。

Prompt Injection 防御(面试高频)

  • 数据/指令分离——外部内容放在明确的数据区域,和系统指令区分开

  • 输入过滤——检测并标记可疑内容

  • Prompt 模板隔离——用户输入不直接拼入系统提示词

  • 上下文标记——明确标记哪些是外部数据、哪些是系统指令


十、RAG 和 Agent 是什么关系?

面试官会问:“RAG 和 Agent 有什么区别?什么时候用 RAG,什么时候用 Agent?”

RAG vs Agent

RAG Agent
目的 补充知识 完成任务
流程 固定(检索→生成) 动态(思考→行动)
工具使用 仅检索工具 任意工具
自主性

RAG 是 Agent 的一个工具

别把 RAG 和 Agent 对立起来。Agent 把 RAG 当作工具之一

  • 当 Agent 判断需要知识时 → 调用 RAG 检索工具

  • 当 Agent 判断需要操作时 → 调用 API/数据库工具

  • 当 Agent 判断需要计算时 → 调用代码执行工具

面试时说出这个关系,比单纯对比两者的区别要有深度得多。


十一、大厂真实面试追问汇总

系统设计类

Q:设计一个企业级 Agent 系统,需要考虑哪些点?

必答五个要点:

  1. 工具管理层——MCP Server 统一管理,工具权限分级,调用审计日志

  2. 记忆与状态——短期上下文管理 + 长期向量数据库 + 会话 Redis

  3. 可靠性保障——最大步数限制、超时控制、人工审批、熔断机制

  4. 可观测性——完整 Trace、Token 消耗监控、错误分类统计

  5. 安全——Prompt Injection 防御、最小权限原则、数据脱敏

Q:Agent 的 Token 消耗很大,怎么优化成本?

  • 工具选择优化——只给 Agent 真正需要的工具

  • 模式选择——简单任务用 Workflow,复杂任务用 Plan-and-Execute

  • 上下文压缩——摘要压缩历史对话

  • 模型路由——简单子任务用小模型,复杂推理才用大模型

  • 缓存——工具调用结果缓存、Prompt 缓存

工程实践类

Q:你们生产环境的 Agent 踩过什么坑?

解法
死循环:工具持续失败 Agent 反复重试 最大步数 + 相同动作检测
幻觉工具调用:调用不存在的工具 严格校验工具名,未知工具直接报错
上下文污染:历史对话影响当前判断 合理截断上下文 + 任务重置机制
Token 爆炸:工具返回超大数据 工具输出截断 + 分页策略
Prompt Injection:外部数据含恶意指令 数据/指令分离
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐