Interview AiBox logo

Interview AiBox 实时 AI 助手,让你自信应答每一场面试

立即体验 Interview AiBoxarrow_forward
5 分钟阅读Interview AiBox

25道系统设计面试题每位工程师都该掌握

Google、字节、阿里等大厂最高频系统设计面试题,含核心组件、权衡分析和解答框架。

  • sellSystem Design
  • sellInterview Prep
25道系统设计面试题每位工程师都该掌握

系统设计面试是区分高级工程师和初级工程师的关键。编程面试考察解题能力,系统设计面试考察你架构大规模系统的能力——处理百万用户、PB级数据和复杂权衡的能力。

这份指南涵盖 25道最高频系统设计面试题,来自Google、字节、阿里等顶级公司。

想获得AI实时反馈练习?试用 Interview AiBox

快速导航


短链接服务

题目: 设计类似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分钟。上面的框架适合这个时间。用计时器练习。


下一步

  1. AI反馈练习: 试用Interview AiBox进行实时系统设计练习。
  2. 阅读相关指南:
  3. 下载Interview AiBox 今天开始练习。

系统设计是可以通过练习提升的技能。现在开始。

Interview AiBox logo

Interview AiBox — 面试搭档

不只是准备,更是实时陪练

Interview AiBox 在面试过程中提供实时屏幕提示、AI 模拟面试和智能复盘,让你每一次回答都更有信心。

分享文章

复制链接,或一键分享到常用平台

外部分享

继续阅读

面试官心理分析:读懂面试官,赢得面试

schedule2026年3月10日

面试官心理分析:读懂面试官,赢得面试

深度剖析面试官的真实心理:他们想要什么、害怕什么、如何做决定。掌握不同类型面试官的特点和应对策略,学会解读面试信号,避开致命红旗。

25道系统设计面试题每位工程师都该掌握 | Interview AiBox