Junior React Native разработчик: вопросы и ответы для собеседования

Milad Bonakdar
Автор
Практикуйте вопросы для Junior React Native: компоненты, хуки, навигация, API-запросы, списки, AsyncStorage и мобильные основы.
Введение
На собеседовании Junior React Native обычно проверяют, умеете ли вы создавать простые мобильные экраны на React, объяснять нативный рендеринг, управлять состоянием с помощью хуков, переходить между экранами, получать данные из API и хранить локальные не чувствительные данные. Сильный ответ должен быть практичным: что вы используете, когда этого избегаете и какой компромисс есть на iOS и Android.
Используйте это руководство, чтобы отработать вопросы, которые чаще всего встречаются на первой роли React Native. Сфокусируйтесь на основах React, ключевых компонентах, навигации, формах, списках, API-запросах, хранении данных и мобильной отладке, а не на заучивании деталей библиотек.
Основы React (6 вопросов)
1. Что такое React Native и чем он отличается от React?
Ответ:
- React: JavaScript-библиотека для создания веб-интерфейсов
- React Native: Фреймворк для создания нативных мобильных приложений с использованием React
- Ключевые отличия:
- React Native рендерит в нативные компоненты (не в DOM)
- Использует нативные API вместо веб-API
- Другой подход к стилизации (нет CSS, используется StyleSheet)
- Платформо-специфичный код для iOS и Android
Распространенность: Очень часто Сложность: Легко
2. Какие основные компоненты есть в React Native?
Ответ: React Native предоставляет встроенные компоненты, которые соответствуют нативным элементам UI:
- View: Компонент-контейнер (как
divв вебе) - Text: Отображение текста (весь текст должен быть в компоненте
Text) - Image: Отображение изображений
- ScrollView: Контейнер с возможностью прокрутки
- TextInput: Поле ввода текста
- TouchableOpacity/Pressable: Элементы, на которые можно нажать
- FlatList: Эффективный рендеринг списков
- Button: Базовый компонент кнопки
Распространенность: Очень часто Сложность: Легко
3. Объясните разницу между View и ScrollView.
Ответ:
- View: Статический контейнер. Контент за пределами экрана не прокручивается.
- ScrollView: Контейнер с возможностью прокрутки. Рендерит все дочерние элементы сразу (может быть ресурсоемким для больших списков).
- Когда использовать:
- View: Для макетов, которые помещаются на экране
- ScrollView: Для небольшого количества прокручиваемого контента
- FlatList: Для больших списков (рендерит только видимые элементы)
Распространенность: Очень часто Сложность: Легко
4. Что такое React Hooks и какие из них наиболее часто используются?
Ответ: Хуки - это функции, которые позволяют использовать состояние и функции жизненного цикла в функциональных компонентах.
- Распространенные хуки:
- useState: Управление состоянием компонента
- useEffect: Обработка побочных эффектов (загрузка данных, подписки)
- useContext: Доступ к значениям контекста
- useCallback: Мемоизация функций
- useMemo: Мемоизация дорогостоящих вычислений
- useRef: Ссылка на элементы DOM или сохранение значений
Распространенность: Очень часто Сложность: Легко
5. Объясните хук useEffect и его массив зависимостей.
Ответ:
useEffect запускает побочные эффекты после рендеринга. Массив зависимостей контролирует, когда он запускается:
- Нет массива: Запускается после каждого рендеринга
- Пустой массив
[]: Запускается один раз после первоначального рендеринга - С зависимостями
[dep1, dep2]: Запускается при изменении зависимостей
Распространенность: Очень часто Сложность: Средне
6. Что такое Virtual DOM и как React его использует?
Ответ: Virtual DOM — это концепция React для веб-разработки: React хранит легковесное дерево интерфейса, сравнивает его после изменений состояния и обновляет только то, что изменилось. В React Native применяется та же идея reconciliation, но итоговый результат — нативные views, а не узлы DOM браузера.
- Что сказать на собеседовании:
- Изменения состояния запускают повторный рендер затронутых компонентов
- React сравнивает новое дерево компонентов с предыдущим
- React Native применяет нужные обновления к нативным UI-компонентам
- Оптимизация всё еще включает стабильные key, правильное размещение state и мемоизацию только там, где она решает реальную проблему лишних ререндеров
- Важное уточнение: React Native не обновляет HTML или DOM браузера.
Распространенность: Часто Сложность: Легко
Компоненты и Props (4 вопроса)
7. В чем разница между Props и State?
Ответ:
- Props:
- Передаются от родителя к ребенку
- Только для чтения (неизменяемые)
- Используются для конфигурации компонента
- State:
- Управляется внутри компонента
- Изменяемый (можно изменить)
- Используется для динамических данных
Распространенность: Очень часто Сложность: Легко
8. Что такое функциональные компоненты и классовые компоненты?
Ответ:
- Функциональные компоненты:
- Более простой синтаксис
- Используют хуки для состояния и жизненного цикла
- Предпочтительны в современном React
- Классовые компоненты:
- Более старый подход
- Используют
this.stateи методы жизненного цикла - Все еще поддерживаются, но менее распространены
Распространенность: Часто Сложность: Легко
9. Как передать данные из дочернего компонента в родительский?
Ответ: Используйте функции обратного вызова, переданные в качестве props.
Распространенность: Очень часто Сложность: Легко
10. Что такое prop key и почему он важен?
Ответ:
Prop key помогает React определить, какие элементы изменились, были добавлены или удалены в списках.
- Цель: Оптимизация производительности рендеринга
- Требования: Должен быть уникальным среди соседей, стабильным (не используйте индекс, если список может измениться)
Распространенность: Очень часто Сложность: Легко
Стилизация и Layout (3 вопроса)
11. Как стилизовать компоненты в React Native?
Ответ: React Native использует объекты JavaScript для стилизации, а не CSS.
- StyleSheet API: Создание оптимизированных стилей
- Inline Styles: Прямые объекты стилей (менее производительно)
- Flexbox: Система компоновки по умолчанию
Распространенность: Очень часто Сложность: Легко
12. Объясните Flexbox в React Native.
Ответ: Flexbox - это основная система компоновки в React Native.
- Основные свойства:
- flexDirection:
rowилиcolumn(по умолчанию:column) - justifyContent: Выравнивание по главной оси
- alignItems: Выравнивание по поперечной оси
- flex: Пропорциональное определение размеров
- flexDirection:
Распространенность: Очень часто Сложность: Средне
13. В чем разница между margin и padding?
Ответ:
- Padding: Пространство внутри компонента (между контентом и границей)
- Margin: Пространство снаружи компонента (между компонентом и соседями)
Распространенность: Часто Сложность: Легко
Навигация (3 вопроса)
14. Что такое React Navigation и как его использовать?
Ответ: React Navigation - самая популярная библиотека навигации для React Native.
- Типы:
- Stack Navigator: Стек экранов (push/pop)
- Tab Navigator: Нижние вкладки
- Drawer Navigator: Боковое меню
Распространенность: Очень часто Сложность: Средне
15. Как передать параметры между экранами?
Ответ:
Используйте функцию navigate со вторым параметром для данных.
Распространенность: Очень часто Сложность: Легко
16. Что такое параметры навигации и как настроить заголовки?
Ответ: Параметры навигации контролируют внешний вид и поведение экрана.
Распространенность: Часто Сложность: Легко
Данные и хранилище (4 вопроса)
17. Как получить данные из API в React Native?
Ответ:
Используйте fetch API или библиотеки, такие как Axios.
Распространенность: Очень часто Сложность: Средне
18. Что такое AsyncStorage и как его использовать?
Ответ: AsyncStorage — это асинхронное key-value хранилище для небольших не чувствительных данных.
- Хорошие сценарии: Выбор темы, флаги онбординга, кэшированный JSON, простые настройки
- Не используйте для: Auth-токенов, API-ключей, паролей, больших наборов данных и данных со сложными запросами
- Для чувствительных данных: Используйте защищенное хранилище платформы, например iOS Keychain или зашифрованное хранилище Android через поддерживаемую библиотеку
Распространенность: Очень часто Сложность: Легко
19. В чем разница между FlatList и ScrollView?
Ответ:
- ScrollView:
- Рендерит все дочерние элементы сразу
- Хорошо подходит для небольших списков
- Ресурсоемкий для больших списков
- FlatList:
- Рендерит только видимые элементы (ленивая загрузка)
- Эффективен для больших списков
- Встроенные оптимизации
Распространенность: Очень часто Сложность: Легко
20. Как обрабатывать формы и ввод пользователя?
Ответ: Используйте контролируемые компоненты с состоянием.
Распространенность: Очень часто Сложность: Средне


