Что это такое?
Бесплатная подборка отобранных материалов по System Design: базовые понятия, основы сетей и API, основы баз данных и кэширования, паттерны распределённых систем, а также большой список задач для собеседований, книг, курсов и научных работ. Всё это нацелено на подготовку к собеседованиям по System Design.
Это учебник, инструмент или просто список ссылок?
Это отобранный индекс в стиле awesome-list: один README, разбитый на тематические разделы, со списком маркированных ссылок на статьи, видео, курсы и научные работы, а не собственный авторский контент.
Как устроен список?
Он разбит на разделы: Core Concepts, Networking Fundamentals, API Fundamentals, Database and Caching Fundamentals, Distributed Systems, Architectural Patterns, Tradeoffs, а затем System Design Interview Problems, разбитые на Easy, Medium и Hard. После них идут Courses, Books и Must-Read Papers.
С чего начинающему стоит начать?
README направляет новичков к отдельной вводной статье перед переходом к спискам понятий и рекомендует решать задачи для собеседований по порядку: от Easy к Hard.
Для кого этот список?
Для инженеров-программистов, которые готовятся к собеседованиям по System Design: от новичков, изучающих базовые понятия, до кандидатов, которые тренируются на полноценных задачах проектирования вроде Uber или Netflix.
Какие задачи для собеседований здесь есть?
Десятки классических задач на проектирование, разбитых по сложности: сокращатель ссылок и ограничитель частоты запросов (Easy), WhatsApp, Netflix и Twitter (Medium), а также Uber, Google Docs и Google Maps (Hard).
Есть ли здесь что-то кроме статей?
Да. Есть ссылки на полноценные курсы, рассылку, рекомендованную книгу (Designing Data-Intensive Applications), YouTube-каналы и классические научные работы о распределённых системах, например Google File System и Dynamo.
Есть ли разборы кейсов реальных компаний?
Да, раздел Must-Read Engineering Articles ведёт к статьям вроде того, как Discord хранит триллионы сообщений, предотвращение двойных платежей в Airbnb и архитектура обмена сообщениями в реальном времени в Slack.
Почему основным языком указан Java?
Содержимое репозитория — это просто markdown-ссылки без кода. Метка Java, скорее всего, появилась из-за несвязанного или минимального файла в репозитории, а не из-за реального кода реализации.
What are similar projects?
system-design-academy, system-design, awesome-scalability, architect-awesome, awesome-software-architecture, professional-programming, Back-End-Developer-Interview-Questions, awesome-system-design
Which topics is it in?
load-balancer, scalability, nosql, system-design, interview-questions, caching, interview, architecture, microservices, career, computer-science, sql