面试面经 · 快手
【快手】【Agent 开发】【暑期实习二面】面经(八股+大模型项目+手撕)
海外一年制硕士,投递快手 Agent 开发暑期实习,二面约 60 分钟,面试官是 Agent 平台侧的工程同学,全程围绕「你写过的东西」和「你踩过的坑」展开,八股只做交叉验证。
题目摘要
- Go 语言基础:
slice的扩容机制与底层数组共享问题,map并发读写为什么 panic,sync.Map的适用场景;context.Context的取消传播在 Agent 长任务里怎么用。 - MySQL 八股:聚簇索引与回表,
EXPLAIN里type和rows怎么看;一张会话消息表(session_id, msg_id, role, content, created_at)数据量到千万级,分页查询越翻越慢怎么优化。 - Redis 八股:缓存穿透/击穿/雪崩的区分与各自解法;Agent 场景下用 Redis 存对话上下文和工具调用结果缓存,key 怎么设计、TTL 怎么定、内存淘汰策略选哪个。
- Agent 项目深挖:RAG 检索链路(切分粒度、embedding 选型、召回后重排)、Function Calling 的 schema 设计与失败重试、多轮上下文超长时的裁剪策略、推理成本与延迟的优化手段。
- 手撕算法:LRU 缓存。题意——设计一个容量为
capacity的缓存,支持get(key)和put(key, value),两者都要求 O(1),超出容量时淘汰最久未使用的 key。关键思路:哈希表 + 双向链表,哈希表存 key 到链表节点的映射,链表头放最近使用、尾放最久未使用;get命中后把节点移到头部,put时若 key 存在则更新并移到头部,不存在则新建插入头部,若超容则删尾节点并同步删哈希表项。面试官追问了「为什么不用 Go 的 container/list 直接交差」以及「并发场景下怎么加锁、锁粒度能不能更细」。
项目深挖
追问一:RAG 召回的准确率怎么量化,你说提升了多少是基于什么指标?
参考回答方向:不要只讲「感觉答得更准了」。要给出评测集构造方式——从真实日志里抽 N 条 query,人工标注标准答案文档,用 Recall@k 和 MRR 衡量召回,用最终答案的忠实度(是否引用了检索内容、有无幻觉)做端到端评估。然后讲清楚改动点:比如原来按固定 512 token 切分导致语义断裂,改成按标题层级 + 重叠窗口切分后 Recall@5 从多少到多少;或者加了 rerank 模型后 top3 命中率的变化。如果没做过严格评测,就诚实说「当时只做了 case 抽检」,然后补一句「如果重做我会先搭评测集,否则调参没有方向」——面试官更在意你有没有评测意识。
追问二:Function Calling 里模型返回的参数不符合 schema,你怎么处理?
参考回答方向:分三层。第一层是 schema 设计本身要收敛,枚举值写死在 description 里,必填项明确,别让模型自由发挥;第二层是解析层做校验和兜底,JSON 解析失败或字段缺失时,把错误信息回灌给模型让它重试一次,重试仍失败就降级到规则匹配或直接返回「无法完成」;第三层是监控,把失败样本落库,定期看哪类工具最容易出错,反过来改 schema 或 prompt。可以提一句「重试要有次数上限和超时,否则一次工具调用能把整个请求拖死」。
追问三:多轮对话上下文越来越长,token 成本和延迟都上去了,你怎么办?
参考回答方向:先分层——系统提示词、历史对话、检索内容、当前问题。历史对话做滑动窗口 + 摘要压缩,早期轮次用 LLM 摘要成一段话保留关键信息,近期轮次保留原文;检索内容按相关性截断,只保留 top-k 且限制单条长度;系统提示词能精简就精简,别塞一堆 few-shot。再讲工程手段:相同前缀的请求走 prompt caching(如果模型侧支持),工具调用结果做缓存避免重复执行,简单意图用便宜的小模型路由,复杂推理才走大模型。最后补一句「上下文管理本质是信息取舍,要明确哪些信息丢了会导致任务失败,哪些只是锦上添花」。
准备建议
- 把项目里的数字全部挖出来。延迟从多少降到多少、token 消耗降了百分之几、召回率提升多少、QPS 多少——面试官一问「效果怎么样」你答不上具体数字,项目可信度直接打折。没测过的指标就补测,哪怕是小规模抽样。
- 八股不要背结论,要能接到项目上。比如 MySQL 分页优化,别只背「用游标代替 offset」,要能说清楚你的消息表为什么用
(session_id, created_at)联合索引、WHERE session_id = ? AND created_at < ?这种游标分页在你们查询模式下为什么可行。 - 手撕题按「写对 + 讲清 + 扛追问」三步准备。LRU 这类题要能在 15 分钟内无 bug 写完,写完主动说时间空间复杂度,然后预判追问(并发、过期、持久化)。高频题单:LRU/LFU、TopK、合并区间、二叉树层序、字符串解码、限流器。
一面通过,3 天后约的二面,二面结束当天晚上收到感谢信,流程止步于此。
想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。