#16 Собеседование Senior Frontend разработчика из Mail.ru
Выпуск публичного интервью на Senior Frontend: практический опыт кандидата, архитектура frontend-приложений и фундаментальные вопросы JavaScript. Участники подробно спорят о CSS-изоляции, state management и dependency injection.
Публичное техническое интервью с Александром — frontend-разработчиком Mail.ru, работающим над Юлой, — охватывает его переход из Java в frontend, опыт поддержки e-commerce-проекта и предпочтения в инженерной работе. Основная часть посвящена StackBlitz, изоляции CSS, Atomic CSS и Tailwind CSS, менеджерам состояния и разделению бизнес-логики с представлением. В технической секции обсуждают замыкания, контекст и bind, event loop, задачи и микрозадачи, а затем ООП, инкапсуляцию и dependency injection. В финале интервьюеры высказывают мнение, что Александр справился с этим публичным собеседованием; это не утверждение о найме или оффере.
При оздоровлении legacy e-commerce-проекта Александр начал с компонентного подхода, Storybook и unit-тестов: это помогло разбить монолитную верстку на независимо проверяемые компоненты.
Компонент должен как можно меньше знать о внешнем мире: не задавать собственное позиционирование и внешние отступы, не зависеть от глобальных стилей; такие зависимости хорошо проявляются в Storybook и тестах.
StackBlitz, по мнению участников, особенно полезен для обучения, быстрого прототипирования и запуска Node.js-проектов без локальной установки, но не обязательно заменяет локальную разработку с Docker и полноценными окружениями.
BEM задаёт методологию проектирования интерфейса, но сам по себе не гарантирует уникальность имён классов; CSS Modules дают техническую изоляцию через преобразование имён при сборке.
Atomic CSS и Tailwind CSS участники связывают с сильной дизайн-системой: подход снижает произвольность стилей, но при прямом использовании utility-классов может ухудшать читаемость и DX.
Менеджер состояния оправдан для действительно общего состояния, кэша и оркестрации загрузок; локальную логику страницы разумнее оставлять в компонентах, хуках или отдельных функциях.
При подготовке к JavaScript-вопросам стоит уметь объяснить event loop: обработчики Promise попадают в очередь микрозадач, которая выполняется до перехода к следующей задаче, а бесконечная цепочка микрозадач способна блокировать интерфейс.