P
prepair.app
Пройти интервью →
EnglishУкраїнськаРусскийDeutsch
⚛️

Senior React FrontendВопросы на собеседовании React разработчика

Senior · 5+ лет опыта

Собеседование React смешивает специфику фреймворка — хуки, рендеринг, состояние — с основами JavaScript, по которым видно, понимаете ли вы, что React делает под капотом. Ниже — самые частые вопросы с эталонными ответами. Senior: архитектуру, трейд-оффы, менторство и принятие решений.

Попробовать — без регистрации
Готовим вопрос…

Темы для подготовки

Хуки: useState, useEffect, useMemo
Virtual DOM и reconciliation
Управление состоянием
Оптимизация рендеров
JavaScript: замыкания, event loop
TypeScript в React

6 вопросов уровня Senior с ответами

1

Что реально меняется, когда компонент становится серверным?

Ответ

Он выполняется только на сервере, поэтому не отправляет JavaScript в браузер и может обращаться к базе напрямую, но не может хранить состояние, использовать эффекты и вешать обработчики. Настоящая работа — провести границу: интерактивные листья остаются клиентскими, всё выше может быть серверным. Пометка «use client» делает клиентским и всё, что компонент импортирует, и именно так бандл незаметно перестаёт уменьшаться.

2

У приложения плохой INP. Как подступиться?

Ответ

INP измеряет задержку между действием и визуальным откликом, поэтому ищут длинные задачи в главном потоке во время взаимодействия. Обычные причины: обновление состояния, перерисовывающее большое дерево, дорогой синхронный обработчик и ещё идущая гидратация. Инструменты — Profiler и записи о длинных задачах; лечение — сузить перерисовку, useTransition для несрочных обновлений и меньше JavaScript в принципе.

3

Как решить, что относится к компоненту дизайн-системы, а что к фиче?

Ответ

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

4

Ошибка гидратации возникает только в проде. Как отлаживать?

Ответ

Это значит, что серверный HTML и первый клиентский рендер разошлись, и причин немного: Date.now или Math.random в рендере, чтение localStorage или window по пути рендера, форматирование по локали и таймзоне, расширения браузера, переписывающие DOM. Воспроизведите продовый рендер локально и делите дерево пополам. Подавить предупреждение — неверное решение: два дерева останутся реально разными.

5

Когда монорепозиторий во фронтенде оправдан, а когда это накладные расходы?

Ответ

Оправдан, когда несколько приложений делят компоненты и вы хотите ревьюить и выпускать изменение сразу для всех, имея инструменты — Turborepo или Nx — для инкрементальных сборок. Накладными расходами становится для одного приложения с парой библиотек, где вы платите настройкой кеша и сложностью CI без нужды. Решающий вопрос — межпакетные изменения происходят еженедельно или дважды в год.

6

Как мигрировать большую кодовую базу с классовых компонентов на хуки?

Ответ

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

🦎

Прочитать ответы недостаточно

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

Пройти интервью Senior React Frontend →
Бесплатно · 3 интервью в месяц

Другие уровни — React Frontend

Junior React FrontendMiddle React FrontendВсе вопросы React Frontend

Другие специализации

🔍Senior QA Manual🤖Senior QA AutomationSenior Java Backend🐍Senior Python Backend🐘Senior PHP Backend🦫Senior Go Backend🟢Senior Node.js Backend💎Senior Ruby on Rails🟣Senior .NET Backend Developer🔷Senior C++