Найти в Дзене
КОДОВАЯ БАЗА_

Что проверяют на классическом System Design Interview

Что проверяют на классическом System Design Interview На всякий случай уточню, что ниже приведено моё мнение, основанное на личном опыте прохождения и проведения собеседований по проектированию систем и на информации, почерпнутой из книг и статей. Я разделяю критерии на 2 основных блока. Первый — это критерии, которые покрываются так называемым фреймворком System Design Interview, самим форматом и стандартом проведения собеседования, про них нужно просто не забыть. Второй блок — это непосредственно проверка качеств кандидата по soft и hard навыкам. ⸻ Структурность мышления Вы не должны начинать решение с перечисления технологий, которые у всех на слуху. И не должны сразу начинать составлять диаграмму компонентов. От вас при решении инженерной задачи ожидается последовательный разбор задачи: уточнение требований и ограничений, сбор или самостоятельный выбор SLA/SLI, оценка объёмов данных и нагрузки, определение ключевых узлов архитектуры. Инженер умеет декомпозировать задачу и реша

Что проверяют на классическом System Design Interview

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

Я разделяю критерии на 2 основных блока. Первый — это критерии, которые покрываются так называемым фреймворком System Design Interview, самим форматом и стандартом проведения собеседования, про них нужно просто не забыть. Второй блок — это непосредственно проверка качеств кандидата по soft и hard навыкам.

Структурность мышления

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

Навык уточнять требования

Вам никогда не предоставят все требования к проектируемой системе в описании задачи. Прежде чем приступить к решению, вы должны собрать недостающие функциональные и нефункциональные требования: объёмы данных, характер нагрузки, требования к целостности данных, SLA, требуемую пропускную способность, технические и бизнес-ограничения и т.д. Вы должны уметь задавать правильные вопросы, а самое главное — не забыть их задать.

Понимание масштабирования и устойчивости

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

Умение находить компромиссы (trade-offs)

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

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

Коммуникация — часть оценки

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

Будьте готовы, что ваше решение будут оспаривать, проверять на прочность, задавать критические вопросы.

Любая архитектура, а особенно архитектура высоконагруженной системы, — набор компромиссов. Поэтому интервьюеры должны оценивать не совпадение с «каноническим решением», а ваш ход мыслей: почему вы выбрали такое решение, какие риски увидели, как система будет масштабироваться, какие проблемы решают конкретные технологии. Системный подход к решению инженерных задач — такой же важный навык, как и знание технологий, который должен проверяться на System Design Interview.

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