donnemartin / system-design-primer

donnemartin / system-design-primer

Motivation

Learn how to design large-scale systems. Prep for the system design interview.

动机

学习如何设计大规模系统,并为系统设计面试做好准备。


Learn how to design large-scale systems

Learning how to design scalable systems will help you become a better engineer. System design is a broad topic. There are a vast number of resources scattered throughout the web on system design principles. This repo is an organized collection of resources to help you learn how to build systems at scale.

学习如何设计大规模系统

学习如何设计可扩展系统将帮助你成为一名更优秀的工程师。系统设计是一个广泛的话题,网络上散布着大量关于系统设计原则的资源。本仓库是一个经过整理的资源集合,旨在帮助你学习如何构建大规模系统。


Learn from the open source community

This is a continually updated, open source project. Contributions are welcome!

向开源社区学习

这是一个持续更新的开源项目,欢迎贡献!


Prep for the system design interview

In addition to coding interviews, system design is a required component of the technical interview process at many tech companies. Practice common system design interview questions and compare your results with sample solutions: discussions, code, and diagrams.

为系统设计面试做准备

除了编程面试外,系统设计也是许多科技公司技术面试流程中的必要环节。练习常见的系统设计面试题,并将你的结果与示例解决方案(包括讨论、代码和图表)进行对比。


Additional topics for interview prep:

  • Study guide
  • How to approach a system design interview question
  • System design interview questions, with solutions
  • Object-oriented design interview questions, with solutions
  • Additional system design interview questions

面试准备的其他主题:

  • 学习指南
  • 如何应对系统设计面试题
  • 系统设计面试题及解决方案
  • 面向对象设计面试题及解决方案
  • 更多系统设计面试题

Anki flashcards

The provided Anki flashcard decks use spaced repetition to help you retain key system design concepts.

  • System design deck
  • System design exercises deck
  • Object oriented design exercises deck Great for use while on-the-go.

Anki 记忆卡片

提供的 Anki 记忆卡片组使用间隔重复法,帮助你记忆关键的系统设计概念。

  • 系统设计卡片组
  • 系统设计练习卡片组
  • 面向对象设计练习卡片组 非常适合在移动途中使用。

Coding Resource: Interactive Coding Challenges

Looking for resources to help you prep for the Coding Interview? Check out the sister repo Interactive Coding Challenges, which contains an additional Anki deck: Coding deck.

编程资源:交互式编程挑战

正在寻找帮助你准备编程面试的资源吗?请查看姊妹仓库 Interactive Coding Challenges,其中包含一个额外的 Anki 卡片组:编程卡片组。


Contributing

Learn from the community. Feel free to submit pull requests to help:

  • Fix errors
  • Improve sections
  • Add new sections
  • Translate Content that needs some polishing is placed under development. Review the Contributing Guidelines.

贡献

向社区学习。欢迎提交 Pull Request 以帮助:

  • 修复错误
  • 改进章节
  • 添加新章节
  • 翻译 需要润色的内容被放置在“开发中(Under development)”目录下。请查阅贡献指南(Contributing Guidelines)。

Index of system design topics

Summaries of various system design topics, including pros and cons. Everything is a trade-off. Each section contains links to more in-depth resources.

系统设计主题索引

各种系统设计主题的摘要,包括优缺点分析。凡事皆有权衡(Everything is a trade-off)。每个章节都包含指向更深入资源的链接。


Study guide

Suggested topics to review based on your interview timeline (short, medium, long).

学习指南

根据你的面试时间表(短期、中期、长期)建议复习的主题。


Q: For interviews, do I need to know everything here?

A: No, you don’t need to know everything here to prepare for the interview. What you are asked in an interview depends on variables such as:

  • How much experience you have
  • What your technical background is
  • What positions you are interviewing for
  • Which companies you are interviewing with
  • Luck

问:为了面试,我需要掌握这里的所有内容吗?

答:不需要。你不需要掌握这里的所有内容来准备面试。面试中被问到的内容取决于多种变量,例如:

  • 你的经验水平
  • 你的技术背景
  • 你申请的职位
  • 你面试的公司
  • 运气

How to approach a system design interview question

How to tackle a system design interview question. The system design interview is an open-ended conversation. You are expected to lead it. You can use the following steps:

如何应对系统设计面试题

如何处理系统设计面试题。系统设计面试是一场开放式的对话,你需要主导整个过程。你可以遵循以下步骤: