Тренировка system design интервью — соло, с обратной связью AI

System design — это раунд, где сильные инженеры показывают результат ниже своих возможностей, а средние иногда делают хоум-ран, потому что планка не «знаете ли вы ответ», а «способны ли вы рассуждать о размытой задаче вслух под давлением времени». Это можно натренировать. AI-моки дают редкое сочетание безлимитных повторов и стабильной, структурированной обратной связи.

Потренируйте один дизайн прямо сейчас

Выберите сокращатель URL, ленту Twitter или чат. 45 минут, с оценкой. Бесплатно.

Начать мок по system design

Что на самом деле оценивается в раунде system design

Кандидаты считают, что оценка — это «спроектировали ли вы правильную систему». Это не так. Настоящие интервьюеры оценивают пять вещей, и они слабо коррелируют друг с другом. Первое: уточнили ли вы задачу до проектирования — конкретно, спросили ли о масштабе, соотношении чтение/запись, требованиях к задержке и ограничениях. Второе: сделали ли вы прикидку на коленке или махнули рукой на «много трафика» без чисел. Третье: предложили ли вы API и модель данных до того, как рисовать прямоугольники. Четвёртое: создали ли вы архитектуру, которая соответствует только что определённым требованиям, — а не общую. Пятое: ушли ли вы вглубь хотя бы одного компонента и проговорили компромиссы или весь час оставались на поверхности.

Большинство кандидатов проваливают пункты №1 и №5. Они начинают рисовать сразу, потому что это кажется продуктивным, и остаются на уровне «прямоугольники и стрелки» весь час, так и не защитив ни одного решения. Лекарство структурное: следуйте фреймворку, на каждой задаче, пока фреймворк не станет автоматическим.

Фреймворк: шесть фаз, на каждой задаче

Используйте его на каждом дизайне, включая те, что кажутся лёгкими. Первые три раза медленнее, а дальше — навсегда быстрее.

  1. Уточнение (5 мин). Функциональные требования — что система делает, чего не делает. Нефункциональные — масштаб, задержка, доступность, согласованность. Ограничения — бюджет, команда, регуляторика. Подтвердите границы до проектирования. Интервьюер иногда намеренно не даёт границ, чтобы посмотреть, спросите ли вы.
  2. Оценка (5 мин). Пользователи, QPS, хранение, пропускная способность. Запишите числа (вслух, раз уж вы говорите). 100 млн DAU, 10 чтений на пользователя в день, соотношение чтение/запись 80/20 — это примерно 12 тыс. QPS на чтение, 3 тыс. QPS на запись. Не обязательно быть правым; нужно быть правдоподобным.
  3. API (5 мин). Определите 3–5 важнейших эндпоинтов. Метод, путь, параметры, форма ответа. Этот шаг важнее, чем кажется кандидатам, потому что заставляет назвать сущности. «POST /shorten» с телом {url, custom_alias?} конкретнее, чем махание рукой на «сервис URL».
  4. Модель данных (5 мин). Таблицы или схемы документов, ключи, индексы. Заявите выбор хранилища (Postgres, DynamoDB, Cassandra) и обоснуйте его одной фразой. Выбор — часть модели данных, а не отдельное решение на потом.
  5. Архитектура (15 мин). Теперь рисуете прямоугольники. Клиент, балансировщик нагрузки, API gateway, сервисы, кэши, очереди сообщений, базы данных. Пройдите путь чтения и путь записи по отдельности. Не пытайтесь нарисовать идеальную диаграмму с первого прохода — набросайте, затем добавляйте прямоугольники по мере того, как обнаруживаете в них необходимость.
  6. Глубокий разбор + компромиссы (15 мин). Интервьюер скажет «давайте углубимся в X». Или не скажет — и тогда вызовитесь сами. Выберите самый интересный компонент и объясните в деталях, как он работает, — стратегию репликации, политику вытеснения, подход к масштабированию. Завершите явными компромиссами: «мы выбрали eventual consistency, потому что сценарий терпит 30 секунд устаревания, а альтернатива означала рост стоимости в 3 раза».

Типовые задачи, которые стоит репетировать наизусть

Сокращатель URL

Обманчиво простая. Система проста — сгенерировать короткий ID, сохранить соответствие, перенаправить при обращении. Интервью сложное, потому что интервьюер давит на каждую деталь. Как вы генерируете ID? (Случайно против инкрементно против base62-хеша — у каждого свои компромиссы.) Какая база? (KV-хранилище вроде Redis для горячих чтений, реляционная для аналитики.) Как обрабатываете коллизии? (Повтор с более длинным ID или предвыделение пула на узел.) Каково соотношение чтение/запись? (Минимум 100:1 — проектируйте под преобладание чтения.) Стратегия кэширования? Read-through с высоким TTL, поскольку URL меняются редко. Этот дизайн покрывает, пожалуй, 40% тем, которые всплывают и в других задачах.

Социальная лента (в стиле Twitter)

Fan-out — канонический вопрос. Push (написал твит → записал во все ленты подписчиков) против pull (написал твит → читаешь из списка подписок во время запроса). Push оптимизирует задержку чтения ценой амплификации записи — плохо для аккаунтов-знаменитостей с 10 млн подписчиков. Pull оптимизирует стоимость записи — плохо для пользователей с тысячами подписок. Ответ из реального мира — гибридный: push для обычных пользователей, pull для знаменитостей. Будьте готовы объяснить, какой порог вы бы выбрали (например, число подписчиков > 10 тыс. запускает поведение pull) и почему.

Чат-система

Три интересные подсистемы: хранение сообщений, доставка и присутствие. Хранение: партиционирование по ID разговора, хранение сообщений в append-only логах, архивирование холодных разговоров. Доставка: websocket-соединение на активного пользователя, очередь сообщений для офлайн-доставки, push-уведомления для мобильных. Присутствие: эфемерное, на основе heartbeat, eventually consistent. Интервьюер надавит на упорядочивание сообщений (причинное? полное? полного упорядочивания в пределах разговора обычно достаточно) и гарантии доставки (at-least-once по умолчанию — обрабатывайте дедупликацию на клиенте).

Пройдите пять дизайнов до интервью

Фреймворк ускоряется с каждым разом. Бесплатно, в браузере.

Начать тренироваться

Как использовать AI-моки именно для system design

Выберите режим «Полное интервью» и скажите AI, что хотите раунд system design, а не скрининг. Укажите задачу («сокращатель URL», «лента Instagram») или дайте AI выбрать самому. Проговаривайте фреймворк вслух — описывайте, что нарисовали бы, проходите путь чтения, объясняйте компромиссы по мере их принятия. AI будет задавать те же виды уточняющих вопросов, что и настоящий интервьюер: «что будет, если кэш откажет?», «как вы обрабатываете горячий ключ?», «какова ваша стратегия репликации и каков режим отказа?». Отвечайте полными предложениями с явными компромиссами, потому что именно так оценивается настоящий раунд.

Один конкретный приём: попросите AI выступить в роли senior-интервьюера из FAANG. Он будет жёстче давить на допущения и откажется принимать общие ответы. Это настройка с наибольшим рычагом для кандидатов уровня Senior и выше, потому что вам нужна практика защиты решений под давлением, а не просто их формулирование.

Что обратная связь AI не поймает (и что с этим делать)

Обратная связь AI превосходна в части структуры, проговаривания компромиссов и упущенных компонентов. Она слабее в оценке качества диаграмм (вы описываете, а не рисуете) и того, реалистичны ли ваши числовые оценки для конкретного масштаба компании. Компенсируйте, проведя одну-две сессии с настоящей доской — откройте excalidraw на втором мониторе и рисуйте, пока говорите. Сочетайте AI-моки с одним-двумя раундами с коллегой или коучем в последнюю неделю перед настоящим интервью, особенно если идёте на Staff или Principal.

Для частей, в которых AI силён, — структура и проговаривание компромиссов. Перечитывайте оценочную обратную связь после каждой сессии и записывайте два конкретных изменения для следующей. Два изменения за сессию быстро накапливаются — три сессии, и вы станете заметно структурнее 80% кандидатов, входящих в комнату.

Часто задаваемые вопросы

Нужна ли доска, чтобы тренировать system design?

Полезна, но не обязательна. На настоящих интервью вам дадут доску или общий инструмент для рисования. Для соло-практики подойдут блокнот или excalidraw. Формат AI-мока устный — вы описываете, что нарисовали бы, — и это отражает то, как вы будете объяснять это в комнате.

Сколько длится system design интервью?

От 45 до 60 минут, последние 5 минут — на ваши вопросы. Распределяйте время: 5 мин уточнение, 5 мин оценка, 10 мин API и модель данных, 15 мин архитектура, 15 мин глубокие разборы и компромиссы. Без такого бюджета кандидаты тратят 40 минут на API и так и не доходят до масштабирования.

Какие задачи готовить первыми?

Три с наибольшим рычагом: сокращатель URL (покрывает выбор хранилища, хеширование, соотношение чтение/запись), социальная лента (покрывает fan-out, кэширование, денормализацию) и чат-система (покрывает websocket, упорядочивание сообщений, гарантии доставки). Они перекрывают 70% вопросов по system design, которые вам зададут.

Какая планка для Senior против Staff в system design?

От Senior ожидают спроектировать работающую систему и объяснить компромиссы. От Staff ожидают самостоятельно выявить по-настоящему сложные части ещё до вопроса, предложить два-три архитектурных варианта и объяснить, когда какой выбрать исходя из бизнес-контекста. Разница в основном в том, «заметили ли вы, что это важно, до того, как я вам сказал».

Стоит ли заучивать оценки и числа?

Небольшой набор — да. Запомните: примерные задержки (память — нс, SSD — мкс, сеть — мс), примерные ёмкости (один сервер держит X QPS) и прикидки для хранения (твит ~200 байт, миниатюра изображения ~50 КБ). Точные числа не нужны — нужны правдоподобные, которые вы сможете обосновать.

На пятом дизайне system design начинает казаться лёгким

Выберите один и начните. Бесплатно.

Начать тренироваться