Тренировка system design интервью — соло, с обратной связью AI
System design — это раунд, где сильные инженеры показывают результат ниже своих возможностей, а средние иногда делают хоум-ран, потому что планка не «знаете ли вы ответ», а «способны ли вы рассуждать о размытой задаче вслух под давлением времени». Это можно натренировать. AI-моки дают редкое сочетание безлимитных повторов и стабильной, структурированной обратной связи.
Потренируйте один дизайн прямо сейчас
Выберите сокращатель URL, ленту Twitter или чат. 45 минут, с оценкой. Бесплатно.
Начать мок по system designЧто на самом деле оценивается в раунде system design
Кандидаты считают, что оценка — это «спроектировали ли вы правильную систему». Это не так. Настоящие интервьюеры оценивают пять вещей, и они слабо коррелируют друг с другом. Первое: уточнили ли вы задачу до проектирования — конкретно, спросили ли о масштабе, соотношении чтение/запись, требованиях к задержке и ограничениях. Второе: сделали ли вы прикидку на коленке или махнули рукой на «много трафика» без чисел. Третье: предложили ли вы API и модель данных до того, как рисовать прямоугольники. Четвёртое: создали ли вы архитектуру, которая соответствует только что определённым требованиям, — а не общую. Пятое: ушли ли вы вглубь хотя бы одного компонента и проговорили компромиссы или весь час оставались на поверхности.
Большинство кандидатов проваливают пункты №1 и №5. Они начинают рисовать сразу, потому что это кажется продуктивным, и остаются на уровне «прямоугольники и стрелки» весь час, так и не защитив ни одного решения. Лекарство структурное: следуйте фреймворку, на каждой задаче, пока фреймворк не станет автоматическим.
Фреймворк: шесть фаз, на каждой задаче
Используйте его на каждом дизайне, включая те, что кажутся лёгкими. Первые три раза медленнее, а дальше — навсегда быстрее.
- Уточнение (5 мин). Функциональные требования — что система делает, чего не делает. Нефункциональные — масштаб, задержка, доступность, согласованность. Ограничения — бюджет, команда, регуляторика. Подтвердите границы до проектирования. Интервьюер иногда намеренно не даёт границ, чтобы посмотреть, спросите ли вы.
- Оценка (5 мин). Пользователи, QPS, хранение, пропускная способность. Запишите числа (вслух, раз уж вы говорите). 100 млн DAU, 10 чтений на пользователя в день, соотношение чтение/запись 80/20 — это примерно 12 тыс. QPS на чтение, 3 тыс. QPS на запись. Не обязательно быть правым; нужно быть правдоподобным.
- API (5 мин). Определите 3–5 важнейших эндпоинтов. Метод, путь, параметры, форма ответа. Этот шаг важнее, чем кажется кандидатам, потому что заставляет назвать сущности. «POST /shorten» с телом
{url, custom_alias?}конкретнее, чем махание рукой на «сервис URL». - Модель данных (5 мин). Таблицы или схемы документов, ключи, индексы. Заявите выбор хранилища (Postgres, DynamoDB, Cassandra) и обоснуйте его одной фразой. Выбор — часть модели данных, а не отдельное решение на потом.
- Архитектура (15 мин). Теперь рисуете прямоугольники. Клиент, балансировщик нагрузки, API gateway, сервисы, кэши, очереди сообщений, базы данных. Пройдите путь чтения и путь записи по отдельности. Не пытайтесь нарисовать идеальную диаграмму с первого прохода — набросайте, затем добавляйте прямоугольники по мере того, как обнаруживаете в них необходимость.
- Глубокий разбор + компромиссы (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 начинает казаться лёгким
Выберите один и начните. Бесплатно.
Начать тренироваться