Какие навыки в архитектуре есть
Что проверяют
Умеете ли вы принимать решения на уровне приложения, а не только компонента. Список библиотек здесь мало что значит: интервьюеру важно, понимаете ли вы, какие проблемы решает архитектура и чем за неё платите. Следом почти всегда просят: «расскажите о решении, которое вы приняли, и какую альтернативу отбросили».
Как отвечать
Разложите навыки по уровням и на каждом покажите решение, а не инструмент:
- структура кода: разбиение по фичам, а не по типам файлов, Feature-Sliced Design или своя схема, правила импортов между слоями, закреплённые линтером;
- состояние: серверные данные отдельно от клиентского состояния. Для первых
TanStack Query,RTK QueryилиSWRс кэшем и инвалидацией, для второго локальный state,ZustandилиRedux Toolkit, когда состояние действительно общее; - рендеринг: CSR, SSR, SSG, инкрементальная регенерация, React Server Components. Выбор зависит от SEO, свежести данных и нагрузки на сервер;
- масштабирование команд: монорепозиторий на
NxилиTurborepo, дизайн-система отдельным пакетом, микрофронтенды через Module Federation, когда командам правда нужно релизиться независимо; - нефункциональные требования: бюджет размера бандла, Core Web Vitals, доступность, обработка ошибок через Error Boundary, мониторинг в
Sentry; - тесты: юнит на логику, интеграционные на компоненты через Testing Library, немного e2e на критичные сценарии;
- фиксация решений: ADR, короткие записи о том, что выбрали и почему.
Опирайтесь на свой опыт: одно-два решения, которые вы приняли или отстояли, с ценой и последствиями. Если архитектуру проекта целиком вы не проектировали, так и скажите, расскажите, за какую часть отвечали и что бы изменили.
Где спотыкаются
Перечисляют библиотеки: Redux, React Router, Jest. Это инструменты, а вопрос о том, как вы принимаете решения.
Держат серверные данные в глобальном сторе и вручную пишут загрузку, кэш и повторные запросы, которые готовые библиотеки дают из коробки.
Предлагают микрофронтенды для команды из трёх человек и не называют цену: сложная сборка, дублирование зависимостей, расходящийся общий UI.