技术面试题

广告投放与实时竞价系统设计

"设计一个TikTok的实时广告投放系统,要求在100毫秒内选出最优广告,同时最大化收入和用户体验。"

为什么面试官会问这道题

广告是字节跳动的主要收入来源。广告投放系统需要在极高吞吐量下平衡收入最大化与用户体验。这道题考察你设计延迟敏感型系统并集成ML的能力。

如何回答

  1. 1

    梳理广告投放流水线:请求增强→候选召回→排序→竞价→创意选择→投放。

  2. 2

    解释两阶段排序:轻量模型从数千候选中筛到数百,深度模型结合用户特征做精排。

  3. 3

    描述竞价机制——通常是广义第二价格(GSP)或VCG竞价——以及如何激励真实出价。

  4. 4

    讨论延迟优化:预计算用户embedding、特征缓存、模型蒸馏和流水线阶段的投机执行。

参考回答示例

系统在100毫秒内分四阶段处理广告请求。第一阶段请求增强(5ms):从预计算embedding存储中拉取用户特征,附加上下文信号(时间、地点、内容类型)。第二阶段候选召回(15ms):倒排索引根据定向条件(人口统计、兴趣、预算约束)从数百万合格广告中筛出约5000个候选。第三阶段排序(50ms):双塔召回模型对全部5000个候选打分,选出Top 200,再由深度CTR预估模型利用用户-广告交叉特征精排,最终分数为eCPM=预估CTR×出价。第四阶段竞价投放(30ms):Top候选进入带质量调整底价的GSP竞价,胜出者根据A/B测试分组选择创意素材并返回响应。为满足延迟要求,用户embedding每小时离线刷新,召回模型在GPU上批量推理,慢变信号使用5分钟TTL的特征缓存。

实用技巧

  • 掌握eCPM公式(CTR×出价),解释它如何平衡广告主价值与用户相关性。

  • 提到预算平滑——将预算均匀分配到投放周期而非早期烧完。

  • 讨论新广告的冷启动问题和探索策略如何解决它。

常见问题

为什么用两阶段排序而不是对所有候选跑深度模型?

深度CTR模型计算开销太大,无法在延迟预算内给数百万候选打分。轻量级的第一阶段模型快速缩小范围,让深度模型专注于最有潜力的候选。

如何防止TikTok上的广告疲劳?

频控限制用户在时间窗口内看到同一广告的次数。竞价中的多样性约束确保用户看到不同广告主的广告,负反馈信号(跳过、隐藏)会降低重复创意的排序权重。

面试时担心忘词?即答侠实时助你

即答侠 AI 实时监听面试对话,自动识别问题并即时生成回答建议——无感辅助,让你从容应对每一道题。

免费试用即答侠