题目重点:不同内容源先各自召回,再在统一曝光预算下排序,处理职位过期、好友时效和长期价值。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 训练版同一用户可看到职位帖、普通内容帖和好友动态;不同来源都有权限/可见性和有效期过滤。若原轮只问 Post 推荐中的某一来源,应收窄。
- 目标不只点击,还看求职申请、专业互动与用户负反馈;不同事件不能直接用同一点击率当效用。
解题路线
- 分别从关注关系/社交图、职位匹配和内容相似度索引做候选召回,各源有配额和时效过滤。先去掉已过期/关闭职位、不可见好友动态、重复题目描述与屏蔽来源。
- 统一候选结构保存 source、作者/职位、发布时间、特征、召回原因和权限版本;多目标 ranker 预测不同动作,再按产品价值和校准权重合成分数。若源之间标签口径不同,先按源校准或做分层排序,不能把原始 CTR 混用。
- 新鲜好友动态需低延迟摄入,职位题目描述更重资格匹配与当前可申请状态;新内容冷启动用文本/作者特征与探索流量。读时多样性约束限制某一源占满页面,并对连续同类负反馈快速更新。
- 训练样本以实际曝光为基准,记录位置和展示策略,避免把未展示项当负例。离线按源看 Recall/NDCG、校准和申请/互动质量;线上 A/B 同时看长期留存、申请质量、被隐藏/投诉和不同来源曝光。
- Feed 服务可以复用 q19 的混合推拉分发,但推荐模型评估是独立问题;基础设施推送与内容相关性不应混为同一道算法。
手动走一遍
用户关注同事 A、正在寻找后端岗位。候选含 A 新动态、已关闭职位 J1、符合技能且开放的 J2、普通技术帖 P;先过滤 J1,再在时效与职位匹配之间排序,保留不同源曝光,记录用户实际看到的候选用于训练。
规模与取舍
若每源召回 Kᵢ 条,总候选 C=ΣKᵢ,轻量重排约 O(C×模型成本),全排序 O(C log C);索引规模随用户、题目描述、职位与图边增长。题目没有 QPS/模型规模,不填固定容量。
易错点与追问
容易失分的边界
- 把职位申请、好友互动和普通题目描述点击混成同一种监督目标。
- 关闭职位仍被推荐。
- 未展示候选当负样本。
- 一个来源大量候选占满页面。
- 只看 CTR,不看申请质量与用户负反馈。
继续深挖
- 新职位没点击如何冷启动?
- 好友新动态需要多快进入召回?
- 跨来源分数如何校准?
- 位置偏差与推荐策略反馈回路怎样处理?
