题目重点:设计好友内容流的ML排序,兼顾互动、内容质量和用户长期价值,分析标签与拉取线程追问。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 训练先区分Feed主帖排序与评论排序;本文以主帖为主,评论以post上下文的候选集与对话结构作为变体。
- 用户互动不等于内容质量真值;长停留可能是困惑或争议。安全与可见性约束在排序前过滤,不能用点击收益抵消。
- 训练假设两阶段召回/精排,候选规模与更新频率依据给定容量决定,不声称具体线上模型配置。
解题路线
- 候选来自关注关系、互动相近内容与新鲜探索,各通道保留source及采样概率。过滤删除/屏蔽/私密内容后再打分,召回覆盖需与精排单独衡量。
- label设计多目标:有效阅读、主动互动、隐藏/举报、满意度、长期回访。按曝光真实可见与动作窗口定义,记录负反馈延迟;未点击不必都为厌恶,曝光位置强影响机会。
- 特征明确user/content/context/cross:近期兴趣与衰减、内容年龄与作者、语言/设备/时段、用户作者关系、重复曝光;聚合按历史时刻计算,不能把本次互动带进输入。
- baseline按新鲜度+关系权重,升级多任务模型预测各目标,再在固定安全约束下用可解释效用/受约束排序。多样性与频率限制在re-rank层,防同一作者/主题占满页面。
- 针对label/XGBoost追问,讨论噪声/延迟/曝光偏差、分布漂移与新类别编码,不把“树模型无法用”当结论;文本embedding可预计算,在线交互特征需新鲜度与fallback。
- 实验按用户或社交干扰合适的cluster,监测长期指标与分组;上线shadow、流量canary和feature/model回滚。数据循环用探索流量与审核纠偏,避免推荐只强化旧热点。
手动走一遍
一个争议帖有高comment但高hide,另一个普通帖read满意却少comment,单一互动label会错优先前者。评论排序还需thread关系、作者/对话上下文和重复垃圾检测,不能原样用帖子label。
规模与取舍
每请求召回多通道O(sumCandidates),精排O(MC),重排若做所有两两相似度O(M²)需预算或近似。precompute内容embedding降低在线成本,但编辑和模型版本必须使缓存失效。
易错点与追问
容易失分的边界
- 只说用户embedding+dot product无法回答结构化特征、实时关系与多目标冲突。
- 将有争议引发的大量回复等同质量,可能提升短期engagement并损害长期满意。
- 缓存已删除私密内容而只靠TTL,会造成可见性风险。
继续深挖
- pull thread要求不断深挖一个选择,怎样回答?给该组件输入、输出、不变量、量测与fallback,而非转去堆新组件。
- 如何衡量召回错误与排序错误?检验候选覆盖,再在固定候选集对比排序,两层归因。
