面试面经 · 旷视
【旷视】【Agent 开发】【暑期实习三面】面经(八股+大模型项目+手撕)
旷视 Agent 开发 暑期实习三面面经
背景:海外一年制硕士,投递时无正式实习经历,有 2 个校园项目和 1 个开源贡献。
题目摘要
- Go 语言基础:goroutine 与 channel 的底层实现,GMP 调度模型简述,以及 defer 的常见坑。
- MySQL 与 Redis 八股:InnoDB 索引结构(B+树)、事务隔离级别、MVCC;Redis 持久化(RDB/AOF)、缓存穿透与布隆过滤器。
- Agent 项目深挖:针对简历中的 RAG + Function Calling 项目,追问检索质量优化、工具调用失败处理、上下文窗口管理。
- 手撕算法题:合并 K 个升序链表(LeetCode 23 原题变体),要求分析时间/空间复杂度并手写可运行代码。
- 系统设计小问:如果 Agent 需要并行调用 5 个外部工具,如何设计超时与结果聚合逻辑(口述思路即可)。
项目深挖
面试官对我简历上的「基于大模型的代码审查 Agent」项目最感兴趣,围绕 RAG 和 Function Calling 连续追问了约 20 分钟。以下是几个关键追问与参考回答方向:
追问 1:你提到用 RAG 增强检索,具体怎么处理检索结果与用户问题的相关性?
追问 2:Function Calling 场景下,如果模型返回的工具参数格式错误,怎么处理?
追问 3:上下文管理怎么做的?多轮对话后 token 超限怎么办?
准备建议
- Go 语言别只背概念,要能写出并发模型。面试官让我现场画 GMP 模型图,并解释「为什么 M 阻塞时 G 会被抢占」。建议把 Go 的
sync.Mutex、atomic、channel三种同步方式的适用场景整理成对比表,并手写一个「生产者-消费者」模型(用 channel + goroutine)练手。如果简历写 Java,就准备 JVM 内存模型和 CMS/G1 垃圾回收器的区别,注意旷视内部 Go 和 Java 都有,但 Agent 组偏 Go。
- Agent 项目必须准备「失败案例」和「量化指标」。面试官一定会问「你的 RAG 有没有效果不好时候?怎么调的?」提前准备一个具体案例,比如「检索结果包含大量无关代码片段导致回答混乱」,然后描述你是怎么通过加过滤规则、调 chunk size、换 embedding 模型解决的。另外,量化指标很重要——如果你能说出「检索准确率从 78% 提到 89%,端到端回答准确率提升 12%」,面试官会认为你是真的做过而不是 demo 级项目。
- 手撕算法题要练「变体」而非原题。合并 K 个链表这道题,我准备了优先队列(堆)解法,但面试官问的是「如果链表数量极大(比如 10^5 个),优先队列内存不够怎么办」,让我现场想分治合并的优化方案。建议刷题时主动想「这个题在数据规模变化时怎么优化」,以及「如果改成分布式环境怎么设计」。另外,写代码时注意边界条件(空链表、K=0),面试官会看你有没有主动处理。
结果反馈
三面结束后 3 天收到 HR 电话,告知通过,约了 4 天后的 HR 面。整体感受是旷味面试偏工程实践,不太问纯理论八股,更关注你「遇到问题怎么解决」的思路,建议提前把项目里每个技术选型都问自己一遍「为什么这样选,有没有替代方案」。
想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。