NiceOffer

面试面经 · 唯品会

【唯品会】【大模型开发】【暑期实习一面】面经(八股+大模型项目+手撕)

唯品会面经大模型开发实习

唯品会 大模型开发 暑期实习一面面经

背景:海外一年制硕士,一段大模型 Agent 相关课程项目,一段小厂 NLP 实习,投递唯品会广州总部大模型开发岗,面试时长约 55 分钟。

题目摘要

  1. Go 语言基础:goroutine 和 channel 的底层原理,GMP 模型简述,如何避免 goroutine 泄漏。
  2. MySQL 与 Redis 八股:InnoDB 的 B+ 树索引结构、最左前缀原则;Redis 缓存穿透/击穿/雪崩的区分与解决方案。
  3. Agent 项目深挖:RAG 的检索链路(embedding 模型选择、chunk 策略、重排序),Function Calling 的触发机制与错误恢复,上下文窗口管理策略。
  4. 推理成本优化:针对项目中的 token 消耗,具体采用了哪些手段降低单次请求成本。
  5. 手撕算法题合并区间(LeetCode 56 变体)。题意:给定若干可能重叠的区间,返回合并后的不重叠区间列表,要求按起点升序输出。关键思路:先按区间起点排序,遍历时维护当前合并区间的终点 end,若当前区间起点 <= end 则合并(更新 end 为两者较大值),否则将当前合并区间加入结果并重置。时间复杂度 O(n log n),空间复杂度 O(n)(结果数组)。

项目深挖

追问 1:你的 RAG 检索为什么用 bge-large-zh 而不是 OpenAI embedding?

参考回答方向:对比过两者在中文长文本检索任务上的效果,bge-large-zh 在领域内测试集上 Recall@5 高约 3 个百分点;同时考虑到数据隐私,内部知识库不能走外部 API。可以补充说明当时做了简单的评估集(约 200 条问答对)来量化对比,而非拍脑袋选择。

追问 2:Function Calling 触发后,模型返回的参数不符合 JSON schema 怎么办?

参考回答方向:分两层处理。第一层是模型侧,在 system prompt 中给出强约束的 few-shot 示例,并设置 temperature=0 降低随机性;第二层是工程侧,对返回文本做容错解析(如提取大括号内内容、修复尾逗号、缺失引号),解析失败则降级为纯文本回复并记录日志用于后续迭代。如果多次失败,会触发一次「重试 + 简化工具描述」的逻辑,减少工具参数数量以降低出错率。

追问 3:上下文管理具体怎么做的?

参考回答方向:采用「滑动窗口 + 关键信息摘要」的双层策略。原始对话超过 8k token 时,将最早的部分用 LLM 生成 300 字以内的摘要压缩进上下文;同时对于工具调用记录,只保留最近的 3 轮完整参数,更早的只保留工具名和状态。另外设置了 token 预算监控,预估超限时主动触发压缩,而不是等请求失败再处理。

准备建议

  1. 八股要结合场景答,不要背定义。比如 MySQL 索引题,面试官会追问「如果查询条件里有 LIKE '%abc' 会走索引吗」,Redis 缓存题会问「你的项目里穿透是怎么发生的,怎么避免」。建议把每个八股知识点都准备一个「项目里用到/没用到但可以怎么用」的例子。
  2. Agent 项目必须准备数据支撑。面试官会追问「你的 chunk 大小为什么选 512」「重排序提升了多少准确率」「压缩上下文后回答质量下降了多少」。提前跑几个实验,哪怕是小规模测试,也要能说出具体数字。
  3. 手撕题别只刷高频,要练变体。这次合并区间看似简单,但面试官在写完后又追问了「如果区间是流式输入的,怎么处理」,考察是否理解排序的必要性以及能否改用优先队列。建议每道题刷完后思考至少一个变体场景。

结果反馈

一面通过,约 2 天后收到二面通知,二面为技术交叉面,大概率会深入问 Agent 的工程落地细节。

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