系统设计面试题

系统设计:信息流(Twitter/微博时间线)

给Twitter级别的社交网络设计首页时间线。

为什么面试官会问这道题

考fanout设计、大V处理、排序、缓存——高级系统设计经典。

如何回答

  1. 1

    两种核心方式:推(写扩散:A发推时写入每个粉丝的时间线)vs 拉(读扩散:读时合并所有关注的最新推文)。

  2. 2

    推:读便宜(一次顺序读);写被粉丝数放大。普通用户合适、大V灾难。

  3. 3

    拉:读贵(合并N个feed);写便宜。适合低读频,高QPS读扛不住。

  4. 4

    混合:普通用户推、大V帖子读时拉合并。行业标准。

  5. 5

    排序:按时间→机器学习打分。特征存储喂模型,对候选排序。保留最近N小时可排序窗口。

参考回答示例

纯推死在大V——5000万粉丝的人发一条就是5000万次写。纯拉死在读QPS——每读合并N个feed太慢。答案是混合:普通用户推进他们预算的时间线,某些用户标为"大V"写时不全量fan out;读时把大V最新推文合并进预算时间线。排序加特征存储和ML ranker——近期推来的候选+拉来的大V候选过模型打分预测互动概率。媒体存对象存储(S3)+CDN;时间线条目只存ID不存内容。缓存:Redis存热时间线、分钟级TTL、新帖write-through。有趣追问:取关(下次读时lazy清)、编辑/删除(墓碑读时过滤)。

实用技巧

  • 预算时间线是吞吐优化;实时排序加延迟——挑好位置。

  • 大V阈值(如10万粉丝)要按存储成本vs时延曲线实证调优。

  • 即答侠用具体数字讲"大V问题"——面试官能看出你真懂trade-off。

常见问题

删除怎么处理?

写路径打墓碑、读路径过滤。墓碑出了活跃窗口之后再GC。

按时间 vs 算法排序?

按时间调试容易、有用户明确要。算法排序互动指标更好。多数平台两种都提供。

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

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

免费试用即答侠