蚂蚁集团 AI Agent 应用面经:12 道题的回答思路与追问方向
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 介绍自己,重点说明 Agent 相关技术经历。
- 挑选一个代表性 Agent 项目,说明业务方案与落地效果。
- 说说 Agent 记忆用 Markdown 维护的理由,对比它和 RAG 的差异。
- 多 Agent 协作相比 Workflow,优势体现在哪里?
- 无人工审核场景,如何保障 Agent 自动执行稳定?
- 讲解大模型工具调用原理,以及工具的选型思路。
- MCP 是什么,调用失败时重试、降级方案如何设计?
- 中心调度 Agent 怎样完成任务拆解、分发与结果汇总?
- 说说 KV Cache 在大模型推理中起到的作用。
- MySQL 索引优先选用 B+ 树的原因,对比 B 树的区别。
- Python GIL 是什么,解释多线程不能跑满多核的原因。
- 手撕:基于数组实现栈,实现 O(1) 获取最小值,兼顾线程安全。
《参考解析》
这组题在考什么:前 8 题是 Agent 工程的完整链路——记忆、协作、稳定性、工具、协议、编排;后 4 题是后端与语言基础。回答时不要每题孤立地背,尽量用同一个项目贯穿:讲到记忆就落到你项目里存了什么、为什么这么存;讲到多 Agent 就落到你拆了哪几个角色、怎么防止互相污染;讲到稳定性就给出具体的预算、熔断和兜底。面试官通常会在你的回答里挑一个点继续追问,所以每个数字和方案都要能往下讲两层。
项目介绍与落地效果:用「业务问题 → 方案 → 取舍 → 结果」四段式。业务问题要具体(比如客服工单处理慢、面试复盘要人工整理),方案讲清 Agent 在链路里的位置(是替代人、辅助人还是只做信息聚合),取舍讲你放弃了什么(比如为了保证可控放弃了全自动,改成人工确认关键动作),结果给可验证的指标(处理时长、一次通过率、人工接管率、成本)。没有线上数据就用离线评测或压测数据,并说明口径。
Markdown 记忆 vs RAG:一句话区分——记忆是「当前这件事的状态」,RAG 是「过去积累的知识」。Markdown 适合存目标、计划、约束、用户偏好和已确认事实,优点是模型能整块读到、人和程序都能改、diff 可审计;RAG 适合存文档和案例,优点是容量大、按需召回。追问通常会问「为什么不用向量库存记忆」:因为记忆要求强一致和可编辑,向量检索是近似召回,会把已经否决的方案又捞回来;反过来,知识库要求覆盖面,塞进上下文会爆 token。两者结合的方式是「记忆里存引用,正文放 RAG」。
多 Agent 与 Workflow:先说结论——不是所有场景都该上多 Agent。Workflow 的每一步可预测、可测试、成本固定,适合流程稳定、合规要求高的业务;多 Agent 适合任务开放、需要探索和动态分工的场景。多 Agent 的优势是「专业化 + 隔离」:不同角色用不同的提示词、工具和上下文,减少单 Agent 的上下文污染,也能并行。代价是通信成本、结果不一致和调试困难,所以生产上常见的是「外层 Workflow 管阶段,内层 Agent 管执行」。
无人审核的稳定性:按「事前约束、事中控制、事后兜底」组织答案。事前:结构化输出、工具白名单、最小权限、危险动作强制确认;事中:最大轮次、token 预算、超时、连续失败熔断、幂等键;事后:全链路 trace、离线评测集、线上灰度、失败样本回流。再补一句「程序做确定性校验,模型只做判断」,比如金额、权限、状态流转必须由代码校验,不能只看模型说「可以」。
工具调用原理与选型:模型输出结构化的工具名和参数,运行时校验后执行,把结果作为工具消息回填,模型再决定下一步。选型看「必要性、稳定性、可观测性、权限成本」:能用确定性代码解决的不要包成工具;输入输出要能用 schema 约束;失败要能区分可重试与不可重试;工具描述要像 API 文档一样精确。工具数量多时要做路由或分组,否则模型选错率会上升。
MCP 与重试降级:MCP 是标准化协议,让工具一次实现、多客户端复用。失败处理:只对幂等操作重试,指数退避加抖动,设最大次数;连续失败熔断,避免拖垮上游;降级到缓存、备用工具或结构化错误,让模型改走别的路径;所有调用记 trace,按工具统计成功率与延迟。写操作必须带幂等键,重试前先查状态。
中心调度的拆解与汇总:拆解用计划树或 DAG,标注依赖、输入输出和验收标准;分发按能力路由,能并行就并行;汇总时只收结构化结论和引用,避免上下文爆炸,冲突用证据强度或二次裁决解决。要能局部重跑,失败子任务不能拖垮整条链路。
KV Cache:自回归生成时缓存历史 token 的 K/V,decode 阶段只算新 token,避免每步重算整个序列,降低延迟和算力;代价是显存随序列增长,所以有分页、量化和前缀复用等优化。
B+ 树:非叶子节点只存键、扇出大、树矮,减少磁盘 I/O;数据都在叶子且叶子有链表,范围扫描高效;查询路径等长,性能稳定。B 树节点存数据,扇出小、范围查询要跨节点回溯。
GIL:CPython 的全局解释器锁让同一时刻只有一个线程执行字节码,CPU 密集多线程无法利用多核;I/O 阻塞时会释放 GIL,所以 I/O 密集仍有效;CPU 密集用多进程或把计算下沉到释放 GIL 的 C 扩展。
手撕最小栈:辅助栈同步存当前最小值,push 时压 min(x, 当前最小),pop 时两栈同弹,getMin() 读辅助栈顶;线程安全用 ReentrantLock 包住三个方法,保证主栈与辅助栈一起更新。空栈要定义行为,Integer 比较用 equals。