Кратко

Введение

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

Часто кандидаты начинают готовиться к интервью, когда до него осталось несколько дней. Давайте честно: никто не станет экспертом по System Design за одну ночь. Вместо этого мы собрали раздел "Кратко" - опираясь на наш опыт и опыт десятков инженеров при прохождении интервью в разных компаниях, мы выделили самые частые пробелы в знаниях и структурировали материал так, чтобы помочь вам их устранить. Где возможно, мы даем ссылки на более подробные объяснения, если вы захотите углубиться в изучение.

Многие материалы по интервью System Design - это либо "ChatGPT‑шум", либо погружение в такую глубину, которую вы в принципе не успеете покрыть на интервью (и если вы попытаетесь это сделать - это может выглядеть как "желтый флаг"). Мы стремились сделать раздел "Кратко" плотным, практичным и эффективным. Более того, он на 100% бесплатен навсегда.

Если вы хотите нас поддержать, у нас есть дополнительный контент, доступный по подписке Premium, а также вы можете запланировать mock‑собеседование. На нем мы гораздо точнее, чем любая статья, сможем подсказать ключевые зоны, на которых вам стоит сфокусироваться.

Что такое System Design интервью?

Собеседование по System Design - это способ оценить вашу способность разбить нечетко определенную, высокоуровневую проблему на составляющие, необходимые для ее решения. Это практические собеседования и большинство инженеров считают их более приближенными к реальной работе, чем, например, алгоритмические.

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

Типы интервью по проектированию систем

Каждая компания (а иногда и каждый интервьюер) проводит собеседование по проектированию систем немного по‑своему. Подавляющее большинство собеседований по System Design это то, что мы называем Продуктовым проектированием или Инфраструктурным проектированием. В ходе этих собеседований вас попросят разработать систему, лежащую в основе продукта, или систему под конкретный инфраструктурный компонент, например Спроектируйте Uber, сервис для заказа такси или Спроектируйте Rate Limiter. Для этих проблем обычно требуется инфраструктура: сервисы, балансировщики нагрузки, базы данных и т. д. Если это ваш случай, то это руководство для вас.

4 типа интервью по проектированию систем

Интервью по объектно‑ориентированному проектированию (их также называют "Low Level Design") встречаются реже, чем по System Design, но все еще бывают в некоторых компаниях. В них вас просят спроектировать систему под определенный сценарий, но основной фокус - собрать правильную структуру классов, следовать SOLID-принципам, придумать разумную модель сущностей и т. п. Например, вас могут попросить спроектировать систему бронирования парковки или торговый автомат, но вместо разбиения на сервисы и обсуждения хранилища данных от вас ожидают описание структуры классов и их взаимодействия.

Мы добавим материал по ООП проектированию в отдельный раздел "ООП проектирование" в ближайшее время.

Как оценивают на интервью

У каждой компании будут разные критерии для оценки кандидата, но эти критерии часто схожи и определяют одни и те же общие компетенции. Собеседования по System Design будут различаться в зависимости от уровня. Обычно собеседования на Junior-позиции не включают секцию System Design, но начиная с Middle-позиции, собеседования по проектированию систем становятся более распространенными. На уровне Senior+ такие собеседования, как правило, являются обязательными.

Разница в уровнях чаще всего заключается в глубине решения и оценке широты ваших знаний. Ожидается, что все кандидаты полностью завершат проектирование системы, удовлетворяющей требованиям. При этом Middle-инженер может сделать это, потратив 80% времени на обсуждение высокоуровневой архитектуры и 20% времени на погружение в детали. В то время как Staff+ инженер должен продемонстрировать глубину погружения в сложные вопросы и обработку граничных случаев с распределением времени 40-50% на высокоуровневую архитектуру и 50-60% на погружение в детали.

Оценка кандидата

Навигация по задаче

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

Самые распространенные способы провалиться здесь:

  • Недостаточно исследовать задачу и не собрать все требования
  • Сфокусироваться на неинтересных/элементарных деталях вместо самого важного
  • Застрять в конкретной части задачи и не суметь двигаться дальше

Самая частая причина провала на интервью по System Design - кандидат не доводит систему до рабочего решения. Часто это происходит из‑за отсутствия структуры в подходе. Мы рекомендуем следовать структуре, описанной в статье Структура интервью.

Проектирование решения

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

Самые распространенные способы провалиться здесь:

  • Недостаточно хорошо понимать основные концепции, чтобы применить их к конкретной задаче
  • Игнорировать вопросы масштабирования и производительности
  • "Спагетти‑дизайн" - решение без структуры, которое сложно понять и поддерживать

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

Техническое совершенство

Чтобы спроектировать отличную систему, нужно знать лучшие практики, современные технологии и то, как применять их к задаче. Здесь важно ваше знание Технологий.

Самые распространенные способы провалиться здесь:

  • Не знать, какие технологии доступны
  • Не понимать, как применять технологии к конкретной задаче
  • Не распознавать распространенные паттерны и лучшие практики

Аппаратное обеспечение не стояло на месте последние несколько лет, но большая часть материалов по System Design все еще застряла в 2020 году. В нашем руководстве мы тщательно обозначим те места, где устаревшие подходы больше не применимы. Вы также узнаете Важные цифры, которые помогут вам принимать более правильные решения.

Коммуникация и сотрудничество

Технические интервью - это еще и способ понять, как с вами будет работать коллегам. Интервью часто проходит в режиме кооперации, и интервьюер оценивает вашу способность ясно объяснять сложные идеи, реагировать на вопросы и обратную связь, а в некоторых случаях - двигаться вместе с интервьюером к решению.

Самые распространенные способы провалиться здесь:

  • Не уметь ясно объяснять сложные концепции
  • Занимать оборонительную позицию или спорить при получении обратной связи
  • Уходить в "дебри" и теряться, из‑за чего не получается двигаться вместе с интервьюером

Как пользоваться этим руководством

В целом подготовка к собеседованию по System Design - это сбор правильных "кирпичиков": вам нужно знать несколько основных понятий, ключевые технологии и распространенные паттерны. На этой базе вы выстроите структуру, по которой будете проходить интервью. И, наконец, вам нужна практика, чтобы чувствовать себя уверенно в день интервью.

Общая структура

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

Для подготовки мы рекомендуем читать это руководство по порядку, пропуская те разделы, которые вы уже хорошо знаете. Хотя мы иногда даем ссылки на дополнительные материалы, мы постарались сделать руководство максимально самодостаточным. Не переживайте, если у вас нет времени читать все, на что мы ссылаемся.

По ходу руководства мы добавили комментарии в виде подсказок и предупреждений - для указания на частые ошибки и вещи, о которых люди нередко забывают на интервью. Обращайте на них внимание, именно они чаще всего становятся "желтыми флагами" на собеседовании.

Если у вас совсем мало времени, рекомендуем пройти раздел Структура интервью, быстро просмотреть Технологии и оставшееся время посвятить Основным понятиям.

Практика

Когда у вас есть теоретическая база - приходит время практиковаться. Пассивное обучение - это хорошо, но на самом деле вы узнаете и запомните в 10 раз больше, пробуя проходить интервью на практике.

  1. Перейдите на страницу практики
  2. Выберите задачу из списка
  3. Следуйте инструкциям на странице интерактивной практики
  4. Попробуйте сначала ответить самостоятельно, а затем сравните с примером ответа
  5. Как только вы пройдете несколько задач с нашей интерактивной практикой и почувствуете себя увереннее, запланируйте mock-собеседование c нами

Обратная связь и предложения

Мы постоянно обновляем контент на основе ваших отзывов. Если у вас есть вопросы, комментарии или предложения - обязательно напишите нам на support@nowinterview.ru

Войдите чтобы отмечать прогресс