career

Учебник System Design Interview для начинающих

22 урока · 7 разделов · бесплатно, без регистрации

Этот курс — не про теорию распределённых систем вообще, а про то, как пройти system design собеседование: как за 40–50 минут у доски структурировать ответ, собрать требования, прикинуть масштаб на салфетке, спроектировать API и схему данных, выбрать БД и кэш, обсудить узкие места. Внутри — пошаговый фреймворк ответа, шпаргалки по нагрузке и компонентам, а также разборы классических задач (сократитель ссылок, лента, мессенджер, хранилище фото). Курс для тех, кто готовится к собеседованиям на middle/senior backend, но боится открытого вопроса «спроектируйте Twitter».

Курс «System Design Interview» состоит из 7 разделов и 22 уроков: Как устроено system design интервью, Требования и оценка масштаба, API и данные, Масштабирование: кэш, балансировка, репликация, Согласованность, очереди и доставка контента, Разбор классических задач и Финал: ошибки и чек-лист. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Как устроено system design интервью

    1. Что такое system design интервью и зачем оно

      Формат system design собеседования: открытая задача без единственного ответа, 40–50 минут, диалог с интервьюером. Чем оно отличается от алгоритмического.

    2. Чего на самом деле ждёт интервьюер

      Скрытый чек-лист интервьюера: структура, компромиссы, оценка масштаба, узкие места. Сигналы senior-уровня и красные флаги на system design.

    3. Фреймворк ответа: 7 шагов у доски

      Универсальный каркас ответа на system design: требования, оценка масштаба, API, данные, высокоуровневая схема, детализация, узкие места.

  2. 2 Требования и оценка масштаба

    1. Сбор требований: функциональные и нефункциональные

      Как собирать требования на system design: функциональные (что система делает) и нефункциональные (масштаб, латентность, доступность, согласованность).

    2. Оценка нагрузки на салфетке: QPS

      Как прикинуть QPS на собеседовании: из DAU и числа действий вывести средний и пиковый RPS, понять, читающая или пишущая нагрузка.

    3. Оценка хранилища и пропускной способности

      Прикидка объёма хранилища и сетевого трафика на system design: байты на запись, рост за год, ширина канала из QPS и размера ответа.

  3. 3 API и данные

    1. Дизайн API: контракты эндпоинтов

      Как проектировать API на собеседовании: ключевые эндпоинты, методы, тело запроса и ответа, пагинация, идемпотентность.

    2. Выбор БД: SQL против NoSQL

      Как выбрать базу данных на system design: SQL против NoSQL, когда нужны транзакции и JOIN, а когда масштаб и гибкая схема.

    3. Моделирование данных и индексы

      Как набросать модель данных на собеседовании: сущности и связи, ключи, индексы под запросы, нормализация против денормализации.

  4. 4 Масштабирование: кэш, балансировка, репликация

    1. Кэширование: паттерны и инвалидация

      Кэширование на system design: cache-aside, write-through, write-back, TTL и инвалидация, проблема холодного старта и stampede, Redis.

    2. Балансировка нагрузки и горизонтальное масштабирование

      Балансировка нагрузки и горизонтальное масштабирование: алгоритмы (round-robin, least connections), stateless-сервисы, вертикальное против горизонтального.

    3. Репликация и шардирование БД

      Репликация и шардирование баз данных: master-replica для чтений, отставание реплики, шардирование по ключу, hotspot и ребалансировка.

  5. 5 Согласованность, очереди и доставка контента

    1. Теорема CAP и уровни согласованности

      Теорема CAP простыми словами: согласованность, доступность, устойчивость к разделению. CP против AP, сильная и итоговая согласованность.

    2. Очереди сообщений и асинхронность

      Очереди сообщений на system design: развязка сервисов, сглаживание пиков, асинхронная обработка, at-least-once, идемпотентность, Kafka и RabbitMQ.

    3. CDN и хранение файлов

      CDN и объектное хранилище на system design: раздача статики у границы сети, кэширование, presigned URL, прямая загрузка в S3.

    4. Rate limiting: защита от перегрузки

      Rate limiting на system design: токен-бакет, скользящее окно, защита от злоупотреблений, распределённый лимитер на Redis, заголовки 429.

  6. 6 Разбор классических задач

    1. Сократитель ссылок (TinyURL)

      Разбор задачи TinyURL на собеседовании: генерация короткого кода, редирект, кэш горячих ссылок, оценка масштаба, выбор хранилища.

    2. Новостная лента

      Разбор новостной ленты на собеседовании: fan-out on write против fan-out on read, проблема знаменитостей, кэш ленты, ранжирование.

    3. Мессенджер и онлайн-чат

      Разбор мессенджера на собеседовании: WebSocket-соединения, доставка и порядок сообщений, статусы доставлено/прочитано, presence, хранение истории.

    4. Загрузка и хранилище фотографий

      Разбор фотосервиса на собеседовании: прямая загрузка в S3, асинхронная обработка превью, метаданные в БД, раздача через CDN, масштаб трафика.

  7. 7 Финал: ошибки и чек-лист

    1. Типичные ошибки кандидата

      Главные ошибки на system design собеседовании: проектирование без требований, технологии без обоснования, потеря времени, молчание, спор с интервьюером.

    2. Финальный чек-лист и репетиция

      Финальный чек-лист system design собеседования: пройти по 7 шагам, обосновать компоненты, назвать узкие места. Как репетировать вслух по таймеру.