快手 AI 应用开发一面:Agent 设计 + AI Coding 工作流
- 轮次
- 一面
- 结果
- 已挂
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 自我介绍,重点介绍你的技术方向和 AI Agent 相关经验。
- 你在项目中使用过哪些 AI 编码辅助工具(Cursor、Codex)?如何协作保证代码质量?
- 你设计过工具调用结果缓存吗?如何决定哪些结果可缓存?缓存内容/时长怎么定?
- 用户长期偏好(语言/地点)的存储数据结构是什么?
- Agent 敏感信息泄露防护(输入过滤/输出脱敏)怎么做?
- 系统设计:智能文档审阅 Agent(风险标注/修改建议),你怎么设计?
- Java ThreadLocal 在会话管理中的使用及内存泄漏注意?
- 意图识别模块(分类模型 vs 规则引擎)及准确率提升?
- 工具调用失败常见原因?如何优化工具调用成功率?
- Agent 记忆模块如何设计?上下文无限膨胀有哪些处理方案?
- Agent 项目 Token 成本从哪些维度做优化?
- 结合业务,设计一个行程规划 Agent,你会怎么设计?
- 你刚才提到用了 RAG,完整描述 RAG 全流程,RAG 有哪些手段解决幻觉问题?
- LangChain 和 LangGraph 的区别,为什么现在项目优先 LangGraph?
- 说说你理解的 Agent,核心组件有哪些?
- 如果 AI 连续三次没修好一个 Bug,你会怎么处理?策略是什么?有没有真实案例?
- 你平时怎么用 AI 写代码?AI Coding 工作流完整描述一下:从拿到需求到提交代码,AI 参与了哪些环节?
- 如果 AI 生成的代码能跑但逻辑很烂,哪些问题必须改?你怎么发现这些问题?有没有自动化检查手段?
- 你是怎么管理 AI 编程时的上下文的?如果 Context Window 满了,你会优先丢弃哪部分信息?
- 你怎么看待 Spec-driven development 在 AI 时代的演变?
- 你认为现在的 AI Coding 工具最大的瓶颈是什么?
- 操作系统的知识怎么应用到 Agent 开发里的?
- 除了 AI 项目,传统的后端项目做过哪些?
- 挑一个你最满意的 AI 落地场景讲讲难点?
- 为什么你的 RAG 方案里没用 Knowledge Graph?
- 在 Token 消耗上做过哪些具体的成本控制?
- 你自己定义过哪些 Function Call(Tools)?
- 现在写代码主要用什么 AI 辅助工具?用 Cursor 的时候有什么独家技巧吗?
- 为什么有时候 AI 生成的代码虽然能跑但逻辑很烂?
- 你怎么保证 AI 生成代码的长期可维护性?
- 如果让你从 0 到 1 设计一个 Coding Agent,你的思路是什么?
- 你觉得校招生应该具备哪些能力?
- 手撕题:反转链表。追问:如果链表有环怎么处理?如果要求每 k 个一组反转呢?如果链表长度是 10 亿、内存放不下怎么办?
《参考解析》
Agent 记忆要分短长期,上下文膨胀靠分层治理:工作记忆(当前会话)放最近若干轮原文加工具调用摘要,情景记忆存历史任务与结论,语义记忆存用户稳定偏好(语言、地点、习惯),三者存取路径不同。治理膨胀的手段包括:按优先级裁剪(系统提示与工具契约不裁,早期历史先压缩)、滚动摘要(每 N 轮把旧对话压成结构化要点)、工具结果外置(大返回落对象存储只留引用与摘要)、检索式回忆(需要时按向量检索取回而不是全塞进 prompt)。偏好类数据用结构化 KV 或带 TTL 的表存,不要指望模型「记住」,否则既费 Token 又容易串味。
工具调用缓存与成功率优化是两件配套的事:可缓存的前提是「无副作用 + 参数足以决定结果 + 结果时效可接受」——查询类适合缓存,写操作绝不能缓存;缓存键用工具名加规范化参数哈希,TTL 按数据变化频率定(汇率分钟级、订单状态秒级、知识库条目按版本号失效),并给缓存加灰度和命中率指标。调用失败常见原因分四类:参数不合 schema(模型编造字段)、鉴权与限流、下游超时或 5xx、同名工具选错。对应手段是:用 JSON Schema 严格校验并把错误信息回灌给模型自我修正、给工具写清一句话描述与正反例、收敛工具数量、加超时与重试(只重试幂等操作)、连续失败降级到确定性兜底。衡量就看调用成功率、平均步数与无效调用占比。
RAG 全流程要说成一条可调优的流水线:解析清洗 → 切分(按结构语义切,重叠窗口兜住跨段语义)→ 向量化(选与检索语言匹配的 embedding,注意对称/非对称)→ 索引存储(向量库加元数据过滤)→ 查询处理(Query Rewrite、多查询扩展、意图路由)→ 检索(向量召回 + 关键词 BM25 混合,RRF 或加权融合)→ 重排(cross-encoder 精排)→ 生成(带引用、约束只能依据片段作答)→ 评估与回流(召回率、忠实度、答案相关性)。抑制幻觉的抓手是:召回质量(宁缺毋滥、加相似度阈值)、强制引用与拒答(检索为空或分数过低就说不知道)、生成后一致性校验、把坏例沉淀成评测集。至于为什么没上 Knowledge Graph,可以老实答:收益集中在多跳关系推理,而当前业务问题多属单跳事实检索,图谱的构建维护成本远高于增量收益——讲清取舍比硬上更好。
AI Coding 工作流要有明确的人机分工:拿到需求先自己写清边界与验收标准(Spec 先行),再让 AI 起草方案与骨架,人审查接口与数据流;实现阶段小步提交,每步都保持可运行;验证靠类型检查、lint、单测与端到端跑通,AI 可以生成测试骨架但断言由人把关。连续三次修不好同一个 Bug 就该停下——说明前置假设错了,正确动作是回到最小复现、缩小范围、必要时换实现路径或求人 review,而不是继续换 Prompt 硬试。判断「能跑但逻辑烂」的信号包括:吞异常、重复实现、隐藏的并发假设、硬编码、边界缺失、无意义抽象,发现手段是 review 清单加静态扫描加针对性单测。被问到 AI 工具瓶颈或校招生能力时,答题要落到可验证的证据:AI Coding 的短板在于缺乏项目级长期记忆与真实运行反馈,人的价值前移到定义问题、设定约束、验收结果。
系统设计题按「输入—决策—执行—输出—兜底」五段答:智能文档审阅 Agent 的输入是文档(先解析结构分块),决策层做风险识别(分类模型或规则库打标)与修改建议生成,执行层调用检索(法规、模板库)、比对工具、批注写入接口,输出要带定位(第几段第几行)、置信度与依据引用,兜底是低置信度转人工、批量任务限流与审计日志。行程规划 Agent 则要设计工具集(天气、地图、票务、支付)、约束求解(预算、时间窗、偏好)、异常处理(天气变化触发重规划)、多轮澄清(缺预算或日期主动问)与用户确认点(下单类动作必须确认)。两者共同的采分点是:工具契约清晰、幂等与超时、失败可恢复,以及人在关键节点有否决权。
手撕反转链表的追问考的是边界与规模:基础版本用三指针迭代或递归,注意头结点、单节点与递归栈深度。链表有环要先判环——快慢指针找到相遇点后直接反转会死循环,正确做法是定位入环点、断环再反转,或者先判环直接返回错误。每 k 个一组反转要在反转前数够 k 个,不足 k 个保持原序,注意组间前后指针的接续。长度 10 亿、内存放不下时,思路要换成外部存储或流式处理:把链表分片落盘(或放分布式存储),片内先反转,再通过指针文件拼接,或者用「多次遍历 + 固定大小缓冲」把驻留内存压在常数级。这类追问的采分点不是写出代码,而是你能说出「内存放不下时算法变成 IO 密集型,瓶颈在磁盘与网络而不是指针操作」。