面试面经 · 百度
【百度】【Agent 开发】【暑期实习三面】面经(八股+大模型项目+手撕)
百度 Agent 开发 暑期实习三面面经
背景
海外一年制硕士在读,投递百度 Agent 开发方向,此前已通过两轮技术面,三面为部门技术负责人面,整体节奏偏工程落地与系统设计,算法题难度中等,追问密度高。
题目摘要
- Go 语言基础:GMP 调度模型中的抢占式调度机制,以及
chan底层数据结构(hchan 的字段构成、sendq/recvq 队列作用)。 - MySQL/Redis 八股:MySQL 可重复读隔离级别下间隙锁如何避免幻读;Redis 的
ZSET底层跳跃表在插入和范围查询时的平均时间复杂度。 - 大模型项目深挖:基于开源 LLM 搭建的客服 Agent,追问集中在 RAG 检索质量优化、Function Calling 的容错设计、多轮对话上下文裁剪策略。
- 推理成本优化:在保证效果前提下,如何降低单次请求的 token 消耗与首字延迟。
- 手撕算法题:题目大意:给定一个有序整数数组(可能含重复值)和一个目标值,返回目标值在数组中出现的第一个和最后一个位置,若不存在则返回
[-1, -1]。要求时间复杂度 O(log n)。关键思路:分别用两次二分查找,第一次找左边界(nums[mid] >= target时收缩右边界),第二次找右边界(nums[mid] <= target时收缩左边界),注意边界条件与死循环规避(建议左闭右开写法)。
项目深挖
追问 1:你的 RAG 管道在检索召回率不足时,如何做系统性优化?
参考回答方向:先定位瓶颈在召回还是重排。召回侧做查询改写(HyDE 或生成子问题)、混合检索(BM25 + 向量检索,按分数加权融合);重排侧用 cross-encoder 精排,并设定动态阈值过滤低分片段。同时建立评测集,用 recall@k 和 answer relevance 两个指标量化每次改动收益,避免凭感觉调参。
追问 2:Function Calling 场景下,如果模型输出的 JSON 参数不合法或调用顺序错误,你的系统如何兜底?
参考回答方向:分三层兜底。第一层,在 prompt 中给出严格的 JSON Schema 示例,并要求模型先输出"是否需要调用工具"的思考标记;第二层,代码侧对模型输出做正则预检 + 容错解析(如修复缺引号、截断多余内容),解析失败则进入重试机制(带错误信息让模型重新生成);第三层,若连续两次失败,则放弃工具调用,转为纯文本推理回复用户,保证主流程可用性。
追问 3:多轮对话中上下文长度增长很快,你如何管理历史消息?
参考回答方向:采用分层策略——系统提示词固定不变,最近 2 轮完整保留,更早的历史做摘要压缩(用 LLM 将旧对话总结为结构化要点),同时为每个用户 session 维护 token 预算,超限时优先丢弃与当前意图无关的历史(基于 embedding 相似度判断)。另外,对工具调用结果只保留关键字段摘要,不存原始长文本。
准备建议
- 把项目里的每一个设计决策都量化。面试官不关心你用了什么框架,而是问你"为什么选这个方案""有没有对比过其他方案""效果提升了多少"。建议提前整理一张表格,列出每个模块的备选方案、实验指标、最终选择理由,哪怕只是粗略数字也比空口说"效果好"强。
- 手撕算法按"中等偏上"难度准备。百度的手撕题不会出偏题怪题,但很爱在边界条件上挖坑。建议把二分查找类(左右边界、旋转数组)、链表类(反转、环检测)、TopK 问题写熟练,必须做到 bug-free,并且能讲清楚为什么这样写不会死循环。
- 熟记语言底层机制的一两个细节。Go 或 Java 至少准备一个能展开讲 3 分钟的底层话题,例如 Go 的 GMP 调度、
chan阻塞唤醒流程,或 Java 的 synchronized 锁升级、ConcurrentHashMap 的扩容机制。面试官一旦深挖,要能说出源码级细节,而不是停留在概念层面。
结果反馈
三面通过,约一周后收到 HR 电话沟通 offer 意向,整体流程推进较快。
想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。