Interview AiBoxInterview AiBox 实时 AI 助手,让你自信应答每一场面试
25道系统设计面试题每位工程师都该掌握
Google、字节、阿里等大厂最高频系统设计面试题,含核心组件、权衡分析和解答框架。
- sellSystem Design
- sellInterview Prep
系统设计面试是区分高级工程师和初级工程师的关键。编程面试考察解题能力,系统设计面试考察你架构大规模系统的能力——处理百万用户、PB级数据和复杂权衡的能力。
这份指南涵盖 25道最高频系统设计面试题,来自Google、字节、阿里等顶级公司。
想获得AI实时反馈练习?试用 Interview AiBox。
快速导航
- 短链接服务
- 限流器
- 聊天系统
- 信息流
- 搜索自动补全
- 视频流媒体
- 键值存储
- 消息队列
- 网络爬虫
- 通知系统
- 支付系统
- 电商平台
- 社交媒体平台
- 网约车服务
- 外卖平台
- 云存储服务
- CDN
- 分布式缓存
- 日志聚合系统
- 配置管理
- 身份认证
- 数据分析平台
- 推荐系统
- 广告点击统计
- 票务系统
短链接服务
题目: 设计类似bit.ly的短链接服务。
核心组件:
- 哈希: MD5/SHA256 → base62编码,或计数器+预生成key
- 存储: Redis存热点数据,数据库持久化
- 重定向: 301或302,取决于是否需要统计
- 分析: 异步事件队列 → 数据仓库
权衡:
- 自定义 vs 自动生成短码
- 一致性哈希 vs 单数据库
- Cache-aside vs Write-through
限流器
题目: 设计API限流器,限制每用户请求数。
核心组件:
- 算法: 令牌桶、滑动窗口、固定窗口
- 存储: Redis原子操作
- 位置: API网关或应用层
权衡:
- 精确性 vs 内存(滑动 vs 固定窗口)
- 分布式 vs 本地限流
- 硬限制 vs 软限制+排队
聊天系统
题目: 设计类似微信/WhatsApp的实时聊天。
核心组件:
- 连接: WebSocket,HTTP长轮询降级
- 消息队列: Kafka路由消息
- 存储: NoSQL存消息,SQL存元数据
- 在线状态: Redis pub/sub
权衡:
- 至多一次 vs 恰好一次投递
- 推 vs 拉消息
- 端到端加密 vs 服务端处理
信息流
题目: 设计类似朋友圈/Twitter的信息流。
核心组件:
- 推送模型: 拉模式(读时生成)、推模式(写时预计算)、混合模式
- 存储: 图数据库存关系,缓存存feed
- 排序: ML模型计算相关性
权衡:
- 延迟 vs 新鲜度
- 存储成本 vs 计算成本
- 时间序 vs 算法排序
搜索自动补全
题目: 设计类似百度/Google的搜索补全。
核心组件:
- 数据结构: Trie树或N-gram
- 排序: 频率、个性化、热门趋势
- 缓存: 多层(CDN、应用、数据库)
- 更新: 流式处理实时更新
权衡:
- Trie大小 vs 搜索速度
- 实时 vs 批量更新
- 个性化 vs 全局建议
视频流媒体
题目: 设计类似B站/YouTube的视频平台。
核心组件:
- 上传: 分片上传、断点续传、转码流水线
- 存储: 对象存储 + CDN
- 流媒体: HLS/DASH自适应码率
- 转码: 多分辨率并行处理
权衡:
- 质量 vs 带宽
- 直播 vs 点播架构
- 中心 vs 边缘转码
键值存储
题目: 设计分布式KV存储,类似DynamoDB。
核心组件:
- 分片: 一致性哈希+虚拟节点
- 复制: 多主+仲裁读写
- 冲突解决: 最后写入胜出或向量时钟
- 故障处理: 提示移交、反熵
权衡:
- 强一致 vs 最终一致(CAP定理)
- 读优化 vs 写优化
- 内存 vs 磁盘存储
消息队列
题目: 设计类似Kafka的消息队列。
核心组件:
- 存储: 追加日志,按偏移量索引
- 分区: 按key分区保证顺序
- 复制: Leader-Follower + ISR
- 消费组: 消费者间负载均衡
权衡:
- 延迟 vs 持久性(acks设置)
- 顺序 vs 并行度(分区数)
- 至少一次 vs 恰好一次
网络爬虫
题目: 设计可扩展的网络爬虫。
核心组件:
- URL队列: 优先队列+礼貌约束
- 分布式工作节点: 消息队列协调
- 去重: 布隆过滤器
- 存储: 文档存储,图库存链接
权衡:
- 广度优先 vs 深度优先
- 新鲜度 vs 覆盖率
- 单机 vs 分布式
通知系统
题目: 设计多渠道通知系统(邮件、短信、推送、站内)。
核心组件:
- 队列: 每渠道优先队列
- 工作节点: 渠道专属发送服务
- 模板: 参数化通知模板
- 追踪: 投递状态、打开率
权衡:
- 即时 vs 批量发送
- 保证投递 vs 尽力而为
- 中心 vs 分渠道队列
支付系统
题目: 设计类似支付宝/Stripe的支付系统。
核心组件:
- 事务: ACID、幂等key
- 网关: 对接支付渠道
- 风控: ML模型、规则引擎
- 对账: 每日批处理
权衡:
- 同步 vs 异步处理
- 实时 vs 批量风控
- 单一 vs 多渠道
电商平台
题目: 设计类似淘宝/Amazon的电商平台。
核心组件:
- 商品: Elasticsearch搜索,反范式化数据
- 购物车: Redis存会话,登录时合并
- 订单: 状态机,Saga模式
- 库存: 乐观锁,预留机制
权衡:
- 单体 vs 微服务
- 强一致 vs 最终一致
- 实时 vs 批量库存
社交媒体平台
题目: 设计类似抖音/Instagram的社交平台。
核心组件:
- 上传: 预签名URL,异步缩略图
- 存储: 对象存储 + CDN
- Feed: 混合推送模型
- 关系: 邻接表或图数据库
权衡:
- 存储格式(原图+变体)
- Feed生成时机
- 先审 vs 后审内容
网约车服务
题目: 设计类似滴滴/Uber的网约车服务。
核心组件:
- 位置: 地理空间索引(GeoHash、四叉树)
- 匹配: 距离、ETA算法
- 定价: 基于供需的动态调价
- 追踪: WebSocket实时更新
权衡:
- 匹配复杂度 vs 速度
- 实时 vs 批量调价
- 单跳 vs 多跳匹配
外卖平台
题目: 设计类似美团/DoorDash的外卖平台。
核心组件:
- 发现: 地理搜索、筛选、推荐
- 订单: 状态机工作流
- 派单: 匹配算法
- 追踪: 实时GPS更新
权衡:
- 单店 vs 多店订单
- 预派单 vs 即时派单
- 商家自配送 vs 平台配送
云存储服务
题目: 设计类似百度网盘/Dropbox的云存储。
核心组件:
- 同步: 块级去重、增量同步
- 存储: 对象存储 + 元数据库
- 版本: 不可变块、指针式版本
- 冲突: 最后写入胜出或手动合并
权衡:
- 块大小 vs 元数据开销
- 客户端 vs 服务端去重
- 同步频率 vs 电量
CDN
题目: 设计类似阿里云CDN/Cloudflare的CDN。
核心组件:
- 边缘节点: 缓存静态内容,终止SSL
- 路由: DNS或Anycast
- 缓存: LRU + TTL
- 源站保护: 防止惊群效应
权衡:
- 命中率 vs 存储成本
- 推送 vs 拉取缓存
- 边缘 vs 源站处理
分布式缓存
题目: 设计类似Redis Cluster的分布式缓存。
核心组件:
- 分片: 哈希槽或一致性哈希
- 复制: 主从+故障转移
- 淘汰: LRU、LFU或TTL
- 客户端: 智能路由
权衡:
- 内存 vs 淘汰率
- 同步 vs 异步复制
- 客户端 vs 代理路由
日志聚合系统
题目: 设计类似ELK的日志聚合系统。
核心组件:
- 采集: Agent → 队列 → 索引器
- 存储: 时序优化,列式分析
- 索引: 倒排索引文本搜索
- 查询: 分布式查询执行
权衡:
- 实时 vs 批量索引
- 存储 vs 查询性能
- 热 vs 冷数据分层
配置管理
题目: 设计类似etcd的配置管理系统。
核心组件:
- 共识: Raft协议
- 存储: MVCC键值存储
- 监听: 事件通知
- API: REST或gRPC
权衡:
- 读己之写 vs 陈旧读
- 线性一致 vs 可串行化
- 嵌入式 vs 独立部署
身份认证
题目: 设计类似企业微信/Okta的SSO系统。
核心组件:
- 认证: MFA、密码策略
- 协议: SAML、OAuth、OIDC
- 会话: JWT、刷新令牌轮换
- 目录: 用户存储、组织架构
权衡:
- 会话时长 vs 安全性
- 中心 vs 分布式会话
- 无状态 vs 有状态会话
数据分析平台
题目: 设计实时分析平台,类似神策/Mixpanel。
核心组件:
- 采集: Kafka → Flink流处理
- 存储: OLAP(ClickHouse、Druid)
- 聚合: 预计算 + 原始事件
- 查询: SQL + 可视化
权衡:
- 实时 vs 批量处理
- 预聚合 vs 按需计算
- 存储 vs 查询灵活性
推荐系统
题目: 设计推荐系统,类似抖音/Netflix。
核心组件:
- 模型: 协同过滤、内容推荐、混合
- 训练: 离线批量、在线学习
- 服务: 预计算候选 + 实时排序
- 特征: 用户、物品、交互特征
权衡:
- 模型复杂度 vs 延迟
- 预计算 vs 实时推荐
- 探索 vs 利用
广告点击统计
题目: 设计实时广告点击计数系统。
核心组件:
- 采集: 流处理流水线
- 去重: 布隆过滤器 + 精确检查
- 聚合: 时间窗口计数
- 存储: OLAP分析
权衡:
- 精确 vs 近似计数
- 实时 vs 批量聚合
- 存储 vs 查询延迟
票务系统
题目: 设计类似大麦/Ticketmaster的票务系统。
核心组件:
- 库存: 实时可用性、锁
- 预订: 状态机、超时释放
- 支付: 幂等处理
- 排队: 高峰期虚拟等候室
权衡:
- 乐观锁 vs 悲观锁
- 锁定超时时长
- 排队 vs 先到先得
系统设计框架
用这个5步框架回答任何系统设计题:
第1步:澄清需求(5分钟)
- 功能需求(做什么)
- 非功能需求(规模、延迟、可用性)
- 约束和假设
第2步:定义API(5分钟)
- 输入/输出契约
- 错误情况
- 认证/授权
第3步:高层设计(10分钟)
- 核心组件
- 数据流
- 画图
第4步:深入探讨(15分钟)
- 扩展策略
- 故障模式
- 边界情况
第5步:权衡(5分钟)
- 你选择了什么,为什么
- 你放弃了什么
- 替代方案
FAQ
图应该画多详细?
从简单开始:3-5个核心组件。讨论权衡时再添加细节。不要一次画完——迭代式构建设计。
不知道某个具体技术怎么办?
聚焦概念,而非工具。说"类似Kafka的消息队列"而非只说"Kafka"。面试官关心你的推理能力,不是记忆的技术栈。
如何处理模糊性?
问澄清问题。"我们应该优先一致性还是可用性?""预期规模多大?"好问题展示高级思维。
应该提具体算法吗?
相关时可以。自然地提到一致性哈希、Raft或CAP定理。不要硬塞。
回答应该多长?
通常35-45分钟。上面的框架适合这个时间。用计时器练习。
下一步
- AI反馈练习: 试用Interview AiBox进行实时系统设计练习。
- 阅读相关指南:
- 下载Interview AiBox 今天开始练习。
系统设计是可以通过练习提升的技能。现在开始。
Interview AiBoxInterview AiBox — 面试搭档
不只是准备,更是实时陪练
Interview AiBox 在面试过程中提供实时屏幕提示、AI 模拟面试和智能复盘,让你每一次回答都更有信心。
AI 助读
一键发送到常用 AI
智能总结
深度解读
考点定位
思路启发
分享文章
复制链接,或一键分享到常用平台