蚂蚁集团智能体一面:从 MCP Client 问到知识图谱,60 个问题一路追到设计动机
- 轮次
- 一面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 请简单介绍一下自己。
- 你硕士期间是不需要发表小论文的吗?
- 你现在是回学校准备秋招吗?
- 能不能具体讲一下 Agent 是怎么实现的?
- 你的实现主要是一个 Skill 吗?
- 为什么要把 MCP 的目录传给 Agent?
- MCP 需要提前安装并连接 Server;如果只传一个 MCP 列表、Agent 又没有主动连接 Server,它是怎么调通工具的?
- 具体什么叫 MCP Client?能不能讲讲它是怎么实现、怎么工作的?
- MCP 是在运行期间主动连接 Server 的吗?
- MCP Client 是什么,是你们做的工具吗?它之前已经安装好并在「双态」那边连上了吗?
- 所以它可以理解为一个通用的 MCP 功能吗?
- 如果大模型通过统一的 Center 看不到 MCP 工具名称和入参,怎么保证它能正确组装参数?
- MCP Client 会把所有工具都取回来吗?大模型又是怎么拿到这些工具信息的?
- 如果 query 里才给 MCP name,怎么确保大模型会调用 MCP Client 并拿到对应的 tools?它的上下文里是不是没有 MCP 工具信息?
- 大模型怎么知道要调用本地 Client?是否需要先通过 MCP Client 请求对应的 tools,再组装参数?
- 你在 Skill 里给它设定了一些上下文信息吗?
- 为什么要通过 MCP 获取信息?MCP Center 这个设计是怎么考虑的?
- 为什么不把 MCP 获取回来的信息写在 SQL 里,而要经过 MCP 层?
- 为什么不把远程信息直接写在 Skill 里,还要通过 MCP 绕一圈?这个设计的考虑是什么?
- 二次请求应该不会再经过 MCP Server 吧?所以走一次 MCP Center 是为了这个考虑吗?是出于上下文长度的考虑吗?
- 大模型是在什么时候调用你们的 API?
- 是在 query 里主动指定要用这个 Skill,或者指定用 SQL 排查问题吗?
- 大模型 request 里的 Skill、MCP、System Prompt 和 User Prompt 是怎么组装的?
- 撇开 Agent 项目不谈,Anthropic 或 OpenAI 的 API request 具体怎么组装、怎么调用?请求内容只有这些吗?
- 大模型返回时,在哪个字段说明要调用什么 tool、传什么参数?response 通常有哪些结构?
- 你这边没有特别关心过 response 结构吗?
- 你在 2025 年 6 月和 10 月做过基于 LangGraph 的事情吗?
- Graph 的正常开发流程是什么样的?
- LangGraph 的各个节点怎么拼装、怎么调用?具体怎么拼成一个 LangGraph?
- 你们编排了几个 Agent、几个 LangGraph 节点?2025 年 6 月到 11 月的 LangGraph 里有多少个节点?
- 向量检索的目的是什么?召回方式有很多,为什么用向量检索?
- 向量检索库承载什么功能?
- 你们的库里存放多少信息,大概多少条数据?放的是 20 条数据吗?
- 这是必做的设计吗?如果只有 6 条或 20 条数据,还需要用向量检索吗?
- 考虑未来使用增长,增长情况大概有哪些?用户平常每天会存多少数据,或者每隔多久存多少?
- 「商家库版本」是什么概念?
- 工作流编排、工作流名称和描述是放在向量库里吗?
- 正常使用时不就一个版本吗?会同时有三四个版本吗?
- 为什么要用向量数据库?
- 后面的人会不断叠加工作流,运行时再把工作流召回吗?
- 你们是预设模板吗?用户怎么新增节点、动态编排?如果没有匹配的模板怎么办?
- 如果现有流程不满足需求,用户能做什么?
- 用户拖拽并校验完新的工作流后,点击保存会存到向量库还是新的数据库里?
- 什么情况下会用知识图谱?当时为什么选择它?
- 为什么目前(比如到 2026 年的 Agent)知识图谱用得比较少?
- 百度实习时好像也没有用知识图谱;诊断场景没有用吗?
- 2026 年的知识构建和图谱抽取中,什么样的知识需要用知识图谱构建?
- 大模型的请求怎么样在知识图谱里变成确定性的搜索?
- 为什么不把所有信息直接放在向量库里?
- 知识一般用 RAG、从向量数据库召回就可以了吧?那为什么你说的这些知识不能通过 RAG 召回?
- 大模型读了 SOP 不就已经构建联系了吗?为什么还需要通过知识库构建联系?
- 知识图谱相比大模型自己去找,优势在哪里?
- 你们的知识图谱大概几跳?也就两跳吧?那大模型自己也能跳两跳吗?
- 你们当时主要是考虑大模型的耗时和 token 吗?
- 知识图谱检索准确率有多少?80% 多是怎么算出来的,你们怎么看这个数据?
- 如果要提升准确率,除了刚才提到的办法和知识清洗,还有什么方法?
- 你们组目前对知识图谱的改进主要就这两种吗?数据准备怎么清洗?
- 你们的数据不是还挺大的吗?从数据清洗到训练模型的决策是怎么得出来的?主要考虑的是训练成本,而不是清洗过程中遇到了什么问题吧?
- 你那边有没有什么需要问的?
- 这一块应该不用我介绍吧?你在百度这样的公司实习过,应该有不少经验吧?
《参考解析》
60 个问题不是 60 个知识点,是一条追问链
三块内容看着跨度很大——MCP 与 Skill、LangGraph 与向量检索、知识图谱与训练成本——其实是同一种问法:先让你讲实现,再一层层问「为什么这么设计、换个做法行不行、在你这点数据量上还成立吗」。大量「对吧?」不是让你点头,是给你一个台阶,你确认了他就往下挖一层。应对这种面,把每个设计说成「取舍 + 边界条件」,比背架构图有用得多。
MCP Client 与工具上下文:谁在什么时候把 tools 放进请求
这块要讲清三个动作。第一是发现:Client 连上 Server 后取工具清单,拿到工具名、描述和参数的 JSON Schema。第二是注入:工具定义是随 request 一起发过去的(放在请求的 tools 字段里),不是写在用户 prompt 里,模型看到的是结构化的能力列表而不是一段散文。第三是调用与回灌:模型返回一个 tool call,里面是工具名和参数 JSON,由 Client 真正执行,结果作为工具结果消息追加进对话,再发起下一轮。
面试官连追的正是这条链最含糊的接缝:只在 query 里给了一个 MCP name,模型上下文里既没有工具名也没有入参 schema,它凭什么正确组装参数?唯一站得住的答案是「必须有一刻把 schema 取回来放进 tools」,否则就是让模型猜参数名,不可靠也没法校验。他接着问「为什么不把取回来的信息写进 SQL、不直接写进 Skill」,考的是单一来源:写死之后工具一升级,提示词里的描述就静默过期,而且没有任何地方会报错;经过 MCP 层是为了让能力描述跟着 Server 走,我们能改的只有调度策略,不是把远端契约抄一份到本地。二次请求不再经过 Server 那问要答得干净:会话内可以缓存工具清单,但要能说出缓存有效期与失效条件,而不是「应该不会吧」。
为什么用向量库,而不是直接塞进 prompt
这一串问了七八遍:多少条数据、20 条也要用向量检索吗、未来增长多少、为什么不放 SQL、为什么要用向量数据库。诚实的顺序是先承认边界:如果现在只有 6 到 20 条、结构固定、更新不频繁,塞进 prompt 或者查 SQL 都更简单、更准、更便宜。再讲为什么还是引入:条目会随用户叠加工作流线性增长,条目本身是自然语言描述而不是严格字段,召回要按语义相近而不是字面相等,而且上下文预算有限不可能全塞。
更关键的是把「向量库承载什么」说清楚:它承载候选筛选,不承载事实来源。流程是先召回 top-k,再用结构化字段(版本、状态、权限)过滤,最后取正文。被问「商家库版本」「会不会同时有三四个版本」时,要说明版本是元数据、参与过滤,不是靠相似度区分——这一句能挡掉后面一半的追问。最后给量化边界:涨到多少条、查询延迟要求多少、召回率掉多少就必须上,把「为了将来」这种空话换成一个可验证的阈值。
知识图谱相对 RAG 的边界
追问路径很典型:什么情况下用图谱、为什么现在 Agent 里用得少、两跳而已大模型自己也能跳、那是不是只省了 token 和耗时。别吹图谱,讲边界:RAG 擅长找到相关的一段文字,不擅长表达多实体之间的确定关系与约束;图谱擅长的是关系显式、可枚举、可校验,以及跳数可控(两三跳)且要求结果确定、可解释、可审计的场景,比如设备与部件的从属、故障码到处置步骤的映射。
「大模型自己也能跳两跳」的代价是不稳定:同样输入两次结果可能不同,跳错一步无法定位,每次还得把候选文本整段读进上下文。图谱的收益是把这一步变成一次确定性的图查询,省 token 和耗时只是副产品,真正的价值是可复现、可追责。同时主动交代成本:图谱要建、要清洗、要维护 schema,抽取错了会一路传下去,所以只在「关系稳定 + 查询高频 + 错了代价大」时才划算。准确率那题要能说清口径:多少条标注样本、命中判定标准是什么、无法判定的 case 有没有排除——说不清定义的数字等于没有数字。
被一层层追问设计动机时怎么应对
三个动作。一是把「当时的选择」和「现在的最优解」分开:「当时只有 20 条,先上向量库是给增长留余量;如果重做,我会先用 SQL 加规则,到几百条再切。」这比硬撑体面,也比顺着面试官改口可信。二是不确定就说不确定,但给验证方式:「这个我没测过,要验证我会做 A/B,看召回率和端到端成功率」,把「不知道」变成「知道怎么知道」。三是被指出问题时先接住再补证据,不辩解:「你说得对,这里确实没考虑并发写入,当时写入是单线程批处理,所以没暴露。」整场里那些「对吧」的引导,该确认的确认,该补充的补充——他要看的是你有没有自己的判断,而不是能不能一路点头到底。