面试面经 · 蔚来
【蔚来】【大模型开发】【暑期实习一面】面经(八股+大模型项目+手撕)
海外一年制硕士,投递蔚来大模型开发暑期实习,一面约 60 分钟,技术面为主,面试官全程追问项目细节,八股只问高频且和业务相关的内容。
题目摘要
- Go 语言基础:
slice的底层结构、扩容机制,以及map并发写为什么会 panic,如何规避。 - MySQL 八股:聚簇索引与二级索引的区别,回表是怎么发生的,什么情况下会走覆盖索引;事务隔离级别里 RR 是如何通过 MVCC + 间隙锁避免幻读的。
- Redis 八股:缓存穿透、击穿、雪崩的区别与对应方案;Redis 分布式锁的续期问题,Redlock 的争议点。
- RAG / Agent 项目深挖:文档切分策略怎么定的,向量检索召回率低怎么排查,Function Calling 的 schema 设计和平行调用怎么处理,上下文超长时的裁剪与压缩策略。
- 推理成本优化:线上 QPS 上来后 token 成本怎么控,有没有做过 prompt 压缩、缓存命中、模型分级路由。
- 手撕算法:合并 K 个升序链表(LeetCode 23)。给定一个链表数组,每个链表已升序,返回合并后的升序链表。关键思路:用最小堆维护每个链表当前头节点,每次弹出最小值接到结果链表尾部,再把该节点的 next 入堆;时间复杂度 O(N log k),N 为总节点数,k 为链表数。也可以用分治两两合并,面试官会追问两种写法的取舍。
项目深挖
追问一:RAG 的召回效果怎么评估,召回率低你怎么定位?
参考回答方向:先分层定位,是切分问题、embedding 问题还是检索策略问题。切分上检查 chunk 是否把语义单元切碎,比如把一张表格或一段代码切成两半,可以改用按标题层级 + 固定窗口重叠的混合切分。embedding 上做离线评测,构造一批 query-正样本对,算 Recall@k 和 MRR,如果 embedding 模型本身对领域词不敏感,考虑换模型或做领域微调。检索策略上引入混合检索,BM25 兜底关键词,向量负责语义,再用 rerank 模型精排。回答时要给出你实际踩过的坑,比如最初 chunk size 设成 256 导致上下文断裂,调到 512 加 64 重叠后召回明显提升。
追问二:Function Calling 里模型选错工具或者参数填错,你怎么处理?
参考回答方向:分三层。第一层是 schema 设计,工具描述要写清楚适用场景和参数约束,枚举值尽量收敛,参数名避免歧义,必要时在 description 里给示例。第二层是调用校验,模型返回的 arguments 先做 JSON schema 校验,不合法就带着错误信息重试一轮,限制重试次数。第三层是兜底,如果连续失败就降级到规则匹配或直接返回澄清话术让用户补充信息。平行调用要注意工具之间是否有依赖,有依赖的必须串行,无依赖的可以并行但要在 prompt 里明确说明。
追问三:上下文越来越长,token 成本压不住,你做过哪些优化?
参考回答方向:先说清成本构成,输入 token 占大头还是输出占大头。常见手段有:对历史对话做滚动摘要,只保留最近 N 轮原文加更早内容的摘要;对 RAG 检索结果做去重和截断,只保留 top-k 且做相关性阈值过滤;对 system prompt 做精简,把固定不变的指令和动态内容分离,利用 prompt caching 命中缓存;模型分级,简单意图识别用 7B 小模型,复杂推理才走大模型。如果能给出量化结果,比如优化后单次请求平均 token 下降 40%,会更有说服力。
准备建议
- 八股只背高频且能讲透的。MySQL 就把聚簇索引、回表、覆盖索引、MVCC、间隙锁这条线串起来,Redis 就把缓存三兄弟、分布式锁、持久化讲清楚。面试官更在意你能不能把原理和业务场景连起来,而不是背定义。Go 的话把 slice、map、channel、GMP 模型过一遍,尤其是并发安全和扩容。
- 项目准备两个版本:一分钟概览和十分钟深挖。概览讲清背景、你的角色、核心指标。深挖要提前想好每个技术选型的替代方案和 trade-off,比如为什么用向量库 A 不用 B,为什么 chunk 设这个值。面试官几乎一定会问"你当时为什么这么选",答不上来会被认为只是执行者。
- 手撕算法保持手感,重点练链表、二叉树、堆、双指针。大模型岗的手撕通常不难,但要求写完整、能跑、边界处理对。合并 K 个链表这类题要能说出堆解法和分治解法的复杂度差异。面试时先讲思路再写代码,写完主动跑一个边界用例。
一面通过,三天后约了二面。
想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。