Вопросы на собеседовании: React Native
Учебник собран из реальных вопросов, которые задают на собеседованиях по React Native — от junior до senior. Каждый урок разбирает один-три вопроса по одной схеме: сам вопрос, что за ним на самом деле проверяет интервьюер, развёрнутый ответ с примерами кода, типичные ошибки кандидатов и короткая выжимка, которую можно произнести за полминуты.
Пять разделов ведут от устройства фреймворка (bridge, JSI, Fabric, TurboModules, Hermes) через React-фундамент и навигацию к состоянию, данным, производительности длинных списков и публикации приложения в сторы. Курс подойдёт и для подготовки к собеседованию, и как быстрый способ найти пробелы в собственных знаниях.
Курс «Вопросы на собеседовании: React Native» состоит из 5 разделов и 15 уроков: Как устроен React Native, React-фундамент на собеседовании, Компоненты, стили и навигация, Состояние приложения и работа с данными и Производительность, нативный код и релиз. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Как устроен React Native
- Чем React Native отличается от гибрида и от нативной разработки
Разбор вопроса с собеседования: чем React Native отличается от Cordova и Ionic, от Flutter и от нативной разработки, и правда ли, что RN компилируется в нативный код.
- Старая архитектура: bridge и его узкие места
Как работал bridge в старой архитектуре React Native: три потока, асинхронная сериализация в JSON, батчинг сообщений и классические тормоза при скролле и анимациях.
- Новая архитектура: JSI, Fabric, TurboModules и Hermes
Вопрос с собеседования по новой архитектуре React Native: что даёт JSI вместо bridge, зачем нужны Fabric и TurboModules, что такое Codegen и чем Hermes лучше JavaScriptCore.
- Чем React Native отличается от гибрида и от нативной разработки
2 React-фундамент на собеседовании
- useState: батчинг, устаревшие замыкания и правила хуков
Разбор вопросов с собеседования про useState: почему состояние не меняется сразу, зачем функциональное обновление, ленивая инициализация и почему хуки нельзя вызывать в условии.
- useEffect: зависимости, очистка и гонки запросов
Вопросы с собеседования про useEffect: как работает массив зависимостей, зачем функция очистки, откуда берётся бесконечный цикл рендеров и как отменять устаревшие запросы.
- useMemo, useCallback, React.memo и ключи в списках
Когда мемоизация в React действительно нужна: useMemo и useCallback, React.memo и ссылочное равенство, почему индекс массива — плохой key и к каким багам это приводит.
- useState: батчинг, устаревшие замыкания и правила хуков
3 Компоненты, стили и навигация
- View, Text, Image и стили: чем RN отличается от вёрстки в вебе
Разбор вопросов про базовые компоненты React Native и стилизацию: зачем StyleSheet.create, почему flexDirection по умолчанию column, отсутствие каскада и особенности Image.
- Различия iOS и Android, о которых спрашивают
Платформенные различия в React Native на собеседовании: Platform.select и файлы .ios.js, тени и elevation, SafeArea и вырезы, клавиатура, разрешения и обратная кнопка Android.
- React Navigation: стек, табы, параметры и deep links
Вопросы по React Navigation на собеседовании: стековый и табовый навигаторы, передача параметров, navigate против push, состояние экранов при возврате и глубокие ссылки.
- View, Text, Image и стили: чем RN отличается от вёрстки в вебе
4 Состояние приложения и работа с данными
- Локальное состояние против глобального и цена Context
Разбор вопроса про Context в React: почему он не заменяет state manager, как значение провайдера вызывает лавину рендеров и как правильно разделять контексты.
- Redux Toolkit и альтернативы: что выбрать и почему
Вопросы про state management в React Native: что даёт Redux Toolkit, зачем createSlice и createAsyncThunk, чем отличаются Zustand, Jotai и MobX и как это обосновать на собеседовании.
- Сеть, кэширование и хранение данных на устройстве
Вопросы с собеседования: как в React Native работать с сетью, зачем TanStack Query и кэш, чем AsyncStorage отличается от MMKV, где хранить токен и как жить в оффлайне.
- Локальное состояние против глобального и цена Context
5 Производительность, нативный код и релиз
- Почему тормозит FlatList и как это чинить
Разбор вопроса про длинные списки в React Native: виртуализация FlatList, keyExtractor и getItemLayout, мемоизация ячеек, windowSize и когда стоит взять FlashList.
- Лишние рендеры, изображения и память
Как в React Native находить и убирать лишние рендеры, почему приложение падает из-за картинок, как работает память на iOS и Android и зачем нужен нативный драйвер анимаций.
- Нативные модули, отладка и публикация в сторы
Финальные вопросы собеседования по React Native: когда нужен нативный модуль, как отлаживать и профилировать приложение, чем занимаются CodePush и EAS и как выкатывать релиз в сторы.
- Почему тормозит FlatList и как это чинить