SWE / ML Systems · Stage 6 System Design

Oracle 电商推荐:用浏览历史做召回与排序

从浏览日志、候选召回、库存约束和反馈偏差切入,设计题目中的大规模电商推荐系统。

题目重点:从浏览日志、候选召回、库存约束和反馈偏差切入,设计题目中的大规模电商推荐系统。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 训练目标是提升有质量的商品发现和最终下单,而非仅延长浏览时长;先问页面位置、用户群、商品量和延迟目标。
  • 浏览历史含商品 ID、时间、停留和来源,均需按隐私/保留政策处理;库存、地区和配送可行性是硬过滤约束。

解题路线

  1. 日志摄入后按用户与时间生成短期会话兴趣和长期偏好,过滤机器人/重复曝光,维护训练与线上一致的特征版本。
  2. 多路召回可从最近浏览的相似商品、类目热门、协同过滤或向量索引获取候选;先做库存、地区、年龄限制等硬过滤,再排序。
  3. 排序目标结合下单、加购、退货和用户体验,校准不同任务的概率与价值;新用户靠上下文/热门,新商品靠内容和类目特征,避免只推荐已有热门。
  4. 线上服务给每段设预算,例如特征 20ms、召回 40ms、排序 30ms;超时退回安全热门候选。离线评估按时间切分并注意曝光偏差,线上 A/B 看订单、留存、退货和多样性。
  5. 反馈闭环要记录候选、位置、曝光概率和实际动作;若只用已曝光商品训练,容易把旧策略偏好强化成“用户兴趣”。

手动走一遍

用户刚浏览登山鞋,短期召回给户外鞋及相关装备;过滤无库存或无法配送商品,再按购买概率、价格与体验排序。若鞋类模型服务超时,退回有库存的同类热门列表,保持页面可用。

规模与取舍

用户数 U、商品数 I、每次召回候选 C;若直接扫描全商品每次 O(I) 难以服务高 QPS,应靠索引或离线候选缩到 C,在线排序通常 O(C·模型计算)。存储和更新量与事件速率及特征保留期相关。

易错点与追问

容易失分的边界

  • 仅根据浏览次数推荐,忽略位置偏差、误触和重复曝光。
  • 排序后才过滤库存,浪费延迟且可能返回不可买商品。
  • 只看 CTR,不看下单、退货与长期体验。
  • 没有冷启动与模型超时降级。

继续深挖

  • 匿名用户只能看到会话浏览,如何实时更新兴趣且保护隐私?
  • 大促时库存快速变化,特征与候选缓存如何失效?
  • 如何做反事实或随机探索以减轻曝光偏差?
✓已复制微信号!