NiceOffer

面试面经 · 文远知行

【文远知行】【Agent 开发】【暑期实习二面】面经(八股+大模型项目+手撕)

文远知行面经Agent 开发实习

背景

海外一年制硕士,本科国内中流 211 计算机,无大厂实习,投的是文远知行 Agent 开发暑期实习,简历上主要是一个自研的多轮工具调用 Agent 项目加一段小厂后端实习。整体流程是笔试 → 一面(技术)→ 二面(技术 + 交叉),这里记录二面。

题目摘要

  • Go 语言基础:slice 的底层结构、扩容规则,以及 append 在函数传参场景下的坑;顺带问了 map 是否并发安全、怎么实现一个并发安全的 map。
  • MySQL / Redis 八股:聚簇索引与回表、最左前缀原则;Redis 缓存穿透/击穿/雪崩的区别与各自解法,追问了布隆过滤器误判后怎么兜底。
  • Agent 项目深挖:RAG 检索链路、Function Calling 的工具定义与错误处理、多轮上下文怎么裁剪、推理成本怎么压。
  • 手撕算法:一道偏工程模拟的题,具体见下。
  • 开放题:如果让你给一个「自动驾驶数据标注助手」设计 Agent,你会怎么拆工具、怎么控制幻觉。

手撕算法

题意:给一个字符串形式的工具调用日志,格式类似 toolA(arg1=x,arg2=y);toolB(arg1=z),要求解析成结构化的调用序列,并实现一个「依赖去重」:如果某个工具以完全相同的参数被调用过,则第二次及以后只记录一次,但保留首次出现的顺序。输入可能包含嵌套括号(参数值里带括号),需要正确处理。

关键思路:本质是一个括号匹配 + 状态机解析,不是纯算法题,考的是边界处理。用栈记录括号层级,遇到 ( 入栈、) 出栈,只有在层级为 0 时的 ; 才是调用分隔符,层级为 1 时的 , 才是参数分隔符。解析完每个调用后,用 toolName + 排序后的参数 拼成 key 丢进 map[string]bool 去重,同时用一个 slice 保序输出。面试官追问了「参数值里带转义逗号怎么办」,我答的是解析时维护一个 inQuote 状态,遇到引号内的分隔符不切分。

项目深挖

追问一:你的 RAG 检索准确率怎么评估的?如果召回不准你从哪一层排查?

参考回答方向:不要只说「用了向量库」。要分层说——先看切分粒度是否把语义切碎,再看 embedding 模型是否匹配领域(通用模型在垂直语料上召回差是常态),再看是否只做了向量召回而没加 BM25 混合检索,最后看 rerank 阶段有没有引入。评估上要说清楚用了一个小的标注集算 Recall@k 和 MRR,而不是拍脑袋说「效果还行」。面试官明显想听你有没有真正定位过 bad case。

追问二:Function Calling 里模型返回了不存在的工具名或参数格式错误,你怎么处理?

参考回答方向:分三层。第一层在工具定义侧用 JSON Schema 严格约束参数类型和枚举值;第二层在解析侧做校验,工具名不在注册表里就直接返回结构化错误信息给模型,让它重试,而不是抛异常中断;第三层设最大重试次数(比如 2 次),超过就降级到兜底回复或转人工。要强调「把错误信息回灌给模型」这个闭环,这是 Agent 稳定性的关键,很多人只做了 try-catch 就完事。

追问三:多轮对话上下文越来越长,推理成本怎么控?

参考回答方向:几个手段组合——滑动窗口保留最近 N 轮 + 对更早的历史做摘要压缩;工具返回的超长结果(比如一大段检索文本)不进上下文,只留摘要和引用 ID,需要时再取;把 system prompt 里不变的部分做 KV Cache 复用;简单意图走小模型、复杂规划走大模型做路由。面试官追问了「摘要压缩会不会丢信息」,我答的是关键实体和用户显式约束单独抽出来结构化存储,不依赖摘要保留。

准备建议

  1. Go 别只背语法,把 slice/map/channel 的底层和并发陷阱过一遍。文远这类做基础架构和 Agent 后端的团队,Go 是主力语言,slice 扩容、map 并发写 panic、context 取消传播这几个点几乎必问,最好能手写一个带读写锁的并发安全 map。
  1. Agent 项目要能画出完整链路图并说清每个环节的失败模式。面试官不会满足于「我用了 LangChain 做了个 RAG」,会顺着检索、工具调用、上下文管理一路往下钻。提前准备好每个模块的「怎么评估、怎么定位 bad case、怎么降级」三连问。
  1. 八股按「区别 + 场景 + 兜底」三段式准备。比如缓存穿透,不要只答布隆过滤器,要补一句「布隆过滤器有误判,所以查询层还要加空值缓存兜底」。面试官爱追问「然后呢」,答到第二层就停的人会被认为背题。

结果

二面结束当天收到通过通知,约 3 天后进行交叉面(HR + 业务负责人)。

想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。