你负责一个信息流推荐系统,模型用了一个实时特征「用户近30分钟曝光未点击序列」。离线训练样本由 Flink 落 Hive 的日志回放生成,线上服务由 Flink 实时写入 Redis 的 30 分钟窗口提供。上线后你发现,该特征在线上请求中的覆盖率只有 62%(离线样本中该特征覆盖率为 98%),且线上 AUC 比离线评估低 3 个点。请给出你的排查路径:你会按什么维度拆解覆盖率缺口,如何判断是数据口径问题还是工程链路问题,以及上线后你会建立什么样的持续一致性监控机制。
面试官在考什么
判断候选人能否把「训练-服务偏差」从模糊概念拆成可定位的工程链路,并给出可落地的特征一致性治理方案,而不是只调模型。
回答框架 · 前两步
- 先确认覆盖率的统计口径:离线覆盖率是在样本生成时统计还是训练时统计,线上覆盖率是在请求时刻统计还是特征读取后统计;区分「特征未写入」「特征已写入但读取未命中」「特征值为空」三种情况。
- 按维度拆缺口:按时间(分钟级曲线)、按用户分群(新老、活跃度)、按内容类目、按 Redis 分片/实例、按 Flink 算子并行度,定位是全局性还是局部性;核对离线回放是否使用与线上一致的会话切分、事件时间窗口、去重逻辑。
还有 3 条答案要点、 3 层追问、 4 个常见坑, 以及针对你简历的追问路径,在定制报告里。
同一能力域的其他题
- 冷启动问题你会怎么处理?新用户和新物品的策略一样吗?请分别说。
- 离线 AUC 涨了但线上 CTR 没涨,你会按什么顺序排查?请给出具体清单。
- CTR 模型里为什么要用 GAUC 而不只看 AUC?GAUC 是怎么算的、它解决了什么问题?
- 特征工程里你会怎么做特征穿越(label leakage)的检查?请举一个推荐场景里常见的穿越例子。
- 你做过线上 A/B 实验,请说明分流、样本量、显著性判断的要点。如果一个实验 p 值不显著,你怎么处理?
- 你在做一个首页信息流的 CTR 模型,要加一维特征「用户过去 7 天在该一级类目下的点击率」。训练样本取自 8 月 1 日–8 月 7 日的曝光日志(每天约 2 亿条),你打算 1–6 日做训练、7 日做验证。请说明:这个特征的统计窗口在离线训练和线上 serving 分别应该怎么算?为什么不能直接对整份日志算一个「过去 7 天」的统计再 join 回每条样本?