面试面经 · 大疆
【大疆】【大模型开发】【暑期实习三面】面经(八股+大模型项目+手撕)
大疆 大模型开发 暑期实习三面面经
背景:海外一年制硕士,计算机方向,一段大模型 Agent 相关项目经历,无大厂实习。
题目摘要
- Go 语言:goroutine 与 channel 的底层原理,GMP 调度模型中 P 的作用,以及如何设计一个优雅退出的 worker pool。
- MySQL:事务隔离级别、MVCC 实现原理,以及 RR(可重复读)级别下如何解决幻读(间隙锁)。
- Redis:缓存穿透、击穿、雪崩的区别与解决方案,以及 ZSET 底层跳表的时间复杂度与实现细节。
- 大模型项目深挖:RAG 检索质量优化、Function Calling 的容错与兜底、上下文窗口管理策略、推理成本优化手段。
- 手撕算法:题目——给定一个整数数组
nums和一个目标值target,找出数组中三个数之和最接近target的组合,返回这三个数的和。关键思路:排序 + 双指针,固定一个数后,左右指针向中间逼近,维护全局最小绝对差。时间复杂度 O(n²),空间复杂度 O(1)。
项目深挖
追问 1:你的 RAG 系统在检索阶段命中率不高,如何定位和优化?
参考回答方向:先拆解问题来源——是文档切分不合理(chunk 过大/过小),还是 embedding 模型选择不当,或者是查询改写缺失。我当时的做法是:第一,用真实用户 query 构建评测集,人工标注相关文档,计算 Recall@K;第二,对比了 bge-large 和 text-embedding-ada-002 在该领域数据上的表现,发现 bge 效果更好;第三,引入了 HyDE(假设性文档嵌入)和查询改写,将用户口语化表达转为更贴近文档风格的关键词组合。最终 Recall@5 从 62% 提升到 81%。
追问 2:Function Calling 场景下,模型返回了不存在的函数名或参数格式错误,你怎么处理?
参考回答方向:核心是容错设计。我做了三层兜底:第一层,在 prompt 中给出严格的 JSON Schema 示例并强调格式;第二层,解析阶段用正则提取 JSON 片段,用 json.loads 失败后尝试修复(如补全括号、去尾逗号);第三层,如果仍然失败,走人工介入或默认回复流程。另外,我加了函数名白名单校验,不在列表内直接拒绝执行。面试官可能追问"为什么不直接让模型重试",可以回答:重试会增加一次 LLM 调用,成本和延迟翻倍,只在置信度低时重试一次。
追问 3:上下文管理上,你怎么控制 token 成本?
参考回答方向:我用了分层策略。历史消息超过阈值后,将早期消息做摘要压缩,保留最近 N 轮完整消息;对于工具调用结果,只保留关键字段而非完整返回;同时利用 Function Calling 的 description 字段引导模型只提取必要信息。另外,对长文档用滑动窗口 + 关键句抽取,而不是全量塞入。实测 token 消耗降低了约 40%,响应延迟从 3.2s 降到 2.1s。
准备建议
- 把项目里的每个技术选型都准备好"为什么"和"如果不这样会怎样"。大疆面试官非常喜欢追问细节,比如"为什么用 Redis 缓存而不是本地内存""为什么选这个 embedding 模型"。建议把项目拆成 5-6 个模块,每个模块写一段 200 字左右的说明,包含痛点、方案、效果数据。
- 手撕算法按 LeetCode Hot 100 + 面试高频题准备,重点练双指针、滑动窗口、二叉树、动态规划四类。大疆的算法题难度中等偏易,但要求边写边讲思路,建议练习时用"先说思路-再写代码-最后测试用例"的节奏。
- 准备 2-3 个关于大模型行业的问题,比如"如何看待开源模型 vs 闭源模型""Agent 落地的最大瓶颈是什么"。大疆面试官会考察你对技术趋势的判断,不需要标准答案,但要有自己的逻辑框架。可以提前看几篇关于 LLM 推理优化和 Agent 可靠性的文章,形成观点。
结果反馈
一面通过,约一周后收到二面通知。
想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。