题目重点:归并 MLE 面经中的 Pin 首页排序与响应用户互动的实时 feed,拆解召回、模型服务、短期状态、安全和评估。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 训练版 feed 展示用户可见的 Pin,事件有保存、隐藏、点击和停留;权限/政策过滤是强约束。
- 假设请求 p95 150ms、召回数千候选、最终返回 50 项;仅用于讨论容量与预算,非题目要求。
解题路线
- 先定目标函数:保存/长期参与为主,点击与停留为辅助,隐藏/举报、重复内容和内容安全作为约束;实验随机化单位要避免社交传播干扰。
- 从多兴趣用户向量、关注关系、相似 Pin、主题热门等多路召回并去重;候选过少伤覆盖,过多则精排成本和尾延迟上升。
- 粗排用便宜特征削减候选,精排结合用户长期/会话短期特征、Pin 内容、上下文与新鲜度;最后重排处理多样性、创作者公平和安全。
- 实时互动经事件流更新短期特征或会话缓存,隐藏立即过滤;离线管道更新模型和长期统计。特征需有事件时间、版本和过期策略,训练/服务保持同一变换。
- 服务按阶段设延迟预算和降级:短期特征服务超时可回退稳定兴趣;召回某源失败时保留其他安全来源;记录召回、排序和过滤各阶段可观测性。
- 离线按时间切分评测、分人群看覆盖与校准;线上看保存、长期留存、负反馈和延迟,不以单一 CTR 取代产品目标。
手动走一遍
用户刚保存三张露营 Pin,短期兴趣在下一次请求提高露营候选配额;长期家居兴趣仍保留。若用户点‘不感兴趣’,该 Pin 和近重复内容应在返回前过滤。短期特征超时,则回退长期向量和安全热门候选,避免空 feed。
规模与取舍
若召回 C 个候选、精排模型每项成本 F,直接精排约 O(CF);粗排到 c≪C 后精排成本 O(cF)。实际延迟还受分布式 RPC、模型 batch、特征拉取和最慢分片影响;训练数字仅用于预算推演。
易错点与追问
容易失分的边界
- 只讲模型结构,不说在线事件如何使下一次请求变化。
- 把安全/可见性当成软排序分而非硬过滤。
- 负反馈进入训练但在线仍重复推荐相同内容。
- 训练特征用未来行为或服务时缺失字段。
- 上线只看点击提升,忽略隐藏率和长期体验。
继续深挖
- 如何计算精排可承受的候选数量,而不是背诵固定‘几千’?
- 短期与长期兴趣相反时,如何设计权重与探索?
- 热点用户或热点 Pin 导致特征服务瓶颈时如何降级?
