Как добиться успеха в интервью по системному дизайну сочинение пример

ООО "Сочинения-Про"

Ежедневно 8:00–20:00

Санкт-Петербург

Ленинский проспект, 140Ж

magbo system

Сочинение на тему Как добиться успеха в интервью по системному дизайну

Вопросы проектирования системы часто бывают такими же общими, как «Как бы вы разработали Продукт X?».

«О, вы имеете в виду, что было бы наилучшим способом разработки продукта, над которым десятилетиями работали сотни разработчиков программного обеспечения? Конечно, позвольте мне ответить на это через 45 минут или меньше! »

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

Подумайте о собеседовании по системному проектированию как о мозговом штурме, основанном на открытых вопросах, на которых вы должны будете компетентно обсудить сложную систему. Считайте, что это возможность работать с вашим интервьюером, как и два члена команды, для решения реальной проблемы, связанной с целями компании. Хорошей новостью является то, что вам не нужно знать все! Ваш окончательный дизайн не так важен, как процесс мышления, лежащий в основе вашего выбора дизайна. В конце концов, это отражает опыт реальной работы в компании. Инженеры обладают огромной свободой: нас просят не реализовывать полностью специализированные функции, а взять на себя ответственность за открытые проблемы и найти лучшее решение для каждой.

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

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

Пошаговый подход к проведению собеседования по проектированию системы

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

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

Шаг 1. Понимание целей

Разъяснение неясностей в начале интервью имеет решающее значение. Кандидаты, которые проводят время, четко определяя конечные цели системы, имеют больше шансов на успех. По этой причине убедитесь, что вы понимаете основные требования и задаете уточняющие вопросы. Начнем с самых основных предположений:

Какова цель системы?

Кто пользователи системы? Зачем им это нужно? Как они собираются использовать это?

Каковы входы и выходы системы?

Даже если вас спрашивают об известном продукте, вы все равно должны поделиться своими предположениями о нем со своим интервьюером. Вы можете обнаружить, что у вас и вашего интервьюера могут быть разные предположения относительно таких продуктов, как Twitter, Facebook или Reddit. Помимо того, что он помогает вам сосредоточиться, он также демонстрирует чувствительность продукта и хорошую командную работу.

Шаг 2. Установите область действия

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

Задайте уточняющие вопросы, например:

Мы хотим обсудить сквозной опыт или только API?

Каких клиентов мы хотим поддерживать (мобильные, интернет и т. д.)?

Требуется ли аутентификация? Аналитика? Интеграция с существующими системами?

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

Шаг 3 – Дизайн для правильного масштаба

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

Каково ожидаемое отношение чтения к записи?

Сколько параллельных запросов нам следует ожидать?

Какое ожидаемое время ответа в среднем?

Какое ограничение данных мы предоставляем пользователям?

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

Шаг 4 – Начните с высокого уровня, затем разверните

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

Это также хорошая точка для определения точек входа системы, таких как:

Взаимодействие с пользователем

Внешние вызовы API

Автономные процессы

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

Шаг 5 – Структуры данных и алгоритмы (DS & A)

Подождите, это снова? Да! Оказывается, это действительно важно при разработке программных систем.

Сокращенный URL? Заставляет меня думать о функции хеширования. О, тебе нужно масштабировать? Осколок может помочь. Параллелизм? Избыточность? Генерация ключей становится еще сложнее. То же самое касается разработки аналитической системы, новостной ленты или форума вопросов и ответов, каждый из которых имеет свой собственный набор общих DS & A.

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

Шаг 6 – Компромиссы

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

Вот несколько распространенных примеров:

Какой тип базы данных вы бы использовали и почему?

Какие существуют решения для кэширования? Что бы вы выбрали и почему?

Какие рамки мы можем использовать в качестве инфраструктуры в выбранной вами экосистеме?

Практика – это ключ

Несмотря на то, что вы определенно можете отточить теорию самостоятельно, последняя часть головоломки – это практика.

Зарегистрируйся, чтобы продолжить изучение работы

    Поделиться сочинением
    Ещё сочинения
    Нет времени делать работу? Закажите!

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