Мобильная разработка

Вопросы на собеседовании: React Native

15 уроков · 5 разделов · бесплатно, без регистрации

Учебник собран из реальных вопросов, которые задают на собеседованиях по React Native — от junior до senior. Каждый урок разбирает один-три вопроса по одной схеме: сам вопрос, что за ним на самом деле проверяет интервьюер, развёрнутый ответ с примерами кода, типичные ошибки кандидатов и короткая выжимка, которую можно произнести за полминуты.

Пять разделов ведут от устройства фреймворка (bridge, JSI, Fabric, TurboModules, Hermes) через React-фундамент и навигацию к состоянию, данным, производительности длинных списков и публикации приложения в сторы. Курс подойдёт и для подготовки к собеседованию, и как быстрый способ найти пробелы в собственных знаниях.

Курс «Вопросы на собеседовании: React Native» состоит из 5 разделов и 15 уроков: Как устроен React Native, React-фундамент на собеседовании, Компоненты, стили и навигация, Состояние приложения и работа с данными и Производительность, нативный код и релиз. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Как устроен React Native

    1. Чем React Native отличается от гибрида и от нативной разработки

      Разбор вопроса с собеседования: чем React Native отличается от Cordova и Ionic, от Flutter и от нативной разработки, и правда ли, что RN компилируется в нативный код.

    2. Старая архитектура: bridge и его узкие места

      Как работал bridge в старой архитектуре React Native: три потока, асинхронная сериализация в JSON, батчинг сообщений и классические тормоза при скролле и анимациях.

    3. Новая архитектура: JSI, Fabric, TurboModules и Hermes

      Вопрос с собеседования по новой архитектуре React Native: что даёт JSI вместо bridge, зачем нужны Fabric и TurboModules, что такое Codegen и чем Hermes лучше JavaScriptCore.

  2. 2 React-фундамент на собеседовании

    1. useState: батчинг, устаревшие замыкания и правила хуков

      Разбор вопросов с собеседования про useState: почему состояние не меняется сразу, зачем функциональное обновление, ленивая инициализация и почему хуки нельзя вызывать в условии.

    2. useEffect: зависимости, очистка и гонки запросов

      Вопросы с собеседования про useEffect: как работает массив зависимостей, зачем функция очистки, откуда берётся бесконечный цикл рендеров и как отменять устаревшие запросы.

    3. useMemo, useCallback, React.memo и ключи в списках

      Когда мемоизация в React действительно нужна: useMemo и useCallback, React.memo и ссылочное равенство, почему индекс массива — плохой key и к каким багам это приводит.

  3. 3 Компоненты, стили и навигация

    1. View, Text, Image и стили: чем RN отличается от вёрстки в вебе

      Разбор вопросов про базовые компоненты React Native и стилизацию: зачем StyleSheet.create, почему flexDirection по умолчанию column, отсутствие каскада и особенности Image.

    2. Различия iOS и Android, о которых спрашивают

      Платформенные различия в React Native на собеседовании: Platform.select и файлы .ios.js, тени и elevation, SafeArea и вырезы, клавиатура, разрешения и обратная кнопка Android.

    3. React Navigation: стек, табы, параметры и deep links

      Вопросы по React Navigation на собеседовании: стековый и табовый навигаторы, передача параметров, navigate против push, состояние экранов при возврате и глубокие ссылки.

  4. 4 Состояние приложения и работа с данными

    1. Локальное состояние против глобального и цена Context

      Разбор вопроса про Context в React: почему он не заменяет state manager, как значение провайдера вызывает лавину рендеров и как правильно разделять контексты.

    2. Redux Toolkit и альтернативы: что выбрать и почему

      Вопросы про state management в React Native: что даёт Redux Toolkit, зачем createSlice и createAsyncThunk, чем отличаются Zustand, Jotai и MobX и как это обосновать на собеседовании.

    3. Сеть, кэширование и хранение данных на устройстве

      Вопросы с собеседования: как в React Native работать с сетью, зачем TanStack Query и кэш, чем AsyncStorage отличается от MMKV, где хранить токен и как жить в оффлайне.

  5. 5 Производительность, нативный код и релиз

    1. Почему тормозит FlatList и как это чинить

      Разбор вопроса про длинные списки в React Native: виртуализация FlatList, keyExtractor и getItemLayout, мемоизация ячеек, windowSize и когда стоит взять FlashList.

    2. Лишние рендеры, изображения и память

      Как в React Native находить и убирать лишние рендеры, почему приложение падает из-за картинок, как работает память на iOS и Android и зачем нужен нативный драйвер анимаций.

    3. Нативные модули, отладка и публикация в сторы

      Финальные вопросы собеседования по React Native: когда нужен нативный модуль, как отлаживать и профилировать приложение, чем занимаются CodePush и EAS и как выкатывать релиз в сторы.