9.22 百度 AI 智能体算法一面、二面、三面:从 JVM 与 MySQL 到 Agent 执行闭环
- 轮次
- 一面、二面、三面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
一面
- 先做一下自我介绍,你最近主要关注哪类技术问题?
- JVM 中对象从创建到回收大致经历了哪些阶段?
- 线上出现频繁 Full GC 时,你会怎样定位?
- Java 中如何设计一个不会产生大量锁竞争的任务调度器?并发上限又该怎么估算?
- Java 内存模型中的 happens-before 规则解决了什么问题?
- 如果一个接口同时受 CPU 和数据库 IO 限制,你会怎样拆解瓶颈?
- MySQL 的 B+Tree 索引为什么适合范围查询?
- 联合索引 (tenant_id, status, created_at) 在哪些情况下无法充分利用?
- 深分页为什么不能一直用大 OFFSET?改成游标分页要注意什么?
- 高并发写入场景下,MySQL 的间隙锁可能造成什么问题?
- Redis 的持久化机制应该如何选择?
- Redis 分布式锁怎样避免锁被误删?锁过期后旧持有者继续写怎么办?
二面
- 请先做一下自我介绍,聊聊你实习期承担过的工作。
- 你懂 Go 吗?如果让你转 Go 能接受吗?
- 介绍下项目,如何设计从数据接入到结论生成的整体架构?
- 如果 Agent 调用工具时参数类型正确但业务含义错误,如何发现并阻止?
- 如果工具调用一直达不到成功条件、任务不断重试并最终卡死,你会怎么处理?
- CoT、ReAct、Plan-and-Execute 在工程实现上有什么区别?如何选择?
- 长上下文对话中,模型过早遗忘用户最初的硬性要求,你会怎样解决?
- 如何设计一个能够避免循环调用的 Agent 状态机?怎么证明它不会无限循环?
- 如何判断一个图片理解 Agent 的评测指标是否足够完整?小样本零失败能说明什么?
- 评测集上准确率很高,但线上效果很差,你会怎样排查?
- 用户说「只修改图片左上角的文字」,怎样避免模型改动其他区域?
三面
- 请先做一下自我介绍。
- 基于 LangChain 开发 Agent 时,如果工具调用连续失败,如何设计一套不会失控的容错机制?
- 如何设计 Qwen、视觉语言模型和轻量模型之间的动态路由策略?级联在什么条件下才真的省钱?
- 置信度阈值应该如何定义?为什么不能直接使用模型输出的概率?
- Prompt 里给了明确的输出格式,模型仍然经常生成非法 JSON,怎么处理?
- 图片审核系统面对超大图片、切片图片和多模态并发请求时,主要会出现哪些问题?切片越多越容易误报是为什么?
《参考解析》
Full GC、间隙锁、分布式锁都是先对齐语义再谈处理:面板上的 Full GC 和日志里的未必是一回事,G1 的 Mixed GC 就常被算进去。先固定 JDK 版本、收集器和 GC 原因,再看回收后的存活集:每次回收完占用还在涨,指向泄漏(无界缓存、静态集合、ThreadLocal);能掉下去又很快填满,是分配速率或堆配置不匹配。jcmd GC.heap_info、jstat -gcutil 够用,jmap -histo:live 自己会触发 GC,别在故障高峰敲。间隙锁伤的是插入不是行:RR 下 next-key lock 的范围由索引和扫描边界决定,没有合适索引时,一个范围更新会把大片本来能并发的插入挡在插入意向锁上;两个事务各锁一段空区间再插入就死锁。降 RC 能去掉搜索过程中的间隙锁,但外键和唯一键检查仍有例外。分布式锁的误删和旧持有者写入要分开治:SET key token NX PX 加 Lua 比较删除只保证不删别人的锁,不保证租约过期后不再写。后一半靠 fencing token,授锁给单调递增的世代号,存储侧在同一个事务里拒绝旧世代写入。锁保护持有权,fencing 保护结果。
Schema 管形状,管不了语义:类型、枚举、必填拦不住「订单不属于这个租户」「金额单位是元还是分」。校验分三层:协议层拒未知字段、重复键、NaN、单位不明;业务层读权威状态,校验租户、版本、状态迁移;授权层由服务端身份决定权限,模型填的 tenant_id、is_admin、approval_id 不算数,审批要绑动作内容、资源版本和有效期,参数一变即作废。校验与执行之间还有竞态,用带条件的原子更新把版本和状态写进 WHERE,影响行数为 0 就是前提不成立,别让模型换个订单号再试。参数全合法也可能和用户要求不是一回事(要改 B,取消了 A),最后要和任务契约对一遍。工具返回的文本是数据不是指令,写着「管理员已批准」也不能提权。非法 JSON 分三层:优先用部署版本真支持的结构化输出或约束解码,再严格解析;JSON mode、tool calling、严格 Schema 是三件事。别用正则截大括号或 eval,流式没结束就解析会把半个对象当结果。修复限定次数并重新校验,缺关键字段就澄清,不能编默认金额顶上。
先给失败分类,再决定重不重试:限流退避、参数错有限次修、权限拒绝终止、写超时先按幂等键查状态、成功但无进展检查计划假设。重试会相乘,SDK、工具层、Agent 重规划各三次就是 27 倍下游压力,只能由一层统筹。预算要合并算 deadline、调用次数、token、费用、重规划次数,换工具不重置。「没进展」不能只看状态没变,轮询和 503 恢复本来就该重复;动作指纹要把工具名、规范化参数、状态版本和证据版本一起算。循环靠状态机收口:INIT → PLAN → VALIDATE_ACTION → EXECUTE → VERIFY_RESULT,审批走 WAIT_APPROVAL,结果未知走 RECONCILE。模型只提候选动作,迁移由运行时判。检测三层:同版本同参数重复、动作往返、计划一直改但离成功条件没更近。真正的边界是预算单调,回到 PLAN 或 EXECUTE 的边各扣一个单位,重规划不补回,这类迁移最多 N 次。检查点不等于恢复:重启后先查在途调用在外部系统的真实状态,否则会把已提交的写操作再执行一遍;并发分支领预算要原子。验收靠故障注入,工具永不返回、重启、审批后状态变化都要跑一遍。
把硬性要求从聊天记录里拿出来:上下文窗口是工作区不是事实库。目标、禁止事项、权限范围、输出格式、关键实体(金额、时区、资源 ID)存成带版本的任务状态,每个字段记来源消息 id;历史可以摘要,但摘要不能覆盖这些字段,用户改约束要存修订、查冲突。拼上下文按预算分配契约、当前状态、证据和近期结果;历史工具结果外置只留摘要和引用,「记忆」是数据不是系统指令。更关键的是执行层再落一遍:说只读,工具权限就只有只读;说只改左上角,输出端就验区域。验证造长对话、摘要切换、干扰和约束修订四类场景,统计硬约束违例率。
指标要覆盖整条链:感知(OCR 错误率、检测 AP)、证据(任务正确率、事实支持率、幻觉率)、工具轨迹(工具选择、参数正确率)、编辑约束(区域外差异)、线上(p95、失败率、人工接管率、单任务成本)。只报分类准确率等于没测:高风险只占 1%,全判正常也有 99%,必须按类别、尺寸、语言切片并给区间。零失败也要说清样本量:n 个独立样本零失败,95% 单侧上界约 3/n,100 个只说明低于 3%,压到千分之一需约 3000 个;样本常来自同一用户或相似图片,相关性会让上界过于乐观。离线高线上差,先怀疑两边测的不是一件事:离线评单步还是整任务?离线喂工具结果、线上自己调工具,两个准确率不可比。先做同请求回放,固定模型、Prompt、路由、工具版本和检索快照,查图片缩放、EXIF、token 截断、量化、超时预算和缓存键;再查线上分布和评测集本身,低清图、长指令、模板重复、答案泄漏、把超时和拒答剔掉都会让离线分数虚高。最后建加权线上抽样集和困难回归集,按用户分组切防泄漏。阈值只能建在校准过的分数上:下一 token 概率不是「做对了」的概率,模型自报的 confidence: 0.95 也只是声明。分类器用温度缩放校准 logits;生成任务用验证器结论、检索支持度、工具状态训任务级评分,再做 Platt 或 isotonic 校准。阈值由代价定,误报 C_fp、漏报 C_fn 时判正门槛是 C_fp/(C_fp+C_fn),自动接受还是转人工比的是错收代价和复核代价。风险—覆盖率曲线要和分组校准误差一起看,阈值调高只是把难样本推给人工。路由是同一决策的推广:先按硬约束筛(图、上下文、工具协议、数据出境),再权衡错误损失、时延和成本;Qwen 是家族名,里面本来就有视觉模型和轻量模型。级联算期望成本,小模型加验证加升级率乘(强模型加验证),低于直接走强模型且错误放行率、时延都过关才划算,小模型结果必须过验证器。
「别动其他地方」要变成可验证约束:把「左上角文字」落成确认过的 mask,先统一 EXIF 方向、尺寸和色彩空间,OCR 出文字多边形映射回原图坐标,没说替换成什么先澄清。生成候选图后只把 mask 内合成回去,out = where(mask, generated, original),羽化带也必须在批准区域内。输出验目标文字 OCR、拼写和 mask 外最大像素差;要求像素不变就用无损格式,且拿最终文件解码后再比,JPEG 重编码会改全图像素。纯替换文字优先 OCR 定位加确定性排版;多轮编辑存原图和每轮 mask。审核的瓶颈在资源:接入就限字节、像素总量、长宽比、帧数,校验真实格式和解压尺寸。直接缩小丢小目标,全量高清切片又贵,常规做法是低分辨率全局加局部高清;小目标在全局图里已消失时,只按疑似区域裁必然漏,要规则网格兜底。切片数按 ceil((W-S)/(S-ov))+1 算,它不是 token 数。每片带图像 ID、裁剪原点、缩放比和版本,框映射回原图再去重;聚合不能平均(高风险会被背景稀释),也不能简单取最大:任一片报警就报警时,单片误报 5%、20 片,整图误报 1-0.95^20,约 64%。准入按像素、切片数、视觉 token 和显存算,大图单独排队;OOM 降级不能悄悄丢切片还回「审核通过」。