Собеседование по System Design — это не просто проверка технических знаний, а настоящее испытание вашего инженерного мышления. В отличие от алгоритмических задач, где есть чёткие правильные и неправильные ответы, здесь всё строится на умении анализировать, взвешивать компромиссы и предвидеть проблемы до их появления. Ирония в том, что даже опытные разработчики часто проваливают эти собеседования, потому что сосредотачиваются не на том. Они могут идеально знать, как работает Kafka или Cassandra, но если не умеют структурировать свои мысли и задавать правильные вопросы, их шансы резко падают.

Ошибочное решение сразу смотреть в сторону технологий
Ошибочное решение сразу смотреть в сторону технологий

Почему собеседования по System Design такие сложные?

Главная проблема в том, что System Design — это не про знание конкретных технологий, а про способность видеть картину целиком. Когда вам говорят: «Спроектируйте YouTube», правильный ответ не начинается с «Мы возьмём MySQL и Redis». Он начинается с вопросов: «Какой именно аспект YouTube мы проектируем? Видеостриминг? Рекомендательную систему? Комментарии?» Без этого контекста любое решение будет либо избыточным, либо неполным.

Я видел, как кандидаты с 10-летним опытом начинали сразу рисовать диаграммы баз данных, даже не уточнив, сколько пользователей должно обслуживать их решение. В реальном мире никто не проектирует систему без требований. Если вы не знаете, будет ли у вас 10 тысяч или 10 миллионов пользователей, как вы можете выбрать между монолитом и микросервисами?

Ошибка №1: Преждевременная оптимизация

Одна из самых распространённых ловушек — это попытка сразу предложить «идеальное» решение, не разобравшись в проблеме. Например, кандидат слышит «Спроектируйте VK» и сразу говорит: «Нам понадобится шардированная база данных, Kafka для очередей и Redis для кэширования». Звучит впечатляюще, но если спросить «Почему именно Kafka?», часто следует ответ: «Ну, она же масштабируемая».

Проблема здесь не в выборе технологии, а в отсутствии rationale (обоснований). В реальном проекте вы бы сначала оценили нагрузку. Если у вас 1000 пользователей, Kafka — это overkill (чрезмерное, избыточное использование ресурсов). Если же у вас 100 миллионов записей в ленте новостей в день, то да, возможно, она подойдёт. Но даже тогда нужно объяснить, почему RabbitMQ или обычный реляционный брокер сообщений не справятся.

Ошибка №2: Игнорирование trade-offs

Любая архитектура — это trade-offs (компромиссы). Если вы предлагаете решение, но не обсуждаете его слабые стороны, интервьюер решит, что вы не понимаете глубины проблемы. Например, вы говорите: «Для хранения ленты новостей используем Cassandra». Это разумный выбор для write-heavy (с преобладанием записи) нагрузки, но что насчёт read-операций? Cassandra хороша для записи, но если вам нужно делать сложные запросы (например, «показать все твиты пользователя А, на которого подписан пользователь Б»), то реляционная база может быть лучше.

Хороший кандидат всегда говорит о trade-offs: «Мы выбираем NoSQL для масштабируемости, но жертвуем сложными join-запросами». Если вы не упоминаете о недостатках своего решения, это выглядит так, будто вы их не видите.

Ошибка №3: Неумение масштабировать

Многие кандидаты проектируют систему так, будто она всегда будет работать в идеальных условиях. Они говорят: «Для авторизации используем JWT», но не задумываются, что будет, если токены нужно отзывать. Или предлагают «Хранить все данные в одной PostgreSQL», не учитывая, что при высокой нагрузке база станет узким местом.

Интервьюеры специально задают вопросы вроде: «Что произойдёт, если нагрузка вырастет в 100 раз?» или «Как система поведёт себя при отказе дата-центра?». Они проверяют, умеете ли вы думать о масштабируемости и отказоустойчивости. Если вы не рассматриваете эти сценарии, ваше решение кажется наивным.

Ошибка №4: Изобретение велосипедов

Бывает, кандидаты предлагают сложные кастомные решения там, где можно использовать готовые инструменты. Например: «Мы реализуем свой алгоритм консенсуса» (вместо Paxos или Raft) или «Напишем собственную систему очередей» (вместо использования RabbitMQ или Kafka).

В реальных проектах компании редко разрабатывают такие вещи с нуля — это дорого и рискованно. Если вы не знаете, какие инструменты уже существуют для вашей задачи, это говорит о недостатке опыта.

Ошибка №5: Неготовность к неожиданным вопросам

Интервьюер может внезапно изменить условия: «Теперь представьте, что вашу систему будут использовать не 10, а 100 миллионов пользователей» или «Как изменится архитектура, если нужно добавить end-to-end шифрование?» Некоторые кандидаты теряются и начинают паниковать.

Лучшая стратегия — методично разбирать проблему. Например:

  • «Если пользователей станет в 10 раз больше, нам понадобится шардирование базы».

  • «End-to-end шифрование усложнит поиск по данным, поэтому придётся пересмотреть индексацию».

Как готовиться к собеседованию по System Design?

  1. Разбирайте реальные кейсы. Посмотрите, как устроены популярные системы (YouTube, Uber, WhatsApp). Это даст понимание, какие решения уже успешно работают на реальных пользователях и справляются с нагрузкой.

  2. Тренируйтесь аргументировать выбор. Не просто «Берём Redis», а «Redis подходит для кэширования, потому что…».

  3. Учитесь видеть trade-offs. Никакое решение не идеально — важно понимать его плюсы и минусы технологий, паттернов, подходов.

  4. Готовьтесь к неожиданностям. Продумывайте, как система поведёт себя при росте нагрузки, сбоях и новых требованиях.

System Design — это не про знание технологий, а про образ мышления. Если вы научитесь разбирать задачу по частям, взвешивать компромиссы и предвидеть проблемы, вы пройдёте не только собеседование, но и станете сильнее как инженер.

PS

Также предлагаю вам ознакомиться с занимательной статьей по сбору требований: System Design: Чек-лист по сбору и фиксации требований на все случае жизни.

А также будет полезно почитать про то, как бизнес или интервьюер могут влиять на выбор технологий и решений в рамках System Design: System Design: Как бизнес влияет на финальный вид ИТ-Системы и выбор технологий

И еще,

Если вы хотите не только различать основные ошибки на собеседовании по System Design, но и принимать взвешенные архитектурные решения, которые выдержат миллионы пользователей и не сломаются при первой же проблеме. С гордостью представляю вам свой новый курс: C нуля до проектирования систем уровня senior-инженера.Специально для Хабра действует промокод 20% HABR20 . Этот курс — не просто сборник советов для собеседований. Это ваш путь от базовых концепций до проектирования сложных, высоконагруженных систем, которые работают в условиях реального мира. Здесь нет «волшебных таблеток» — только глубокое понимание принципов, разбор реальных кейсов и практика, практика, практика. 

P.P.S.

Поделитесь в комментариях вашим опытом прохождения собеседований по System Design.

Комментарии (9)


  1. Dhwtj
    04.07.2025 17:05

    В идеале нужно собрать основные требования и ограничения так что ответ будет очевиден


  1. Keeper22
    04.07.2025 17:05

    C нуля до проектирования систем уровня senior-инженера

    5 000 ₽

    Надо брать!


  1. aleksandy
    04.07.2025 17:05

    устроены популярные системы (YouTube, Uber, WhatsApp)

    Я б посмотрел, но кто ж мне даст?


  1. abby
    04.07.2025 17:05

    Хотелось бы поделиться своим мнением по System Design и собеседовании.

    Если вы не трогали и не погоняли как следует на тех или иных технологиях (Redis, Kafka, конкретный CDN, конкретные движки БД etc.) то вам скорее всего не пройти System Design Interview. Пройти какой-нибудь курс и прочитать пару книг и статей не достаточно. На практике нужно не просто знать какую задачу решает та или иная технология плюсы и минусы, а довольно хорошо разбираться в деталях и знать конкретные показетели производительности. Где, сколько и что можно сделать, и на каком оборудовании. При этом я лично считаю, что это не значит, что вы не сможете вытянуть нормальную архитектуру в боевых условиях. Т.е. не очень понятно как это помогает собеседующему выбрать более ценного кандидата. Это интервью сравнимо с решением задачек с leetcode.

    На практике не так уж и много проектов, где, во-первых, это всё надо, а, во-вторых, ещё и сразу. Большинство не стартует что-то для миллионов пользователей или какой-то невероятной нагрузки, ни в уже существующем проекте, ни в новом. Всё вводится постепенно. При этом сначала бизнес ещё не знает, что именно ценно и нужно. Закинув сразу кучу технологий вы только добавите себе же работы по отладке, поддержке всяких проблемных случаев в архитектуре и логике, переделыванию, тестированию и дальнейшей поддержке. Даже просто запустите только через пол года первую бета версию, вместо того, чтобы что-то запустить через месяц, и потом ещё одну две версии в продакшене.

    В тех же случаях, где реально надо сразу на миллионы, просто возьмут проверенных людей с других похожих проектов или вообще сами проекты перепрофилируют. Никто не будет собеседовать в духе https://github.com/donnemartin/system-design-primer.

    Уверен, что WhatsApp, YouTube, Dropbox etc уже больше чем два раза переосмыслили и переписали места, которые реально требовали внимания. При этом спокойно могут работать на одном или паре инстансов того, что большинство будет пытаться "масштабировать" во время интервью. Они, конечно, могут написать об этом в блогах и рассказать на конференциях, но совсем не факт, что у вас будут те же самые проблемы, особенно в начале.


    1. lear
      04.07.2025 17:05

      Мне кажется это больше защита от дурака, как ответ на курсы, завышение скиллов в резюме, гпт.
      Вообщем чтобы понять, человек действительно понял инструмент и тыкал его, или просто заучил ответы на часто задаваемые вопросы на собеседовании.


    1. IvanZiv972003 Автор
      04.07.2025 17:05

      Добрый день. Спасибо за комментарий.

      Вы правы, задачи на собеседовании и не только по System Design в большинстве случаев мало схожи с реальностью. Например в Т Банке собес по System Design для системных аналитиков это промежуточный этап отбора, на который выделяется 1.5 часа плотной работы с интервьюером. Там вас спросят обо всем. Я когда приходишь на проект, там вялотекущее развитие архитектуры в течении нескольких кварталов, причем как правило за это вообще отвечает Solution architect и приходится просто писать ФТ и НТ. Также и во всем финтехе.

      Но если подумать, когда на 1 позицию метит N человек, вам приходится выбирать и для того, чтобы разметить поле выбора приходится вводить всякие новые этапы собеседований и безумные задания. System Design олицетворяет фундамент IT - как создается то или иное приложение, система и тд. Знание основ, базовых технологий и принципов снимает риск, что кандидат после принятия оферта будет балластом.

      Естественно тут мы говорим только про hard skills, и не упоминаем что неопытный кандидат может на своих Soft Skills и упорстве оперативно во всем разобраться и стать ключевым звеном в команде (Это слишком непрозрачно на этапе собеседования). Но Харды проверяются легче софтов, поэтому на собеседовании есть этап с System Design.


      1. Farongy
        04.07.2025 17:05

        Вы правы, задачи на собеседовании и не только по System Design в большинстве случаев мало схожи с реальностью.

        Знание основ, базовых технологий и принципов снимает риск, что кандидат после принятия оферта будет балластом.

        Похоже, пора обратно возвращать задачки на знание и понимание формальной логики.


  1. amazingname
    04.07.2025 17:05

    По моим ощущениям систем дизайн интервью это сплошное лицемерие и карго культ. Ещё хуже чем ли код задачи или техническое интервью. Задачи хотя бы проверяют определенную объективно существующую натренированность ума. А понимание множества технических деталей говорит об опыте и инженерных способностях.

    Дизайн интервью теоретически должно проверять способность к проектированию систем и знание существующих решений. Но в реальности подобный опыт крайне редок и мало востребован. В лучшем случае человек сталкивался на практике с частными ограничениями одного двух продуктов, про которые может сейчас уже все забыли. В итоге никто не имеет реального проверенного на практике опыта проектирования Фейсбука с нуля за 10 минут, но на интервью изображает что он у него есть, выбирая "правильные" ответы на вопросы. И побеждает не хороший инженер а лучший адепт культа.


  1. Farongy
    04.07.2025 17:05

    Почему собеседования по System Design такие сложные?

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

    Например, кандидат слышит «Спроектируйте VK»

    Если у вас 1000 пользователей, Kafka — это overkill 

    У VK 1000 пользователей? Или по какой причине тараканы возбудились на Кафку?

    В реальном проекте вы бы сначала оценили нагрузку.

    В реальном проекте архитектура не строится за 30 минут.