Skip to content

Latest commit

 

History

History
36 lines (25 loc) · 5.56 KB

system-design-web.md

File metadata and controls

36 lines (25 loc) · 5.56 KB

Архитектура веб-приложений

Как проходит секция

Данную секцию мы проводим для разработчиков уровня middle+ и выше. Цель интервью — узнать твой опыт проектирования и сопровождения веб-приложений, а также твои способности решать задачи связанные с проектированием систем.

Для визуализации процесса проектирования используется онлайн-доска Sketchboard. Для упрощения работы с обширной палитрой данного инструмента в ходе секции рекомендуется пользоваться только элементами раздела Software Sketching. К сожалению, у данного сервиса нет демо-версии, но если хочется познакомиться с подобными инструментами поближе, можно попробовать excalidraw.com — он очень близок по функциональности. Шаринг экрана не потребуется.

Постарайся записывать или схематически зарисовывать (если это возможно) всё, что говоришь вслух.

Продолжительность секции — 60 минут.

Этапы секции

В ходе интервью тебе будет будет предложен набор функциональных требований к системе. Тебе нужно будет:

  • Формализовать задачу: уточнить требования, выяснить основные сценарии работы системы. Что требуется от системы? В каких условиях будет существовать система?
  • Наглядно описать компоненты системы и их взаимодействие между собой: схематически изобразить компоненты, показать связи между ними. Схема должна наглядно показывать, какие системы будут использованы для того, чтобы пользователь мог увидеть результат в браузере. При этом нет необходимости глубоко погружаться в бекенд.
  • Спроектировать компонентную структуру фронтового приложения, формализовать API, спроектировать модель данных. По итогу должно быть понятно, как, где и какие данные хранятся и передаются между фронтовым приложением и бекендом.
  • Идем глубже:
    • Оценить узкие места в системе, рассказать, какие оптимизации можно применить для снижения нагрузки на бекенд, для ускорения доставки данных до клиента, для улучшения performance-метрик.
    • Критически оценить систему на предмет безопасности, убедиться, что закрыты все основные уязвимости.
    • Прочие моменты — UX, a11y, i18n, поддержка различных устройств и так далее.

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

Материалы для подготовки

  • Для практики можно разобрать типичные сайты средних/крупных компаний, например, tinkoff.ru, youtube.com, web.telegram.com и другие. Попробуй дайть ответы на следующие вопросы:
    • Как устроен такой сайт?
    • Какие системы участвуют в том, чтобы конечный пользователь увидел сайт и смог и воспользоваться?
    • С какими вызовами могли столкнуться разработчики сайта? Часто можно найти доклады, в которых непосредственные разработчики сайта рассказывают о своем проекте, и как он устроен.
    • На какие слои и компоненты разделен сам сайт? Что сделано для того, чтобы его просто было поддерживать?
  • Front End Interview Handbook — сайт с описанием похожего формата собеседований, много ссылок на полезные статьи и материалы
  • Front-End Engineer - канал с разбором базовых задач и описанием формата
  • Книга "Чистая архитектура. Искусство разработки программного обеспечения | Мартин Роберт"