news 2026/9/28 21:25:08

AI Agent 开发三轮面试真题全解析:Function Call、MCP、RAG、多 Agent、沙箱与算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI Agent 开发三轮面试真题全解析:Function Call、MCP、RAG、多 Agent、沙箱与算法

📌 面试概览

以下答案基于本人面试录音整理,并结合个人思考与 DeepSeek 辅助完成。实际回答建议结合项目展开。

这轮面试整体问得很细,不是只问"什么是 Agent",而是会追问:

  • Function Call、MCP、Skill、Rules 到底怎么区分?
  • Agent 怎么按需调用工具,而不是乱调?
  • 长短期记忆在项目里怎么落地?
  • Agentic RAG 和传统 RAG 差在哪?
  • LangGraph 的 Memory 机制、多 Agent 拆分为何容易出错?
  • SSE、Redis、MVCC、限流、算法等后端工程能力。
  • 安全:提示词攻击、Agent 沙箱。

🟦 一面真题与解析

1. 自我介绍

建议按背景 + 项目 + 技术栈 + 结果 + 匹配度来说。

模板:面试官好,我是 XXX,过去主要做 LLM 应用/Agent 开发。项目里负责过 XXX Agent 系统,技术栈包括 Python、LangGraph、RAG、Function Call、MCP、Redis、SSE。核心做了工具调用编排、记忆系统、检索优化和多 Agent 协作。最终把任务成功率从 X% 提升到 Y%,延迟降低 Z%。我比较匹配贵司 Agent 工程化方向。

⚠️ 不要背简历,要突出和岗位相关的 Agent、RAG、工具调用、工程化经验。


2. 项目一怎么做的

用STAR 法则:

  • S:业务背景是什么?
  • T:你负责什么?
  • A:架构怎么设计?用了哪些 Agent/RAG/工具/记忆?
  • R:指标结果如何?

推荐讲清楚这条链路:用户输入 → 意图识别/路由 → Agent 规划 → 工具调用 → RAG 检索 → 记忆读写 → 结构化输出 → 评测与监控。

如果面试官追问,要能画出架构图。


3. Workflow、Agent、Skill 区别

概念本质确定性例子
Workflow预定义流程编排高DAG、状态机、SOP
AgentLLM 自主决策、规划、调用工具低到中ReAct Agent
Skill可复用能力封装中查订单、发邮件、写 SQL

一句话:Workflow 是"流程驱动",Agent 是"目标驱动",Skill 是"能力模块",可以被 Workflow 或 Agent 调用。


4. 如何提升 Agent 的 Function Call 能力

核心是:让模型更容易选对工具、填对参数、处理失败。

  • 工具描述清晰:说明用途、何时用、何时不用
  • 参数 Schema 严格:类型、枚举、必填、默认值
  • Few-shot 示例:展示正确调用
  • 工具召回:工具太多时先检索候选工具
  • 参数校验:Pydantic / JSON Schema 校验
  • 错误重试:把错误信息返回给模型
  • 权限与预算:限制可调用工具和次数
  • 评测集:统计工具选择准确率、参数准确率、任务成功率
  • 微调:通用模型不够时,可做 function call 微调

5. Agent 工具调用了解哪些方式

常见方式:OpenAI Function Calling / Tool Calling、ReAct、Plan-and-Execute、MCP、OpenAPI 转工具、LangChain Tool / LangGraph ToolNode、代码解释器、RPC/HTTP API、浏览器自动化、数据库查询工具、本地函数调用。

面试时最好说:简单任务用 Function Call,复杂任务用 ReAct 或 Plan-and-Execute,企业工具统一接 MCP。


6. 怎么保障 Agent 按需调用工具

不要让模型"想调就调",常用约束:

  • 意图路由:先判断是否需要工具
  • 工具召回:只给模型相关工具
  • 置信度阈值:低置信度先追问
  • 规则约束:某些场景禁止调用
  • 预算控制:最大工具调用次数
  • 状态机:流程节点决定可用工具
  • 后置校验:检查工具调用是否合理
  • 评测:统计过度调用、漏调用

7. Function Call、MCP、Skill 的区别

概念层次作用
Function Call模型能力模型输出结构化函数调用
MCP协议标准统一连接模型与工具/资源
Skill能力封装把工具、提示、流程、知识打包成可复用能力

举例:Function Call 是模型输出get_weather(city="北京");MCP 是通过标准协议发现并调用天气服务;Skill 是封装"出差规划"能力,内部可能调用天气、航班、酒店多个工具。


8. Skills 和 Rules 的区别?

这题当时没答好,正确理解:

  • Skill:能力包,解决"怎么做"。可包含工具、Prompt、流程、代码。
  • Rules:规则约束,解决"什么能做、什么不能做、必须怎么做"。
SkillRules
可执行约束性
扩展能力控制行为
查订单、写 SQL禁止泄露隐私、必须引用来源
被 Agent 调用写在系统提示/策略层

一句话:Skill 是"工具箱",Rules 是"交通规则"。


9. MCP 的使用场景

MCP 适合统一接入企业内外工具和资源:文件系统、数据库、Git 仓库、浏览器、SaaS 系统、内部 API、知识库、监控告警、代码执行环境。

价值:一次接入,多模型、多 Agent 复用;工具动态发现;权限和上下文标准化。


10. Agent 中的长短期记忆,实际怎么实现?

短期记忆:当前会话消息、scratchpad、LangGraph State、滑动窗口、摘要压缩。

长期记忆:向量数据库、KV 存储、知识图谱、用户画像、事件日志、定时摘要。

实现方式:

  • 短期:messages+trim_messages+ summary
  • 长期:抽取事实 → 去重 → 存向量库 → 检索注入 Prompt
  • LangGraph:checkpointer存短期,Store存长期

11. Prompt 你会怎么考量去写

结构化写 Prompt:角色、目标、上下文、工具、约束、输出格式、示例、边界、安全、评测。

即:你是谁 → 要完成什么 → 已知信息 → 可用工具及使用条件 → 禁止事项 → JSON/Markdown 输出 → Few-shot → 不知道怎么办 → 防注入 → 可迭代。


12. 记忆覆盖问题如何解决

用户偏好会变化,记忆会冲突,常用方案:时间戳(新记忆优先)、版本号、置信度、来源优先级、冲突检测、用户确认、分层存储(事实/偏好/临时)、TTL、去重合并、摘要压缩。

例如用户先说"喜欢咖啡",后说"戒咖啡了",应更新时间线,而不是简单覆盖。


13. Agentic RAG 和传统 RAG 的区别

  • 传统 RAG:一次检索 → 拼接上下文 → 生成。
  • Agentic RAG:规划 → 查询改写 → 多轮检索 → 工具调用 → 反思 → 验证 → 生成。
传统 RAGAgentic RAG
单轮多轮
固定流程动态决策
检索一次可多次检索
无反思有自我检查
适合简单问答适合复杂任务

14. RAG 的分片逻辑了解吗?

常见分片:固定长度、递归分片、按段落/标题、语义分片、父子分片、句子窗口、表格/代码特殊处理、Late Chunking。

核心原则:一个 chunk 要语义完整,能独立表达一个信息点。


15. 召回时分片不完整怎么办?

方案:父子块(子块检索,父块生成)、句子窗口、重叠分片、查询改写、多路召回、重排、摘要索引、图索引。

不要只靠单一块,最好多粒度召回。


16. 如何选择合适的切块大小和重叠长度?

没有固定答案,要看文档类型和评测。经验值:

类型建议
中文300–800 token
英文500–1000 token
重叠10%–20%
技术文档按标题
合同按条款
代码按函数/类
表格单独处理

最终用召回率、答案准确率、上下文长度来调。


17. 哪些技术可以提升 RAG 检索质量?

混合检索(BM25 + 向量)、Rerank 重排、查询改写、HyDE、多向量、元数据过滤、父子块、图 RAG、摘要索引、多路召回、评估集迭代。


18. SSE 如何实现边生成边推送?

SSE 基于 HTTP 长连接,服务端分块返回。

响应头:

Content-Type: text/event-stream Cache-Control: no-cache Connection: keep-alive X-Accel-Buffering: no

数据格式:

data: {"token":"你"} data: {"token":"好"} data: [DONE]

服务端每生成一个 token 就flush,客户端用EventSource接收。⚠️ 注意 Nginx 要关闭缓冲。


19. Redis 的 Hash 大 Key 怎么优化?

拆 key(按业务/时间分片)、字段过多拆多个 Hash、使用 HSCAN、压缩 value、大 key 删除用UNLINK、设置 TTL、监控大 key、集群分片。

⚠️ 不要一次性HGETALL。


20. 手撕:快排

defquick_sort(arr,left,right):ifleft>=right:returnpivot=arr[left]i,j=left,rightwhilei<j:whilei<jandarr[j]>=pivot:j-=1whilei<jandarr[i]<=pivot:i+=1arr[i],arr[j]=arr[j],arr[i]arr[left],arr[i]=arr[i],arr[left]quick_sort(arr,left,i-1)quick_sort(arr,i+1,right)if__name__=="__main__":nums=[5,2,9,1,5,6]quick_sort(nums,0,len(nums)-1)print(nums)

🟩 二面真题与解析

1. LangGraph 如何搭建?Memory 组件工作机制?

LangGraph 用StateGraph构建,核心四要素:State(共享状态)、Node(执行节点)、Edge(流转边)、Checkpointer(短期记忆持久化)、Store(长期记忆)。

fromlanggraph.graphimportStateGraph,START,ENDfromlanggraph.checkpoint.memoryimportMemorySaverclassState(dict):messages:listbuilder=StateGraph(State)builder.add_node("agent",agent_node)builder.add_node("tools",tool_node)builder.add_edge(START,"agent")builder.add_edge("tools","agent")graph=builder.compile(checkpointer=MemorySaver())
  • 短期记忆:按thread_id保存会话状态。
  • 长期记忆:用Store存用户偏好、事实,检索后注入上下文。

2. 为什么要拆子 Agent?

职责隔离、工具集隔离、上下文窗口控制、权限隔离、可并行、可独立评测、可复用。

例如:检索 Agent、SQL Agent、报告 Agent、审核 Agent。


3. 多 Agent 什么情况下容易出错?

通信协议不清晰、共享状态不一致、角色冲突、死循环、错误级联、工具冲突、成本失控、责任扩散、缺少全局评估。

⚠️ 多 Agent 不是越多越好,能单 Agent 解决就别拆。


4. Skill 和多 Agent 执行的区别

  • Skill:单 Agent 内调用能力,局部、确定、低成本。
  • 多 Agent:多个决策体协作,有角色、通信、编排,适合复杂任务。

一句话:Skill 是"能力扩展",多 Agent 是"组织架构"。


5. Agent 结构化输出信息是什么?

让模型按 JSON Schema 输出:

{"intent":"查询订单","tool":"get_order","args":{"order_id":"123"},"need_human":false}

实现方式:OpenAIresponse_format、Function Calling、Pydantic 校验、解析失败重试。


6. Skill 和 Memory 的沉淀怎么设计?

  • Skill 沉淀:注册表、版本、描述、参数 Schema、示例、权限、评测。
  • Memory 沉淀:抽取、去重、置信度、时间戳、TTL、检索注入、用户确认。

7. 动态 Workflow 了解吗?

  • 静态 Workflow:节点和边提前定义。
  • 动态 Workflow:LLM 运行时决定下一步、分支、循环、是否人工介入。

适合复杂任务、不确定路径、多工具协作;风险是不可控、难测试、成本高。


8. Agent 开发流程有几个环节?

场景定义 → 任务拆解 → 工具设计 → 知识/RAG → Prompt → 编排 → 记忆 → 评测 → 安全 → 部署监控 → 迭代。


9. Workflow 编排参考什么?偏确定还是自由?

参考:SOP、状态机、DAG、BPMN、LangGraph。

原则:确定优先,自由兜底。能规则解决就规则,LLM 处理模糊和开放部分。


10. 什么情况用 ReAct,什么情况用 Plan and Execute?

  • ReAct:短链路、工具反馈即时、探索型任务、边想边做。
  • Plan and Execute:复杂多步、可分解、长任务、先规划再执行。

11. Agent 怎么选择工具?

工具描述向量召回、路由模型、Function Calling、规则、权限、成本、历史成功率。

工具多时,先召回候选工具,再让模型选。


12. RAG 整体流程与不同文档分块策略

整体流程:解析 → 分块 → 向量化 → 索引 → 检索 → 重排 → 生成 → 引用。

分块策略:

文档类型分块方式
PDF版面分析、表格转 Markdown
Markdown按标题
HTML按 DOM
代码按函数/类
合同按条款
论文按章节
表格单独索引

13. 检索怎么做?生成怎么控制幻觉?

  • 检索:混合检索、多路召回、Rerank、元数据过滤、查询改写。
  • 控制幻觉:引用来源、无依据拒答、置信度、输出校验、Self-check、限制上下文。

14. 还有没有其他索引方式?

倒排索引、向量索引、图索引、摘要索引、父子索引、多向量索引、知识图谱、SQL 索引、混合索引。


15. 提示词攻击怎么防护?

攻击类型:直接注入、间接注入(RAG 文档/网页)、越狱、工具滥用。

防护手段:系统提示隔离、输入过滤、工具白名单、最小权限、输出校验、沙箱、人工确认、审计。


16. 如何设计 Agent 沙箱机制?

隔离维度:容器/微 VM、文件系统隔离、网络白名单、只读挂载、权限最小化。

资源与安全:资源限制(CPU/内存/磁盘)、执行超时、seccomp 系统调用过滤、cgroup 资源管控。

可观测:全量审计日志。

⚠️ 代码执行 Agent 必须沙箱,否则一个 Prompt 注入就能拿到宿主机。


17. ZSet 限流的瓶颈在哪?

ZSet 滑动窗口逻辑:

ZREMRANGEBYSCORE key 0 now-window ZCARD key ZADD key now member EXPIRE key window

瓶颈:热 key、大 key、内存、并发原子性、集群分片、Lua 阻塞、时钟问题。

优化:Lua 脚本、分片、令牌桶、滑动窗口简化。


18. MVCC 是什么?

多版本并发控制,核心是隐藏版本 + undo log + ReadView + 快照读 + 当前读。

MySQL InnoDB 中的差异:

  • RC:每次 SELECT 生成 ReadView;
  • RR:第一次 SELECT 生成 ReadView。

作用:读写不阻塞,提高并发。


19. SSE 和 WebSocket 的区别?

维度SSEWebSocket
通信方向单向服务器推送双向全双工
协议HTTP独立协议
数据类型文本文本/二进制
重连自动重连需自己处理
适用场景LLM 流式输出聊天、游戏、协同

LLM 流式生成一般 SSE 足够。


20. 旋转数组搜索

defsearch(nums,target):left,right=0,len(nums)-1whileleft<=right:mid=(left+right)//2ifnums[mid]==target:returnmid# 左半部分有序ifnums[left]<=nums[mid]:ifnums[left]<=target<nums[mid]:right=mid-1else:left=mid+1else:ifnums[mid]<target<=nums[right]:left=mid+1else:right=mid-1return-1

🧭 面试复盘

这轮 Agent 开发面试的特点:

  1. 不只会用框架,还要懂底层机制。
  2. Function Call、MCP、Skill、Rules 要能分清。
  3. RAG 问得很细,分块、召回、重排、幻觉控制都会追。
  4. 多 Agent 不是越多越好,要能说清拆分边界。
  5. 工程能力重要:SSE、Redis、MVCC、限流、沙箱。
  6. 算法题偏基础:快排、旋转数组搜索。

准备建议:

  • 手写一个最小 Agent;
  • 手写 Function Call 流程;
  • 用 LangGraph 搭一个带 Memory 的 Agent;
  • 做一个 RAG 评测集;
  • 了解 MCP Server/Client;
  • 复习 Redis、SSE、MVCC、限流;
  • 刷快排、二分、旋转数组。

📚 完整 Agent 面试题

另外像 AI Agent 这种面试,我有收集好的Agent 完整面试题,涵盖:

  • Function Call / MCP / Skill / Rules;
  • RAG 分块、召回、重排、评估;
  • LangGraph / Memory / 多 Agent;
  • SSE / WebSocket / Redis / MVCC;
  • Agent 沙箱与提示词攻击;
  • 手撕算法。

需要的评论区 dd,我整理好发你。


如果这篇文章对你有帮助,欢迎点赞 👍、收藏 ⭐、关注 🔔。
后续继续更新:LangGraph 实战、MCP 入门、Agentic RAG、多 Agent 协作、Agent 评测体系。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/28 21:23:40

3、热点函数定位:perf工具使用、火焰图生成与解读、采样原理

3.1 采样原理&#xff1a;为什么 perf 能“猜”得这么准&#xff1f;perf 的核心机制是采样。它不是一条一条指令去数&#xff0c;而是每隔一段时间“咔嚓”拍一张快照。比如每 1 毫秒中断一次 CPU&#xff0c;看看当前在跑什么函数。跑得越多的函数&#xff0c;被拍到的概率就…

作者头像 李华
网站建设 2026/9/28 21:21:26

昇腾NPU变长序列训练实战:从dynamic shape到variable_seq_lengths

1. 为什么“变长序列训练”在昇腾上不是加个 flag 就能跑通的事你是不是也遇到过这样的场景&#xff1a;模型结构写好了&#xff0c;数据 pipeline 也按 PyTorch 惯例做了 padding mask 处理&#xff0c;本地 CPU/GPU 上训得稳稳当当&#xff1b;一迁到昇腾 NPU 上&#xff0c…

作者头像 李华
网站建设 2026/9/28 21:21:02

MOS管为什么会炸?

MOS管为什么会炸&#xff1f; 从波形看懂几种常见失效原因 空载能启动&#xff0c;一加负载就炸&#xff1b;室温调试没问题&#xff0c;装进机箱运行一阵却烧了&#xff1b;PWM 明明留了死区&#xff0c;上下管仍然一起损坏。碰到这些现象&#xff0c;换一颗电流更大、耐压更…

作者头像 李华