NiceOffer

面试面经 · 快手

【快手】【大模型开发】【暑期实习一面】面经(八股+大模型项目+手撕)

快手面经大模型开发实习

快手 大模型开发 暑期实习一面面经

背景:海外一年制硕士,主攻 NLP 与大规模分布式系统,简历上有一段 RAG 驱动的 Agent 项目(面向企业知识库问答),一段大模型推理服务压测优化经历。投递后一周收到面试邀约。

题目摘要

  • 编程语言基础(Java):JVM 内存分区与垃圾回收算法,G1 收集器的工作机制;synchronizedReentrantLock 的底层实现差异。
  • MySQL/Redis 八股:MySQL 索引失效场景(最左前缀、隐式转换、函数操作);Redis 持久化机制(RDB/AOF 混合持久化),缓存穿透/击穿/雪崩的应对方案。
  • 大模型/Agent 项目深挖:RAG 检索链路中 embedding 模型选型依据;Function Calling 的触发策略与容错处理;多轮对话中的上下文窗口管理(token 裁剪与压缩);推理成本优化(KV Cache、动态批处理、模型量化)。
  • 手撕算法合并区间(LeetCode 56)。题意:给定若干区间,合并所有重叠区间。关键思路:按左端点排序,遍历时维护当前合并区间,若当前区间左端点大于已合并区间右端点则输出并重置,否则更新右端点为两者较大值。时间复杂度 O(n log n),空间 O(log n)(排序栈空间)。

项目深挖

面试官对项目细节追问很细,基本围绕“为什么这么设计”和“遇到问题怎么定位”展开。

追问 1:你的 RAG 系统在检索阶段,为什么选择 bge-large-zh 而不是 OpenAI embedding?

参考方向:从三个维度回答——(1)数据隐私,企业知识库不允许外调 API;(2)中文效果,bge-large-zh 在 C-MTEB 中文 benchmark 上表现优于 text-embedding-ada-002,尤其领域术语(法律/医疗)上召回率提升明显;(3)部署成本,单卡 A10 可承载,延迟约 15ms/query,远低于外网调用。同时补充了对比实验:对 500 条测试集做 recall@5 评测,bge 系列比 OpenAI 高 3.2 个百分点。

追问 2:Function Calling 的触发策略怎么设计的?如果模型调用了不存在的函数或参数格式错误怎么办?

参考方向:触发策略上,采用“意图分类 + 槽位填充”两阶段——先让模型判断是否需要调用工具,再做参数抽取,避免每次对话都触发函数调用。容错处理分三层:第一层,对函数名做白名单校验,不在列表内直接拦截并返回系统提示;第二层,参数用 JSON Schema 做校验,类型不匹配时自动做类型转换(如字符串数字转 int);第三层,若校验失败,将错误信息拼接到下一轮 prompt 中,让模型自我修正,而不是直接崩溃。同时引入了“降级策略”——连续两次失败则放弃调用,直接走纯文本回复。

追问 3:上下文窗口管理具体怎么做的?token 超限会怎样?

参考方向:采用“分层裁剪 + 关键信息摘要”策略。具体实现:将对话历史分为三档——最近 10 轮完整保留,中间 20 轮做关键词抽取压缩(提取实体、数字、结论句),更早的对话则丢弃。系统 prompt 和工具定义固定占 2000 token,动态部分按比例分配。超限时,优先裁剪工具调用记录(因为 Function Calling 的中间过程对最终答案影响小),再压缩历史对话。另外做了 token 计数缓存,避免每次请求重复计算。这样在 8K 窗口下,实际可用上下文从 6K 提升到 7.2K,且回答质量下降不明显(人工评测下降约 5%)。

准备建议

  1. 项目复盘要落到量化指标和失败案例。面试官对“提升 30%”这类表述免疫,要能说出具体实验设计(如评测集规模、对比基线、指标口径)。准备 2-3 个“踩坑后改进”的故事,比如 embedding 检索初期召回率低,通过分析 bad case 发现是 chunk 切分粒度问题,改为按语义段落切分后 recall@5 提升 12%。这类细节远比“我用了 RAG”有说服力。
  1. 八股复习要结合业务场景。MySQL 索引失效不要只背列表,要能解释为什么 WHERE age + 1 = 20 会失效(隐式类型转换导致索引列参与运算)。Redis 持久化不要只答 RDB 和 AOF 的区别,要能说清混合持久化的触发条件和恢复优先级。快手这类公司考察八股时喜欢“原理 + 场景”组合题。
  1. 手撕算法按“高频 + 边界”准备。面试前刷完 LeetCode 热题 100 中数组、字符串、链表、二叉树四类题,重点练排序去重、双指针、滑动窗口、区间合并这些“看似简单但容易写错边界”的题。写代码时先讲思路再动手,注意处理空数组、单元素、全重叠等边界用例。面试官会让你跑测试用例,不要只写 main 函数验证,直接口头过边界条件。

结果反馈

一面通过,约 3 天后二面。整体面试节奏紧凑,项目深挖占了大半时间,八股只考了基础深度,算法题偏简单但要求一次性写对。建议后续准备时把 Agent 项目的系统架构图画清楚,二面大概率会问扩展性问题。

想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。