System design interview preparation
Software Engineers 的 System design interview 指南
如何准备 Software Engineer 的 system design interviews
System design interview 的目标是评估候选人设计真实软件系统(多组件)的能力。System design 题通常给更 senior 的候选人(有几年经验)。Intern 通常不会被问这类题,因为很难要求他们有足够的行业经验。
JR Academy System Design Handbook
如果你希望系统性学习基础概念、设计取舍和经典 case study,可以直接看我们的 System Design Handbook。内容包含主题索引、系统设计面试方法论、以及多类系统设计实战题。
System design interview 的类型
System design 题可能以不同形式出现:
- Back end / distributed system design:设计跨多台服务器或数据中心的系统。涵盖 back end 架构、数据库 schema、数据复制、容错、消息队列、一致性模型等。(基础概念可参考 System Design Intro)
- API system design:在大型系统里设计 APIs,可能是 HTTP APIs(如 REST),或某个组件内部方法设计。(可参考 REST/GraphQL/gRPC)
- Object-oriented design:聚焦类、对象与关系,常要求画 class diagram、定义 interface、讨论设计模式。(可参考 OOD 题库示例)
- Front end system design:设计复杂 client 应用或 UI 组件的架构,更强调 client 侧与 client-server API 的设计。(可参考 性能与可扩展性)
作为 software engineer,最常见的是 back end / distributed system design。常见题包括:
- 设计 URL shortener(如 Bitly)→ Design URL Shortener
- 设计社交媒体网站(如 Twitter)→ Design Twitter
- 设计视频观看网站(如 YouTube)→ Design Netflix
- 设计聊天服务(如 Telegram、Slack、Discord)→ Design WhatsApp
- 设计文件分享服务(如 Google Drive、Dropbox)→ Design Pastebin
- 设计 ride sharing 服务(如 Uber、Lyft)→ Design Uber
- 设计照片分享服务(如 Flickr、Pinterest)→ Design Social Graph
- 设计电商网站(如 Amazon、eBay)→ Design Sales Rank
- 设计 jobs portal(如 LinkedIn、Indeed)→ Design Query Cache
- 设计 web crawler(如 Google)→ Design Web Crawler
System Design Handbook
系统化学习系统设计,先把框架搭起来
一站式索引核心概念、设计取舍与经典案例,适合面试准备与系统复盘。
优质资源
- "Front End System Design Playbook" by GreatFrontEnd:我写的免费系统设计 guidebook,专注 front end system design,比如如何设计 Facebook News Feed、Google autocomplete search、Image Carousels 等。
- System Design in a Hurry:由 ex-Meta 和 Amazon 工程师编写,涵盖 delivery、核心概念与核心技术。用 “common problems” 逐步讲解设计决策与取舍。更新频繁、质量高、免费。很多人觉得它好到免费简直“犯罪”。
- System Design Newsletter:每周 system design newsletter,附带免费的 system design template。
- ByteByteGo:Alex Xu(System Design Interview 系列书作者)新课。先讲基础,再深挖 10+ 常见产品设计(如 Designing YouTube、Facebook Newsfeed 等),以及 big data/storage 系统(如 Designing a Chat System)。概念讲清楚,图也很清晰,适合各 seniority。
- "Grokking the System Design Interview" by Design Gurus:最知名的 system design 面试课程之一,纯文本,适合喜欢阅读的人。包含热门系统设计题库和基础概念 glossary。我自己学过,强烈推荐。
- "Grokking the Advanced System Design Interview" by Design Gurus:我没上过,但同一团队出品,质量应该不错。除非你非常 senior 或面 specialist role,否则可能不需要。
- "System Design Interview Handbook" by Educative:面试导向的完整 guide,教你如何 reasoning、沟通,以及按 top tech company 标准设计可扩展系统。
- "Grokking Modern System Design Interview" by Educative:由 ex-FAANG 工程师制作,结构化课程,提升你在现代 tech interview 中的系统设计能力,包含多主题与 case studies。
- "Best of System Design" package by Design Gurus:打包两门 System Design 课程,折扣购买,一次付费终身使用。
- "System Design Interview Course" by Exponent:覆盖基础 system design,并有大量热门问题 + mock interview 视频。有些题提供 text answers、database schema 和 APIs。订阅略贵,但还包含 Data Structures、Algorithms、Behavioral Interviews 内容,一站式很方便。
- "System Design Playlist" by Gaurav Sen:Gaurav Sen 的 system design playlist 很有名,内容全面、易懂,适合准备面试或系统学习。
免费资源
- System Design Primer:最全面的 system design 资源,但内容很大,建议时间充裕时使用。
- System Design Interview:包含大量 system design tips、相关主题和知名公司的工程博客链接。
- System Design Cheatsheet:简明复习版,适合面试前快速回顾。
- System Design Roadmap:step-by-step 学习路线,含文章与视频链接。