NiceOffer

面试面经 · 蔚来

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

蔚来面经Agent 开发实习

海外一年制硕士,投的是蔚来 Agent 开发暑期实习,三面走完,整体节奏偏工程落地,八股问得不深但很挑细节,项目部分追问密度最高。

题目摘要

  1. Go 语言基础slice 底层结构、扩容策略、append 后原切片是否受影响;map 是否并发安全、为什么、怎么改成并发安全;defer 执行顺序与返回值的关系。
  2. MySQL:聚簇索引与二级索引的区别,回表过程;explaintype 字段常见取值含义;事务隔离级别与 MVCC 的关系,RR 下能否完全避免幻读。
  3. Redis:缓存穿透/击穿/雪崩的区分与各自解法;zset 底层跳表 + 哈希表的结构,为什么不用红黑树;分布式锁用 setnx 会有什么问题。
  4. Agent 项目深挖:RAG 检索链路中 chunk 切分策略、召回后如何重排;Function Calling 的 schema 设计、多工具选择与失败重试;多轮对话上下文怎么管理、超长上下文如何压缩;推理成本优化手段(缓存、模型分级、prompt 精简)。
  5. 手撕算法:给一个字符串数组,要求把互为字母异位词(anagram)的单词分组返回。关键思路是排序后作为哈希 key,或统计 26 个字母频次编码成 key,遍历一次即可,时间复杂度 O(n·k log k) 或 O(n·k)。

项目深挖

追问一:RAG 召回效果不好,你怎么定位和优化?

参考回答方向:先分层定位,是召回阶段漏了还是排序阶段排错了。召回层看 chunk 切分是否把语义切碎,可以对比固定长度切分和按语义/标题切分的效果;再看 embedding 模型是否匹配领域语料。排序层可以加 rerank 模型,把 top-k 从 5 放大到 20 再重排到 5。最后用一组标注好的 query-answer 对做离线评测,量化 recall@k 和 MRR,避免凭感觉调参。

追问二:Function Calling 里模型选错工具或参数填错怎么办?

参考回答方向:schema 描述要写清楚每个参数的语义和取值范围,别只写类型;工具数量多时做分层路由,先让模型选类别再选具体工具,降低单次决策难度。执行层加校验,参数不合法直接返回结构化错误让模型重试,设置最大重试次数防止死循环。同时记录每次调用的入参和结果,方便回溯是模型问题还是工具本身问题。

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

参考回答方向:分几层做。短期用滑动窗口保留最近若干轮,长期把历史对话做摘要压缩成一段 system 提示;对重复出现的背景信息做缓存,比如把稳定不变的系统提示和工具定义放到 prompt 前缀,利用 prefix caching 降低重复计算。模型层面做分级,简单意图识别用小模型,复杂推理再走大模型。最后监控 token 消耗,按会话维度统计,找出异常长的会话针对性优化。

准备建议

  1. 把项目里的每个技术选型都问自己一遍"为什么不用另一个"。面试官很少问"你做了什么",更多问"你为什么这么做、有没有别的方案、效果差多少"。提前准备好对照组数据,哪怕是粗略的离线指标也比空口说好。
  2. 八股按链路串起来背,别孤立记点。比如从一条 SQL 出发,讲清走不走索引、回表几次、事务怎么加锁、缓存怎么配合,把 MySQL 和 Redis 的知识点连成一条线,被追问时不容易断。
  3. 手撕题控制节奏,先讲思路再写。面试官更看重沟通和边界处理,写完主动说清时间空间复杂度,再补几个边界 case(空数组、单元素、大小写),比闷头写完更有加分。

三面结束当天收到口头通过,约一周后走 HR 流程。

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