NiceOffer

面试面经 · 小马智行

【小马智行】【Agent 开发】【暑期实习三面】面经(八股+大模型项目+手撕)

小马智行面经Agent 开发实习

背景

海外一年制硕士,计算机方向,主攻 LLM 应用与后端工程。此前有一段大模型创业公司实习经历,主要做 RAG 与 Agent 平台开发。三面是技术终面,整体偏系统设计与工程实践,面试官为资深后端专家,全程 1 小时,节奏快,无闲聊环节。

题目摘要

  1. Go 语言基础:goroutine 与 channel 底层实现、内存逃逸分析、sync.Pool 适用场景与坑。
  2. MySQL/Redis 八股:MVCC 原理与 RR 隔离级别下的当前读/快照读、Redis 持久化 RDB/AOF 混合策略选择、缓存穿透与布隆过滤器误判率计算。
  3. Agent 项目深挖:RAG 检索质量优化、Function Calling 的 prompt 构造与容错、多轮对话上下文管理与 token 成本控制。
  4. 手撕算法题:设计一个支持 insertdeletegetRandom 且时间复杂度 O(1) 的数据结构(LeetCode 380)。关键思路:哈希表存 value→index,数组存 value,删除时与末尾元素交换后 pop,避免数组空洞。

项目深挖

追问 1:你的 RAG 系统在检索质量上做过哪些具体优化?怎么评估收益?

参考方向:不要只答"用了 bge-m3 + faiss"。我拆成召回和重排两段。召回侧做了 query 改写(基于历史对话生成多视角子查询)和混合检索(BM25 + 向量,RRF 融合),解决专有名词与口语化 query 不匹配问题。重排侧用 cross-encoder 精排,取 top-k 截断。评估上,离线构建了 200 条业务问答集,算 Recall@5 和 MRR,在线看用户反馈率与二次检索率。面试官追问"重排模型引入的延迟怎么处理",答:重排只作用于召回 top-50,且用 batch 推理,单次延迟增加约 30ms,可接受。

追问 2:Function Calling 场景下,LLM 输出不符合 schema 时你的容错方案是什么?

参考方向:三层兜底。第一层,prompt 中给 few-shot 示例,并明确"参数缺失时输出 null 而非编造";第二层,解析层做容错,用正则抽 JSON 片段,失败则调用轻量修正模型(如 gpt-4o-mini)只做格式重写,不重新推理;第三层,业务层做参数合法性校验,非法则触发人工确认流程。面试官追问"修正模型引入额外成本怎么办",答:统计触发率约 5%,且修正模型输入输出都很短,成本占比低于 2%,换来的稳定性收益远大于成本。

追问 3:多轮对话的上下文管理策略,以及 token 成本如何优化?

参考方向:我用了三级 Context 管理——系统提示词(固定)、滚动窗口(最近 N 轮完整保留)、外部记忆(长期事实写入向量库按需检索)。成本优化做了三件事:一是对历史轮次做摘要压缩,当窗口超过阈值时触发 LLM 摘要,摘要结果缓存复用;二是对工具返回结果做截断与结构化提取,不把原始大段 JSON 塞进上下文;三是动态调整 max_tokens,根据意图分类结果给不同上限。面试官追问"摘要压缩丢失信息怎么办",答:压缩只作用在超过 10 轮之前的对话,且摘要中保留关键实体与用户明确偏好,配合外部向量记忆双写,可追溯。

准备建议

1. Go 语言复习聚焦并发模型与内存机制,别背八股,要能画图

面试官会从"goroutine 栈初始多大"一路追问到"channel 阻塞时 g 挂到哪个队列",建议把《Go 语言设计与实现》的调度器与 channel 两章啃透,画一遍 GMP 模型流转图。内存逃逸分析要能结合具体代码判断变量是否逃逸到堆上,以及逃逸对 GC 压力的影响。sync.Pool 要讲清"复用对象但 GC 可能清空池子"这个反直觉点。

2. MySQL 与 Redis 复习要带场景感,不要孤立背概念

比如 MVCC 别只讲 undo log 版本链,要能结合"RR 级别下,先快照读后当前读会不会产生幻读"这种经典场景题。Redis 持久化要能给出选择依据——RDB 适合重启恢复、AOF 适合数据安全,但两者混用时要理解重启加载顺序是先 AOF 后 RDB。缓存穿透要能现场推导布隆过滤器位数组大小与 hash 函数个数公式,而不是只说"加个布隆过滤器"。

3. Agent 项目复盘要带数据与量化指标,别停留在功能描述

简历上写了 RAG、Function Calling、上下文管理,就必须准备对应的指标:检索 Recall@K 提升多少、Function Calling 成功率、上下文压缩后 token 成本下降比例、端到端延迟变化。没有真实数据的就补一轮离线评测,把评测集和评测方法写进项目文档。面试官对"你做了什么"不感兴趣,只对"你怎么量化收益、遇到什么坑、怎么权衡取舍"感兴趣。

结果反馈

三面通过,两天后 HR 约了 offer 沟通。整体感受是这家对 Agent 工程化落地能力要求很高,纯调 prompt 的玩法过不了终面。

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