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

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

Middle · 2–4 года опыта

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

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

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

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

7 вопросов уровня Middle с ответами

1

Когда useMemo реально помогает, а когда это шум?

Ответ

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

2

Компонент перерисовывается гораздо чаще ожидаемого. Как выяснить почему?

Ответ

Открыть Profiler, записать взаимодействие и посмотреть «why did this render» — пропсы, состояние или родитель. Обычные причины: объект или стрелочная функция, созданные инлайн в родителе, контекст, значение которого пересоздаётся каждый рендер, и состояние, поднятое выше, чем нужно. Чинить надо причину, а не накрывать React.memo, который её лишь прячет.

3

Какую задачу решает Context и где он становится неверным инструментом?

Ответ

Context избавляет от протаскивания значения через компоненты, которым оно безразлично — тема, локаль, текущий пользователь. Неверным он становится для часто меняющегося состояния: при изменении значения перерисовываются все потребители, и нет селектора, чтобы подписаться на часть. С этого момента нужна библиотека состояния с подписками, а не один контекст, в котором лежит всё.

4

Зачем нужна библиотека вроде TanStack Query вместо useEffect и fetch?

Ответ

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

5

Чем useEffect отличается от useLayoutEffect?

Ответ

useEffect выполняется после отрисовки браузером, поэтому пользователь может на мгновение увидеть состояние до эффекта. useLayoutEffect выполняется синхронно после изменений DOM, но до отрисовки, что убирает мигание ценой блокировки. useLayoutEffect берут только когда вы измеряете DOM и тут же меняете что-то по результату измерения — позиция тултипа, поправка скролла.

6

Как обработать ошибку, брошенную во время рендера?

Ответ

Её ловит error boundary и показывает запасной интерфейс вместо белой страницы, потому что непойманная ошибка рендера размонтирует всё дерево. Границы не ловят ошибки в обработчиках событий и в асинхронном коде — это как раз то, что упускают, там нужен обычный try/catch. Ставить границы стоит вокруг осмысленных секций, чтобы один сломанный виджет не уносил экран.

7

Где размещать разбиение кода в React-приложении?

Ответ

Сначала на уровне маршрутов, потому что пользователь, зашедший на один экран, не должен скачивать всё приложение. Затем вокруг действительно тяжёлых и редко используемых компонентов — библиотека графиков, редактор текста, модалка, которую большинство не открывает. Дробление мельче добавляет накладные расходы на запросы и состояния загрузки в обмен на килобайты.

🦎

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

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

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

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

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

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

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