面灵AI→

快手 AI 应用二面:Agent 框架自研取舍、Skill 效果评估与 MVCC 版本链

轮次
二面
时间
2026-10
来源
牛客网

《面试题目》

  1. 请做一个自我介绍。
  2. 介绍一下实习项目,以及你负责的工作。
  3. Agent 采用什么架构?使用开源框架还是自研框架?
  4. 对 Agent 框架做过哪些优化?
  5. 竞品调研看过哪些竞品?
  6. 如何评估 Skill 的效果?
  7. 你认为什么是一个好的 Skill?
  8. 发现异常指标后,如何进一步分析问题?
  9. 诊断操作会不会影响线上服务的稳定性?
  10. 有 RAG 相关的项目经验吗?
  11. 介绍一下其他项目,有哪些难点,是怎么解决的?
  12. 遇到容器部署相关的难点,是怎么解决的?有通过 AI 解决这些问题吗?
  13. 了解 MySQL 的 MVCC 吗?它具体解决什么问题?
  14. MVCC 下,一条记录的多个版本是怎么连接在一起的?
  15. 手写最接近的三数之和,并说明思路。

《参考解析》

「开源还是自研」不要答成立场题,答成边界题。 稳妥的说法是先划清哪些必须自己写、哪些坚决用开源:模型调用、上下文拼装、工具协议这些通用能力直接用开源基座(LangGraph、ADK 之类)省时间;真正自研的是跟业务强绑的部分——工具集与权限、状态机与重试策略、评测与可观测。判断依据是瓶颈在哪:如果问题是「模型不会用工具」,改自研调度层收益有限;如果问题是「业务闭环跑不通、失败无法恢复」,那必须在编排层自己动手。面试官接着问「做过哪些优化」,就要给出可量化的三档:上下文(历史裁剪与摘要、稳定前缀复用、工具返回结果截断)、工具调用(schema 精简到必要字段、报错信息回传给模型让它自纠、可并行的工具并行发)、成本与延迟(按难度路由到不同模型、流式输出、缓存命中率)。每一档都配一个改前改后的指标,比罗列优化点有说服力。

Skill 的效果评估要分离线与线上两层。 离线建一组带标准答案的任务集,覆盖正常路径、边界输入和「不该触发」的负例,看端到端成功率、平均工具调用轮数、token 成本;线上看触发率、完成率、人工接管率、以及用户是否在它之后又问了一遍(重复提问率高通常说明 Skill 没解决问题)。只看「模型说它做完了」是最常见的坑,必须有程序可验证的验收条件。至于「什么是好的 Skill」,可以落到五条:触发边界清晰(写得清什么时候不该用)、输入输出契约稳定、失败可恢复(工具报错能被读懂并重试或降级)、可组合、维护成本低——提示词短、改一次不用连带改五个地方。

「诊断会不会影响线上稳定性」这题考的是运维分寸,不是技术。 正确的姿势是默认只读:日志走副本或采样、指标查询加时间范围与限流、链路追踪按 trace id 精确捞,绝不在生产上直接改配置做对照实验。需要复现就在隔离环境重放流量;确实要在线上验证的,先小流量灰度、带 kill switch、设超时与熔断,并且让诊断工具本身有配额,避免一次排查把数据库拖垮。异常指标的分析路径也要说清:先确认是量变还是率变、再按版本、机型、渠道、地域、时间段分层拆,把拐点对齐到发布与配置变更时间线,最后才谈假设。先分层后归因,能避免一上来就猜某个模块。

MVCC 的版本链是必背细节。 InnoDB 的行里带隐藏字段:DB_TRX_ID(最后修改它的事务)、DB_ROLL_PTR(指向 undo log 里的上一个版本),表没有主键时还会多一个 DB_ROW_ID。每次更新不覆盖原记录,而是把旧值写进 undo log,回滚指针把新旧版本串成一条链表,链头是最新版本。快照读时用 ReadView 判断某个版本是否可见:本事务自己改的可见;trx_id 小于最小活跃事务 id 的说明早已提交,可见;大于等于最大事务 id 的说明在快照之后才开,不可见;落在活跃区间里就查活跃列表 m_ids——在列表里说明当时还没提交,不可见,不在列表里就是已提交,可见。不可见就顺着 roll pointer 往回找,直到找到可见版本。RC 与 RR 的差别只在 ReadView 的创建时机:RC 每条语句新建,RR 在事务第一次快照读时建一次。追问通常会到「当前读为什么绕过 MVCC」(select ... for update、update、delete 读最新版本并加锁)、「长事务为什么可怕」(旧版本不能被 purge,undo 膨胀、历史版本链越走越长)。

手写「最接近的三数之和」考的是双指针的边界,不是思路。 排序后固定第一个数 i,l=i+1、r=n-1 往中间收,用 abs(sum - target) 更新最优解;和小于 target 就 l++,大于就 r--。真正容易挂的是细节:best 初始化成无穷大而不是 0;i 去重(nums[i] == nums[i-1] 跳过);l、r 移动后也要跳过重复值;n < 3 直接返回;三数之和可能溢出 32 位就先转 long。复杂度 O(n²)、额外空间 O(1)(排序栈空间不计)。写完后主动说一句「如果要求返回所有组合而不是最接近值,去重逻辑要再补一层」,面试官一般会顺势问下去。