Используются ли микрофронты или монорепозиторий
Что проверяют
Понимаете ли вы, что микрофронтенды и монорепозиторий отвечают на разные вопросы и не исключают друг друга. Первое про то, как приложение собирается и выкатывается, второе про то, где лежит код. Следом обычно спрашивают, как вы делили общие зависимости и дизайн-систему.
Как отвечать
Сначала разведите понятия, потом расскажите, что было у вас:
- монорепозиторий: несколько пакетов и приложений в одном репозитории с общими настройками линтера, TypeScript и CI. Инструменты:
pnpm workspacesдля связи пакетов, Nx или Turborepo для кэша сборки и запуска задач только по затронутым пакетам (nx affected, фильтры вturbo run), Changesets для версий публикуемых пакетов; - микрофронтенды: части интерфейса собираются и деплоятся независимо и склеиваются в браузере. Варианты: Module Federation (webpack 5, Rspack), single-spa, Web Components, в крайнем случае iframe;
- комбинация: микрофронтенды часто живут в монорепо, Nx умеет генерировать хост и удалённые модули с Module Federation.
Затем назовите цену микрофронтендов: общий React нужно объявлять в shared как singleton, иначе на странице окажутся две копии и сломаются хуки; стили разных команд конфликтуют; растёт вес загрузки; нужен общий роутинг и контракт между модулями. Оправданы они там, где несколько команд с собственным релизным циклом, а не в продукте одной команды.
Если работали только с одним репозиторием и одним бандлом, так и скажите, а затем опишите, по каким признакам предложили бы разделение: команды мешают друг другу на релизах, сборка идёт десятки минут.
Где спотыкаются
Противопоставляют одно другому, как в вопросе «или». Интервьюер слышит, что кандидат не разобрался в терминах.
Продают микрофронтенды как способ писать части на разных фреймворках. Технически можно, но на практике это двойной рантайм и дорогая поддержка, так делают разве что на время миграции.
Описывают монорепо без инструментов: CI собирает всё на каждый коммит, пакеты импортируют друг друга относительными путями в обход публичного API, границ нет.