快手 AI 应用实习面试:模型服务、RAG 与分类评估

16 道题 · 更新于 2026-10-31

本场面试题

  1. 如何把文字抽取为图节点和关系,并处理图数据库中的推理查询?
  2. RAG 每个环节的延迟怎么保证,例如查询改写和查询过程?
  3. RAG 中怎么评价系统的改进效果?
  4. 怎样反转链表并说明空间代价?
  5. Flask 服务的 worker、线程与容器 CPU 配额怎样选择?
  6. 多 worker 是否各自持有模型权重,怎样检查内存和设备占用?
  7. 模型服务的 QPS 应怎样测量与解释?
  8. 什么场景适合使用 WebSocket?
  9. 异步交互怎样实现解耦?
  10. 大模型应用的前端怎样与后端交互?
  11. 怎样理解 Redis 阻塞队列的适用边界?
  12. 缓存穿透、击穿和雪崩怎样分别处理?
  13. 缓存与权威数据的一致性怎样考虑?
  14. 招聘意向场景怎样区分分类目标与排序目标?
  15. 不平衡二分类怎样选择训练策略、判断指标与阈值?
  16. 怎样判断某个特征是否重要?

面经与参考答法

快手 AI 应用实习面试:模型服务、RAG 与分类评估

同一快手 AI 应用开发日常实习流程下的两份文字记录在此合并。一份自述二面,另一份含二面通知与技术清单,但没有逐题标明轮次;本页按技术主题整理,不把发帖日期当作面试日期,也不把全部补充题归为二面。

面试经历为个人自述,未经企业独立确认。以下短答为编辑整理的回答思路,不代表现场回答或实际系统实现。

本页只整理已核验文字;原帖图片尚未核验,未用于还原题目,记录可能仍有遗漏。

(1)如何把文字抽取为图节点和关系,并处理图数据库中的推理查询?

先澄清查询目标和图 Schema。对文本识别实体、消歧并抽取有类型的关系,每条边保留原文证据与版本;查询时限制关系类型、跳数、权限和上下文预算,再沿路径回查证据。抽取出的边仍可能出错,不能把连通性直接当事实结论。原帖未披露具体图数据库或查询实例。

(2)RAG 每个环节的延迟怎么保证,例如查询改写和查询过程?

从端到端 SLO 分配改写、召回、重排与生成预算,把排队和网络也计入关键路径并观察长尾。独立检索分支可并行,有依赖的阶段不能盲目并发;设置共同截止时间、背压及有边界的缓存或降级,再检查质量与成本。预算是可测的服务目标,不是每次请求必达的承诺。

(3)RAG 中怎么评价系统的改进效果?

固定业务查询集、证据标注、语料版本和权限条件,对新旧方案做配对比较。检索看相关证据是否找回与排序,生成看证据忠实度、引用和任务答案质量,同时报告延迟、成本与失败切片。自动评分需人工校准;一次只改变一个主要因素,再测组合效果,不能只用总分上涨证明改进。

(4)怎样反转链表并说明空间代价?

用前驱、当前节点和临时后继逐个反转指针,保持剩余链表可达,最后返回新表头。若改用数组,应另说明 O(n) 额外空间及是否重建节点,不能把它和原地反转混为一谈。

(5)怎样介绍 YOLO 模型部署(环境与配置待补)?

关联知识点待核实。

先说明实际模型版本、输入输出、运行环境与业务指标,再解释预处理、推理和后处理如何衔接。原文没有给出配置,不能推断推理引擎、精度或硬件。

(6)Flask 服务的 worker、线程与容器 CPU 配额怎样选择?

先区分进程、线程和协程,再根据请求中的 CPU、网络与设备等待以及容器实际配额选择并发。通过负载测试检查排队、吞吐和尾延迟,增加 worker 不保证更快。

(7)多 worker 是否各自持有模型权重,怎样检查内存和设备占用?

先确认启动方式、模型加载位置和设备,再测量每个进程及整体的内存与显存。进程间 CPU 页的共享条件不能直接套用到 GPU 权重,进程本地缓存也不能假定跨 worker 共享。

(8)模型服务的 QPS 应怎样测量与解释?

固定输入尺寸、批量、质量约束和并发负载,再测量端到端吞吐、尾延迟与失败率。分别观察预处理、推理和后处理及 CPU/GPU 利用率,避免把单次模型推理速度当作服务容量。

(9)什么场景适合使用 WebSocket?

先说明是否需要双向持续通信,再与普通请求响应或单向推送比较。交代连接状态、心跳、重连、鉴权和背压,不能仅因“大模型”就认定必须使用 WebSocket。

(10)异步交互怎样实现解耦?

将受理、执行和结果查询的职责分开,通过稳定任务标识和状态表达进度。设计超时、重复投递、失败重试与取消语义,异步返回成功不等于后台业务已经完成。

(11)大模型应用的前端怎样与后端交互?

按请求、流式增量、最终结果和错误状态定义接口,明确谁持有模型凭据与会话状态。支持取消、重试与并发状态隔离,并检查断线时是否会重复触发副作用。

(12)怎样理解 Redis 阻塞队列的适用边界?

先说明采用的结构和取任务方式,再检查消息是否需要确认、重投和持久化。阻塞取出只解决等待,可靠消费还要处理消费者崩溃、重复执行和积压,不能自动等同于完整消息队列协议。

(13)缓存穿透、击穿和雪崩怎样分别处理?

先区分不存在数据的反复查询、热点 Key 失效和大量缓存同时失效,再选择空值或近似过滤、请求合并、过期分散及限流。核对各方案的一致性与失效边界,避免只给每个术语配一个固定组件。

(14)缓存与权威数据的一致性怎样考虑?

先说明允许的陈旧窗口和数据权威,再设计写入顺序、失效传播、版本及补偿检查。异步通知或 TTL 不能直接提供强一致,故障、旧值回填和并发更新必须一起验证。

(15)Redis 的单线程与多线程应怎样区分?

关联知识点待核实。

区分命令执行、网络 I/O 和后台工作,并说明实际版本与配置。不能用“Redis 单线程”概括所有模块,也不能因存在 I/O 线程就假定普通命令会并行执行。

(16)时序预测怎样建模(任务与数据待补)?

关联知识点待核实。

先确认预测目标、时间跨度、采样频率和可用历史,再以时间顺序划分训练与验证。原帖没有给出具体任务,不能还原模型或特征,更要防止未来信息泄漏。

(17)LSTM 输出怎样接入 Transformer(结构待补)?

关联知识点待核实。

先明确输出是全部时间步还是最终状态,再检查维度映射、位置和掩码及训练目标。原帖没有给出张量形状和结构,不能推断真实连接方式或效果。

(18)CNN / AlexNet 的训练原理怎样说明?

关联知识点待核实。

先解释卷积与非线性如何形成表示,再沿损失、反向传播和参数更新说明训练。原帖没有公开网络配置与任务,具体结构和训练细节需另行核实,暂不建立不相关的知识绑定。

(19)招聘意向场景怎样区分分类目标与排序目标?

先明确产品动作和标签含义,判断需要预测意向概率还是为候选对象排序,再选择对应目标和验收指标。特征只能使用预测时已知的信息,离线标签及未来行为不能泄漏进输入。

(20)不平衡二分类怎样选择训练策略、判断指标与阈值?

先根据漏判、误判的业务代价定义指标,在代表目标分布的独立数据上查看精确率、召回率和混淆矩阵。比较类别权重或重采样,并在验证集选择阈值后冻结验收;高准确率不能证明少数类识别有效。

(21)怎样判断某个特征是否重要?

在未参与训练的数据上比较移除或扰动特征后的指标变化,并检查相关特征之间的替代关系。结合稳定性与业务可获得性解释结果,模型重要性不是因果效应证明。

面经是候选人自述,解析为 Agent Journey 整理。更多大厂 AI / Agent 岗面经 · 按目标公司模拟面试