Кроссплатформенный разработчик React Native (Профессиональный уровень)
Учебная программа курса Кроссплатформенный разработчик React Native Профессиональный уровень направлена на углубленное изучение мобильной разработки с акцентом на создание высокопроизводительных приложений для iOS и Android. В программе рассматриваются продвинутые темы, включая работу с нативными модулями, оптимизацию производительности, асинхронные операции, использование современных библиотек маршрутизации и управления состоянием. Также уделяется внимание архитектурным паттернам, интеграции с нативным кодом, тестированию и деплою приложений.
В рамках курса предстоит пройти следующие модули:
- Углубленное изучение JavaScript/TypeScript для профессиональной разработки
- Архитектура приложений: Redux, MobX, Context API, новые подходы с React Hooks и Server Components
- Работа с нативными модулями и связью с нативным кодом (Native Modules, Turbo Modules)
- Интеграция сторонних библиотек и написание собственных
- Продвинутая навигация: React Navigation, deep linking, navigation lifecycle
- Асинхронные операции, работа с сетью, кэширование данных, offline-first подход
- Тестирование: unit, integration и end-to-end тесты с использованием Jest, Detox, Testing Library
- Оптимизация производительности: memory management, debugging, profiling
- Геолокационные сервисы, push-уведомления, работа с камерой, датчиками и другими нативными функциями
- Деплой приложений: Google Play Console, App Store Connect, автоматизация CI/CD
По окончании курса выпускник должен уметь:
- Разрабатывать сложные кроссплатформенные приложения с высокой производительностью
- Интегрировать нативный код и использовать возможности платформы на уровне профессионала
- Применять продвинутые архитектурные подходы и паттерны проектирования
- Проводить полное тестирование приложений, включая юнит- и энд-ту-энд тесты
- Оптимизировать приложения под различные устройства и условия использования
- Выполнять сборку, релиз и сопровождение приложений в магазинах приложений
Выпускник должен знать:
- Продвинутые концепции React Native и их применение в реальных проектах
- Архитектурные паттерны и практики масштабируемости
- Механизмы взаимодействия с нативным кодом и системными API
- Подходы к управлению зависимостями, состоянием и навигацией в крупных приложениях
- Методики отладки, профилирования и оптимизации производительности
Формат обучения включает лекции, практические задания, групповые проекты и финальный capstone проект, реализуемый по аналогии с реальным коммерческим продуктом.
Хотите узнать, насколько вам необходим этот курс и действительно ли вы разобрались в теме?
Пройдите короткий тест — он поможет определить, стоит ли углубляться в эту тему, или вы уже готовы двигаться дальше.
1. Какие основные цели курса Кроссплатформенный разработчик React Native Профессиональный уровень?
Основная цель курса — подготовить специалистов, способных создавать высокопроизводительные кроссплатформенные мобильные приложения с использованием React Native на профессиональном уровне. Курс охватывает углубленное изучение архитектуры, нативной интеграции, оптимизации производительности и применение продвинутых паттернов проектирования.
2. Что входит в учебную программу курса?
Программа включает модули по углубленному JavaScript/TypeScript, архитектуре приложений (Redux, MobX, Context API), работе с нативными модулями, продвинутой навигации, тестированию, оптимизации, геолокационным сервисам, деплою и CI/CD.
3. Какие технологии и библиотеки будут изучаться в рамках курса?
В рамках курса будут изучаться React Native, JavaScript, TypeScript, Redux, MobX, React Navigation, Jest, Detox, Testing Library, а также современные практики работы с нативным кодом через Turbo Modules и Native Modules.
4. Какова структура курса?
Курс состоит из лекций, практических заданий, групповых проектов и финального capstone проекта. Обучение строится вокруг реальных задач, с которыми сталкивается профессиональный разработчик.
5. Почему важно изучать нативную интеграцию в React Native?
Нативная интеграция позволяет расширять возможности приложений за счет использования платформенных API, повышает производительность и открывает доступ к функционалу, недоступному через стандартные средства React Native.
6. Какие архитектурные паттерны рассматриваются в курсе?
В курсе рассматриваются Redux, MobX, Context API, а также новые подходы с использованием React Hooks и Server Components для построения масштабируемых и поддерживаемых приложений.
7. Какие навыки должен приобрести выпускник после прохождения курса?
Выпускник должен уметь разрабатывать сложные кроссплатформенные приложения, интегрировать нативный код, использовать продвинутые архитектурные подходы, тестировать приложения, оптимизировать их и выполнять деплой в магазины приложений.
8. Какие знания необходимы для начала обучения?
Для успешного прохождения курса рекомендуется иметь базовые знания JavaScript, React и понимание принципов мобильной разработки. Также полезно владеть основами TypeScript и Git.
9. Какие практические задания ждут студентов?
Студенты будут выполнять практические задания по созданию компонентов, интеграции API, написанию нативных модулей, реализации навигации, тестированию, оптимизации и другим задачам, близким к реальным рабочим сценариям.
10. Какие проекты будут реализованы в рамках курса?
В рамках курса предусмотрены как мини-проекты по отдельным темам, так и крупный capstone проект, в котором студенты реализуют полноценное кроссплатформенное приложение с нативной интеграцией, авторизацией, работой с API и другими функциями.
11. Какие инструменты используются для управления состоянием в React Native?
В курсе рассматриваются Redux, MobX, Context API, а также новые решения, такие как Zustand и использование React Query для работы с серверными данными.
12. Как осуществляется работа с нативными модулями?
Работа с нативными модулями включает создание собственных модулей на Java/Kotlin (Android) и Objective-C/Swift (iOS), их связывание с JS-кодом, использование Turbo Modules и Codegen для более эффективного взаимодействия.
13. Какие методы оптимизации производительности изучаются в курсе?
Методы включают оптимизацию рендеринга компонентов, управление памятью, использование PureComponent и React.memo, профилирование с помощью Chrome DevTools и React Developer Tools, а также native performance optimization.
14. Какие способы тестирования изучаются в курсе?
В курсе рассматриваются unit-тестирование с Jest, интеграционное тестирование с Testing Library, end-to-end тестирование с Detox, snapshot testing и mocking внешних зависимостей.
15. Как происходит интеграция push-уведомлений в приложения React Native?
Интеграция push-уведомлений проводится с использованием Firebase Cloud Messaging (FCM) для Android и Apple Push Notification Service (APNs) для iOS, включая background fetch, local notifications и обработку событий.
16. Какие подходы к навигации изучаются в курсе?
Изучаются библиотеки React Navigation, включая stack, tab, drawer навигаторы, deep linking, navigation lifecycle, предзагрузка экранов, передача параметров и кастомизация навигационного интерфейса.
17. Какие особенности работы с файловой системой в React Native?
Рассматриваются библиотеки, такие как react-native-fs и expo-file-system, которые позволяют читать, записывать, удалять файлы, работать с медиа, кэшировать данные и обеспечивать offline-first подход.
18. Как организуется работа с камерой и галереей?
Используются библиотеки react-native-image-picker и expo-image-picker, а также нативные модули для получения доступа к камере, выбора фото, записи видео и последующей обработки медиафайлов.
19. Как реализуется аутентификация и авторизация в приложениях React Native?
Реализация включает OAuth 2.0, JWT, работу с Firebase Auth, Expo AuthSession, хранение токенов в SecureStore или AsyncStorage, обработку ошибок и восстановление сессии.
20. Какие инструменты используются для сборки и деплоя приложений?
Для сборки и деплоя используются Expo CLI, EAS Build, Fastlane, App Store Connect и Google Play Console. Также рассматриваются автоматизация CI/CD процессов с GitHub Actions и других CI-сервисов.
21. Как работает система типов в TypeScript в контексте React Native?
TypeScript добавляет статическую типизацию, что улучшает безопасность кода, помогает в рефакторинге и упрощает документирование. В курсе рассматриваются типы для props, state, hooks, navigation и сторонних библиотек.
22. Какие преимущества использования TypeScript в React Native?
Преимущества включают уменьшение количества runtime ошибок, улучшенную читаемость кода, поддержку IDE, более точные автодополнения и упрощенную совместную разработку.
23. Какие подходы к управлению зависимостями в React Native?
Подходы включают использование npm/yarn/pnpm, peerDependencies, workspace: для моно-репозиториев, а также управление версиями с помощью SemVer и механизмы tree-shaking.
24. Какие практики построения UI-компонентов рассматриваются в курсе?
Практики включают создание переиспользуемых компонентов, стилизация с помощью styled-components, emotion, tailwind-react-native, а также использование ThemeProvider и dark mode.
25. Какие методы работы с анимациями изучаются в курсе?
В курсе рассматриваются Animated API, LayoutAnimation, Reanimated 2, работа с gesture handler, Lottie для анимаций JSON-формата и оптимизация производительности анимаций.
26. Как реализуется работа с геолокацией в React Native?
Реализация включает использование Expo Location, react-native-geolocation-service, получение текущих координат, подписку на изменения местоположения, работу с картами через MapView и Yandex Maps SDK.
27. Какие инструменты используются для работы с сетью в React Native?
Для работы с сетью применяются axios, fetch API, React Query, SWR, а также interceptors, retry logic, caching и обработка ошибок.
28. Какие методы хранения данных на устройстве изучаются в курсе?
Изучаются AsyncStorage, SecureStore, MMKV, SQLite через expo-sqlite и react-native-sqlite-storage, а также использование IndexedDB через WebSQL и ORM, такие как WatermelonDB.
29. Какие принципы работы с асинхронными операциями в React Native?
Принципы включают использование async/await, Promises, useEffect и useReducer, а также работа с background tasks через expo-background-fetch и react-native-background-task.
30. Какие подходы к локализации и международизации изучаются в курсе?
Подходы включают использование i18next, react-i18next, expo-localization, форматирование дат, валют, чисел, а также динамическое изменение языка в приложении.
31. Как реализуется работа с сенсорами устройства?
Реализация включает использование Expo Sensors, react-native-sensors, получение данных с акселерометра, гироскопа, магнитометра, шагомера и других датчиков.
32. Какие практики безопасности рассматриваются в курсе?
Практики включают шифрование данных, безопасное хранение секретов, защиту от XSS и CSRF, использование HTTPS, проверку сертификатов и ограничение привилегий в нативном коде.
33. Какие проблемы могут возникнуть при работе с нативными модулями?
Возможные проблемы включают конфликты версий, несовместимость с новыми версиями React Native, сложности с установкой и настройкой, необходимость глубокого знания Java/Swift и нативных систем.
34. Какие инструменты используются для отладки приложений React Native?
Отладка проводится с помощью Chrome DevTools, React Developer Tools, Flipper, LogBox, а также нативных инструментов Android Studio и Xcode.
35. Какие подходы к документированию кода рассматриваются в курсе?
Подходы включают использование JSDoc, TSDoc, Swagger для API-документации, Storybook для создания живой документации компонентов.
36. Какие техники рефакторинга изучаются в курсе?
Техники включают разделение компонентов, вынос бизнес-логики в хуки или сервисы, использование design patterns, устранение side effects, типизация и упрощение сложных условий.
37. Какие виды архитектур приложений рассматриваются в курсе?
В курсе рассматриваются MVC, MVVM, MVP, Flux, Redux architecture, Clean Architecture, Feature-Sliced Design и другие подходы к организации кодовой базы.
38. Какие практики командной разработки изучаются в курсе?
Практики включают работу с Git, pull request workflow, code review, feature flags, branch strategy (GitFlow, Trunk-Based Development), а также использование Jira, Notion, Figma и Slack.
39. Какие инструменты используются для мониторинга производительности?
Для мониторинга используются Sentry, Bugsnag, Datadog, Firebase Performance Monitoring, App Center и другие инструменты для анализа крашей, медленных экранов и пользовательского опыта.
40. Какие методы ускорения загрузки приложений изучаются в курсе?
Методы включают lazy loading, code splitting, preloading assets, использование Hermes engine, оптимизация размера APK/IPA, удаление unused dependencies.
41. Какие подходы к управлению конфигурацией приложения изучаются в курсе?
Подходы включают использование env-файлов, переменных окружения, dynamic configuration, remote config через Firebase и эксперименты A/B тестирования.
42. Какие методы работы с графикой и SVG рассматриваются в курсе?
Методы включают использование react-native-svg, работа с векторными иконками через react-native-vector-icons, интеграция SVG-изображений и анимация графики.
43. Какие практики работы с формами изучаются в курсе?
Практики включают использование Formik, Yup, react-hook-form, валидация на клиенте и сервере, работа с masked inputs, date pickers, custom validation messages.
44. Какие методы работы с медиаплеерами рассматриваются в курсе?
Рассматриваются библиотеки, такие как react-native-video, expo-av, работа с потоковым видео, управление воспроизведением, subtitles, DRM content и background playback.
45. Какие подходы к обработке ошибок изучаются в курсе?
Подходы включают try/catch, error boundaries, global error handling, reporting через Sentry, пользовательские сообщения об ошибках и fallback UI.
46. Какие практики работы с платежными системами изучаются в курсе?
Практики включают интеграцию Stripe, Apple Pay, Google Pay, In-App Purchases через Expo и нативные SDK, обработку подписок и проверку покупок.
47. Какие методы работы с биометрией изучаются в курсе?
Методы включают использование Expo LocalAuthentication, react-native-biometrics, реализацию Face ID и Touch ID, шифрование данных на основе биометрии.
48. Какие практики работы с Bluetooth изучаются в курсе?
Практики включают использование react-native-ble-plx, работа с BLE-устройствами, сканирование, подключение, обмен данными и обработка ошибок.
49. Какие подходы к работе с NFC изучаются в курсе?
Подходы включают использование react-native-nfc-manager, чтение и запись NFC-тегов, запуск приложений по NFC-триггеру, интеграция с билетами и идентификацией.
50. Какие методы работы с печатью изучаются в курсе?
Методы включают использование react-native-print, expo-print, работа с PDF, отправка на печать через AirPrint и Bluetooth принтеры.
51. Какие практики работы с облачными хранилищами изучаются в курсе?
Практики включают интеграцию Firebase Storage, AWS Amplify, Google Cloud Storage, загрузка и скачивание файлов, управление правами доступа.
52. Какие методы работы с OCR изучаются в курсе?
Методы включают использование Tesseract.js, Google ML Kit, распознавание текста на изображениях, обработка документов и извлечение данных.
53. Какие подходы к работе с AR изучаются в курсе?
Подходы включают использование Expo AR, ViroReact, интеграция 3D объектов, обнаружение плоскостей, работа с камерой и движением.
54. Какие практики работы с VR изучаются в курсе?
Практики включают создание VR-приложений с использованием React Native и нативных SDK, работа с контроллерами, пространственным звуком и трехмерной графикой.
55. Какие методы работы с голосовым вводом изучаются в курсе?
Методы включают использование SpeechRecognition API, Google Speech-to-Text, преобразование речи в текст, обработка команд и dictation.
56. Какие практики работы с push-аналитикой изучаются в курсе?
Практики включают интеграцию Firebase Analytics, Mixpanel, Amplitude, отслеживание событий, жизненного цикла пользователя и поведения внутри приложения.
57. Какие методы работы с календарем и событиями изучаются в курсе?
Методы включают использование Expo Calendar, react-native-calendars, создание событий, запросы доступа, синхронизация с календарем устройства.
58. Какие подходы к работе с контактами изучаются в курсе?
Подходы включают использование Expo Contacts, react-native-contacts, получение доступа, чтение и запись контактов, поиск и фильтрация.
59. Какие практики работы с телефонией изучаются в курсе?
Практики включают вызовы по телефону, отправка SMS, проверка возможностей устройства, использование Twilio и других VoIP решений.
60. Какие методы работы с Wi-Fi и сетями изучаются в курсе?
Методы включают получение информации о сети, подключение к Wi-Fi, работа с Bluetooth и hotspot, ограничение фонового трафика.
61. Какие подходы к работе с акселерометром изучаются в курсе?
Подходы включают использование Expo Sensors, react-native-sensors, получение данных с акселерометра, анализ движения, детектирование активности.
62. Какие практики работы с вибрацией изучаются в курсе?
Практики включают использование Expo Haptics, react-native-vibration, создание обратной связи, управление длительностью и частотой вибрации.
63. Какие методы работы с клавиатурой изучаются в курсе?
Методы включают управление показом клавиатуры, обработка событий, автоматическая прокрутка, работа с inputAccessoryView и кастомизация клавиатуры.
64. Какие подходы к работе с таймерами изучаются в курсе?
Подходы включают использование setTimeout, setInterval, requestAnimationFrame, работа с background timers и scheduling задач.
65. Какие практики работы с веб-сокетами изучаются в курсе?
Практики включают использование WebSocket API, Socket.IO, работа с real-time данными, обработка reconnect, authorization и message parsing.
66. Какие методы работы с HTTP-заголовками изучаются в курсе?
Методы включают настройку headers для запросов, авторизацию через Bearer Token, кастомные заголовки, compression, caching и rate limiting.
67. Какие подходы к работе с cookies изучаются в курсе?
Подходы включают использование CookieManager, работа с session cookies, persistent cookies, cross-domain requests и безопасное хранение.
68. Какие практики работы с кэшированием изучаются в курсе?
Практики включают использование AsyncStorage, MMKV, React Query cache, HTTP caching, image caching через react-native-fast-image и другие методы.
69. Какие методы работы с изображениями изучаются в курсе?
Методы включают загрузку, кэширование, обрезку, фильтрацию, lazy loading, использование Image.prefetch и placeholder'ов.
70. Какие подходы к работе с видеозвонками изучаются в курсе?
Подходы включают использование WebRTC, Twilio Video, Agora, интеграция с камерой и микрофоном, управление качеством видео и аудио.
71. Какие практики работы с документами изучаются в курсе?
Практики включают просмотр PDF, Word, Excel, открытие документов через Intent (Android) и Document Interaction Controller (iOS), работа с file providers.
72. Какие методы работы с темной темой изучаются в курсе?
Методы включают автоматическое определение системной темы, кастомные темы через ThemeProvider, работа с Material UI и Tailwind, сохранение выбора пользователя.
73. Какие подходы к работе с accessibility изучаются в курсе?
Подходы включают использование accessibilityLabel, accessibilityRole, VoiceOver и TalkBack, семантическая разметка, контрастность цветов и тестирование.
74. Какие практики работы с многозадачностью изучаются в курсе?
Практики включают обработку background/foreground events, работа с AppState, background sync, multi-window режим на Android.
75. Какие итоговые навыки выпускника курса?
Выпускник сможет разрабатывать, тестировать, оптимизировать и деплоить профессиональные кроссплатформенные приложения, использовать нативные возможности, применять лучшие практики архитектуры и участвовать в коммерческих проектах на уровне middle/senior разработчика.
1. Какой из следующих инструментов используется для управления состоянием в React Native с применением middleware?
a) React Query
b) Context API
c) Redux
d) Zustand
Ответ: c) Redux
2. Какой модуль позволяет работать с геолокацией в React Native через Expo?
a) expo-location
b) react-native-geolocation-service
c) navigator.geolocation
d) expo-maps
Ответ: a) expo-location
3. Какой из перечисленных паттернов архитектуры наиболее часто используется при разработке крупных приложений на React Native?
a) MVC
b) MVP
c) Clean Architecture
d) MVVM
Ответ: c) Clean Architecture
4. Какой из следующих инструментов предназначен для end-to-end тестирования React Native приложений?
a) Jest
b) Detox
c) Testing Library
d) Mocha
Ответ: b) Detox
5. Какая библиотека чаще всего используется для реализации навигации в React Native?
a) React Router
b) React Navigation
c) Navigator
d) Redux Navigation
Ответ: b) React Navigation
6. Какой тип модулей в React Native позволяет использовать нативный код без необходимости его изменения при обновлениях фреймворка?
a) Legacy Native Modules
b) Turbo Modules
c) Bridge Modules
d) Host Modules
Ответ: b) Turbo Modules
7. Какой хук в React Native используется для оптимизации производительности компонентов путем мемоизации?
a) useEffect
b) useMemo
c) useCallback
d) useRef
Ответ: c) useCallback
8. Какой из следующих подходов используется для кэширования данных в React Native с помощью локального хранилища?
a) AsyncStorage
b) MMKV
c) LocalStorage
d) CacheStorage
Ответ: b) MMKV
9. Какой из следующих файлов отвечает за конфигурацию Expo-проекта?
a) app.json
b) package.json
c) babel.config.js
d) metro.config.js
Ответ: a) app.json
10. Какой из следующих инструментов используется для автоматической сборки и деплоя React Native приложений?
a) Fastlane
b) EAS Build
c) Gradle
d) Xcode
Ответ: b) EAS Build
11. Какой из следующих методов позволяет выполнять фоновые задачи в React Native с минимальным влиянием на UI?
a) setTimeout
b) setInterval
c) BackgroundFetch
d) requestIdleCallback
Ответ: c) BackgroundFetch
12. Какой из следующих инструментов используется для работы с формами в React Native с поддержкой валидации?
a) FormState
b) React Hook Form
c) InputValidator
d) FormControl
Ответ: b) React Hook Form
13. Какой из следующих механизмов обеспечивает более высокую производительность при работе с анимациями в React Native?
a) Animated API
b) LayoutAnimation
c) Reanimated 2
d) CSS transitions
Ответ: c) Reanimated 2
14. Какой из следующих инструментов позволяет создавать темизированный интерфейс в React Native?
a) StyleSheet
b) ThemeProvider
c) Tailwind
d) Styled Components
Ответ: d) Styled Components
15. Какой из следующих инструментов используется для работы с медиафайлами в React Native?
a) react-native-image-picker
b) expo-media-library
c) react-native-camera
d) все вышеперечисленное
Ответ: d) все вышеперечисленное
16. Какой из следующих методов позволяет уменьшить время запуска приложения?
a) Code splitting
b) Tree shaking
c) Lazy loading
d) все вышеперечисленное
Ответ: d) все вышеперечисленное
17. Какой из следующих инструментов используется для работы с SQLite в React Native?
a) WatermelonDB
b) Realm
c) expo-sqlite
d) Firebase
Ответ: c) expo-sqlite
18. Какой из следующих пакетов позволяет реализовать push-уведомления в React Native?
a) react-native-push-notification
b) firebase/messaging
c) expo-notifications
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
19. Какой из следующих инструментов используется для построения графиков и диаграмм в React Native?
a) Victory
b) ChartKit
c) react-native-svg-charts
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
20. Какой из следующих инструментов применяется для статической типизации в React Native?
a) Flow
b) TypeScript
c) PropTypes
d) JSDoc
Ответ: b) TypeScript
21. Какой из следующих параметров позволяет указать, какие экраны будут загружены при первом запуске приложения?
a) initialRouteName
b) defaultScreen
c) startRoute
d) firstScreen
Ответ: a) initialRouteName
22. Какой из следующих методов используется для работы с HTTP-запросами в React Native?
a) fetch
b) axios
c) XMLHttpRequest
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
23. Какой из следующих подходов позволяет минимизировать количество ререндеров компонента?
a) React.memo
b) PureComponent
c) shouldComponentUpdate
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
24. Какой из следующих инструментов позволяет создавать пользовательские хуки в React Native?
a) useState
b) useEffect
c) useContext
d) собственный хук
Ответ: d) собственный хук
25. Какой из следующих инструментов используется для работы с файловой системой в React Native?
a) react-native-fs
b) expo-file-system
c) fs
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
26. Какой из следующих инструментов позволяет реализовать анимированную загрузку контента?
a) SkeletonPlaceholder
b) ActivityIndicator
c) Lottie
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
27. Какой из следующих инструментов используется для создания документации компонентов?
a) Storybook
b) Docsify
c) Docusaurus
d) Swagger
Ответ: a) Storybook
28. Какой из следующих инструментов используется для работы с Bluetooth в React Native?
a) react-native-bluetooth-classic
b) react-native-ble-plx
c) BluetoothSerial
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
29. Какой из следующих инструментов используется для работы с NFC в React Native?
a) react-native-nfc-manager
b) nfc-react-native
c) expo-nfc
d) NFCManager
Ответ: a) react-native-nfc-manager
30. Какой из следующих инструментов используется для работы с AR в React Native?
a) ViroReact
b) Expo AR
c) react-native-ar
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
31. Какой из следующих инструментов используется для работы с VR в React Native?
a) react-vr
b) Expo VR
c) react-native-vr
d) нет правильного ответа
Ответ: d) нет правильного ответа
32. Какой из следующих инструментов используется для работы с голосовым вводом в React Native?
a) SpeechRecognition
b) react-native-voice
c) Web Speech API
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
33. Какой из следующих инструментов используется для работы с платежами в React Native?
a) react-native-stripe
b) expo-payments-stripe
c) stripe-react-native
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
34. Какой из следующих инструментов используется для работы с картами в React Native?
a) react-native-maps
b) expo-google-maps
c) mapbox-gl
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
35. Какой из следующих инструментов используется для работы с камерой в React Native?
a) react-native-camera
b) expo-camera
c) CameraRoll
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
36. Какой из следующих инструментов используется для работы с датчиками устройства в React Native?
a) react-native-sensors
b) expo-sensors
c) DeviceMotion
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
37. Какой из следующих инструментов используется для работы с биометрической аутентификацией в React Native?
a) react-native-biometrics
b) expo-local-authentication
c) TouchID
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
38. Какой из следующих инструментов используется для работы с PDF в React Native?
a) react-native-pdf
b) rn-pdf-reader-js
c) expo-document-viewer
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
39. Какой из следующих инструментов используется для работы с OCR в React Native?
a) Tesseract.js
b) Google ML Kit
c) react-native-ocr
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
40. Какой из следующих инструментов используется для работы с облачными хранилищами в React Native?
a) Firebase Storage
b) AWS Amplify
c) Google Cloud Storage
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
41. Какой из следующих инструментов используется для работы с видео в React Native?
a) react-native-video
b) expo-av
c) VideoPlayer
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
42. Какой из следующих методов применяется для оптимизации производительности при работе с большими списками?
a) FlatList
b) SectionList
c) VirtualizedList
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
43. Какой из следующих пакетов позволяет создавать кастомные нативные модули в React Native?
a) react-native-builder-bob
b) react-native-module
c) create-react-native-module
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
44. Какой из следующих подходов используется для тестирования бизнес-логики вне компонентов?
a) Snapshot testing
b) Unit testing
c) Integration testing
d) UI testing
Ответ: b) Unit testing
45. Какой из следующих файлов отвечает за настройку TypeScript в проекте?
a) tsconfig.json
b) package.json
c) babel.config.js
d) metro.config.js
Ответ: a) tsconfig.json
46. Какой из следующих инструментов позволяет автоматизировать процесс выпуска новых версий приложений?
a) Fastlane
b) EAS Submit
c) App Center
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
47. Какой из следующих параметров указывает, какие экраны можно использовать для deep linking?
a) linking
b) initialRouteName
c) screenOptions
d) navigationRef
Ответ: a) linking
48. Какой из следующих механизмов позволяет обмениваться данными между JS и нативным кодом в Turbo Modules?
a) JavaScriptCore
b) Fabric
c) TurboModuleRegistry
d) RCTBridge
Ответ: c) TurboModuleRegistry
49. Какой из следующих инструментов используется для аналитики в React Native?
a) Firebase Analytics
b) Mixpanel
c) Amplitude
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
50. Какой из следующих методов используется для получения информации о текущем статусе подключения к интернету?
a) NetInfo.fetch()
b) navigator.onLine
c) Network.getNetworkState()
d) ConnectivityWatcher
Ответ: a) NetInfo.fetch()
51. Какой из следующих инструментов используется для работы с анимациями JSON-формата?
a) Lottie
b) Animated
c) Reanimated
d) SVG
Ответ: a) Lottie
52. Какой из следующих инструментов используется для управления правами доступа к системным ресурсам в React Native?
a) react-native-permissions
b) expo-media-library
c) PermissionsAndroid (Android)
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
53. Какой из следующих подходов используется для реализации dark mode без использования сторонних библиотек?
a) Appearance API
b) ThemeProvider
c) StyleSheet
d) Platform.select
Ответ: a) Appearance API
54. Какой из следующих инструментов используется для создания мультимедийных уведомлений?
a) react-native-sound
b) expo-av
c) SoundPlayer
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
55. Какой из следующих типов проверок используется для обеспечения совместимости нативного кода с новыми версиями React Native?
a) Type checking
b) ABI compatibility
c) Module registry validation
d) Bridge verification
Ответ: b) ABI compatibility
56. Какой из следующих инструментов используется для логирования ошибок в продакшене?
a) Sentry
b) Bugsnag
c) Firebase Crashlytics
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
57. Какой из следующих хуков используется для сохранения ссылки на значение без вызова ререндера?
a) useState
b) useEffect
c) useRef
d) useContext
Ответ: c) useRef
58. Какой из следующих инструментов позволяет работать с 3D-объектами в React Native?
a) react-native-gl-model-viewer
b) Expo Three
c) react-3d-viewer
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
59. Какой из следующих инструментов используется для работы с WebSocket в React Native?
a) Socket.IO
b) ws
c) React Native WebSocket
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
60. Какой из следующих подходов используется для реализации offline-first архитектуры?
a) Local storage
b) Sync workers
c) Service workers
d) все вышеперечисленные
Ответ: a) Local storage
61. Какой из следующих инструментов позволяет выполнять background fetch в React Native?
a) react-native-background-fetch
b) expo-background-fetch
c) BackgroundTask
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
62. Какой из следующих пакетов используется для работы с датами в React Native?
a) moment
b) date-fns
c) dayjs
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
63. Какой из следующих инструментов используется для работы с шифрованием данных в React Native?
a) react-native-crypto
b) expo-crypto
c) forge
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
64. Какой из следующих инструментов используется для реализации пользовательских навигационных переходов?
a) Stack.Navigator
b) useNavigation
c) custom transition spec
d) NavigationContainer
Ответ: c) custom transition spec
65. Какой из следующих подходов используется для передачи данных между экранами через React Navigation?
a) params
b) navigation.setParams
c) route.params
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
66. Какой из следующих инструментов используется для работы с аутентификацией через OAuth 2.0 в React Native?
a) AuthSession (Expo)
b) react-native-auth0
c) Firebase Auth
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
67. Какой из следующих методов используется для предотвращения множественного вызова функции при частых событиях?
a) throttle
b) debounce
c) both a and b
d) none of the above
Ответ: c) both a and b
68. Какой из следующих инструментов используется для работы с QR-кодами в React Native?
a) react-native-qrcode-scanner
b) expo-barcode-scanner
c) react-native-zxing
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
69. Какой из следующих инструментов используется для работы с SVG в React Native?
a) react-native-svg
b) svg-react-native
c) react-native-vector-icons
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
70. Какой из следующих инструментов используется для реализации пользовательского интерфейса по Material Design?
a) React Native Paper
b) NativeBase
c) UI Kitten
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
71. Какой из следующих инструментов используется для работы с форматом JSON-LD в React Native?
a) jsonld
b) ld-polyfill
c) json-ld-transformer
d) нет стандартного решения
Ответ: a) jsonld
72. Какой из следующих инструментов используется для работы с WebAssembly в React Native?
a) WASI SDK
b) Wasmtime
c) wasmer-js
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
73. Какой из следующих методов позволяет запускать нативный код при старте приложения?
a) MainApplication.onCreate
b) AppRegistry.registerComponent
c) SplashScreen.show
d) ReactNativeHost.getReactInstanceManager
Ответ: a) MainApplication.onCreate
74. Какой из следующих инструментов используется для профилирования производительности React Native приложений?
a) React Developer Tools
b) Flipper Performance Plugin
c) Chrome DevTools
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
75. Какой из следующих инструментов используется для генерации типов из GraphQL-запросов?
a) Apollo Codegen
b) GraphQL Code Generator
c) Relay Compiler
d) все вышеперечисленные
Ответ: d) все вышеперечисленные
Билет №1
Теория
1. Объясните, в чем заключается разница между использованием `FlatList` и обычного `ScrollView` с точки зрения производительности?
2. Какие основные задачи решает нативная интеграция в React Native?
Ответы:
1. FlatList оптимизирован для работы с большими списками за счет виртуализации — он отрисовывает только те элементы, которые находятся на экране, что уменьшает потребление памяти и повышает отзывчивость интерфейса. ScrollView же загружает все элементы сразу, что может привести к снижению производительности при большом объеме данных.
2. Нативная интеграция позволяет использовать платформенные API (например, камеру, геолокацию, датчики), повысить производительность критичных участков кода, расширить функционал приложения за пределами возможностей JavaScript, а также обеспечить более тесное взаимодействие с операционной системой.
Практика
Реализуйте компонент, который использует `useState` и `useEffect`, чтобы подтягивать данные с внешнего API (например, https://jsonplaceholder.typicode.com/users) и выводит список имен пользователей.
import React, { useState, useEffect } from 'react';
import { View, Text, ActivityIndicator } from 'react-native';
const UserList = () => {
const [users, setUsers] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetch('https://jsonplaceholder.typicode.com/users')
.then(res => res.json())
.then(data => {
setUsers(data);
setLoading(false);
})
.catch(err => console.error(err));
}, []);
if (loading) {
return <ActivityIndicator size="large" />;
}
return (
<View>
{users.map(user => (
<Text key={user.id}>{user.name}</Text>
))}
</View>
);
};
export default UserList;
Билет №2
Теория
1. Что такое Turbo Modules и как они улучшают работу с нативным кодом в React Native?
2. В чём отличие между `React.memo`, `useMemo` и `useCallback`?
Ответы:
1. Turbo Modules — это новая архитектура модулей, которая позволяет вызывать нативный код напрямую через JSI без использования моста, что значительно увеличивает производительность и совместимость с новыми версиями React Native.
2. React.memo используется для оптимизации рендеринга компонентов, useMemo — для мемоизации значений, useCallback — для мемоизации функций. Все три механизма помогают избежать повторных вычислений или ререндеров, если зависимости не изменились.
Практика
Создайте простой Redux-стор и экшен, который управляет состоянием темы (светлая/темная). Экспортируйте стор и реализуйте редьюсер, изменяющий состояние темы по переданному типу действия.
import { createStore } from 'redux';
const initialState = {
theme: 'light',
};
const themeReducer = (state = initialState, action) => {
switch (action.type) {
case 'TOGGLE_THEME':
return {
...state,
theme: state.theme === 'light' ? 'dark' : 'light',
};
default:
return state;
}
};
const store = createStore(themeReducer);
export default store;
Билет №3
Теория
1. Охарактеризуйте подходы к тестированию React Native приложений. Какие виды тестов используются?
2. Как работают глубокие ссылки (deep links) в React Navigation?
Ответы:
1. В React Native применяются unit-тесты (Jest), интеграционные (Testing Library) и end-to-end тесты (Detox). Unit-тесты проверяют логику отдельных функций, интеграционные — взаимодействие между компонентами, а E2E-тесты имитируют действия пользователя в реальном приложении.
2. Deep links позволяют открывать конкретные экраны приложения через URL. В React Navigation настраивается параметр linking, где указывается scheme и структура путей. При переходе по такому URL приложение открывается и переходит на нужный экран.
Практика
Реализуйте экран с кнопкой "Переключить тему", которая отправляет действие в Redux для изменения текущей темы, и отображает текущее значение темы.
import React from 'react';
import { View, Text, Button } from 'react-native';
import { useDispatch, useSelector } from 'react-redux';
const ThemeScreen = () => {
const dispatch = useDispatch();
const theme = useSelector(state => state.theme);
const toggleTheme = () => {
dispatch({ type: 'TOGGLE_THEME' });
};
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Текущая тема: {theme}</Text>
<Button title="Переключить тему" onPress={toggleTheme} />
</View>
);
};
export default ThemeScreen;
Билет №4
Теория
1. Что такое нативные модули в React Native и зачем они нужны?
2. Какие преимущества дает использование TypeScript в проектах на React Native?
Ответы:
1. Нативные модули — это части кода на Java/Kotlin (Android) или Objective-C/Swift (iOS), которые могут быть вызваны из JavaScript. Они нужны для доступа к функциям, недоступным через стандартный API React Native, таких как работа с датчиками, Bluetooth и другие нативные возможности.
2. TypeScript добавляет статическую типизацию, что улучшает читаемость кода, упрощает рефакторинг, обнаруживает ошибки на этапе разработки и улучшает автодополнение в IDE.
Практика
Напишите компонент, который отслеживает геолокацию пользователя и отображает широту и долготу. Используйте библиотеку expo-location.
import React, { useEffect, useState } from 'react';
import { View, Text, Button } from 'react-native';
import * as Location from 'expo-location';
const LocationTracker = () => {
const [location, setLocation] = useState(null);
const [errorMsg, setErrorMsg] = useState(null);
useEffect(() => {
(async () => {
let { status } = await Location.requestForegroundPermissionsAsync();
if (status !== 'granted') {
setErrorMsg('Permission to access location was denied');
return;
}
let currentLocation = await Location.getCurrentPositionAsync({});
setLocation(currentLocation.coords);
})();
}, []);
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
{errorMsg && <Text>{errorMsg}</Text>}
{location ? (
<>
<Text>Широта: {location.latitude}</Text>
<Text>Долгота: {location.longitude}</Text>
</>
) : (
<Text>Получение местоположения...</Text>
)}
</View>
);
};
export default LocationTracker;
Билет №5
Теория
1. Что такое React Navigation и каковы его основные компоненты?
2. Как реализуется работа с асинхронными операциями в React Native?
Ответы:
1. React Navigation — это библиотека для реализации навигации между экранами в React Native. Основные компоненты: `NavigationContainer`, `Stack.Navigator`, `Tab.Navigator`, `Drawer.Navigator`. Они позволяют организовать переходы между экранами с поддержкой стека, табов или выдвижного меню.
2. Асинхронные операции в React Native реализуются через `fetch`, `async/await`, `Promise`, а также сторонние библиотеки, такие как `axios`. Для управления состоянием используются хуки `useState` и `useEffect`.
Практика
Создайте простой стековый навигатор с двумя экранами: HomeScreen и DetailsScreen. На первом экране кнопка "Перейти к деталям", которая открывает второй экран.
import React from 'react';
import { View, Text, Button } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
const Stack = createStackNavigator();
const HomeScreen = ({ navigation }) => {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Главная страница</Text>
<Button title="Перейти к деталям" onPress={() => navigation.navigate('Details')} />
</View>
);
};
const DetailsScreen = () => {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Экран деталей</Text>
</View>
);
};
const AppNavigator = () => {
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="Home">
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Details" component={DetailsScreen} />
</Stack.Navigator>
</NavigationContainer>
);
};
export default AppNavigator;
Билет №6
Теория
1. Какие существуют способы оптимизации производительности в React Native?
2. В чем разница между `React.PureComponent` и `React.memo`?
Ответы:
1. Среди основных способов: использование `React.memo`, `PureComponent`, `useMemo`, `useCallback`, виртуализация списков (`FlatList`), минимизация ререндеров, правильное управление состоянием, мемоизация функций и значений, использование Hermes-движка, lazy loading.
2. `PureComponent` применяется к классовым компонентам и сравнивает props и state перед ререндером. `React.memo` используется для функциональных компонентов и работает похожим образом, но не сравнивает состояние внутри компонента.
Практика
Реализуйте форму с двумя полями ввода (имя и email) и кнопкой отправки. При нажатии на кнопку выводите значения полей в консоль.
import React, { useState } from 'react';
import { View, TextInput, Button } from 'react-native';
const FormComponent = () => {
const [name, setName] = useState('');
const [email, setEmail] = useState('');
const handleSubmit = () => {
console.log('Имя:', name);
console.log('Email:', email);
};
return (
<View style={{ padding: 20 }}>
<TextInput
placeholder="Введите имя"
value={name}
onChangeText={setName}
style={{ borderBottomWidth: 1, marginBottom: 10 }}
/>
<TextInput
placeholder="Введите email"
value={email}
onChangeText={setEmail}
keyboardType="email-address"
style={{ borderBottomWidth: 1, marginBottom: 10 }}
/>
<Button title="Отправить" onPress={handleSubmit} />
</View>
);
};
export default FormComponent;
Билет №7
Теория
1. Как работают нативные модули в React Native и какие шаги необходимы для их создания?
2. Какие инструменты используются для тестирования приложений на React Native?
Ответы:
1. Нативные модули создаются отдельно для Android и iOS. Для Android пишется Java/Kotlin-класс, реализующий интерфейс `NativeModule`. Для iOS — Objective-C/Swift-класс, реализующий `RCTBridgeModule`. Затем модуль регистрируется и вызывается из JS.
2. Для тестирования используются: Jest (unit-тесты), Testing Library (интеграционные тесты), Detox (end-to-end тестирование). Также могут применяться инструменты типа Snapshot Testing и mocking внешних зависимостей.
Практика
Напишите unit-тест с использованием Jest для функции, которая принимает массив чисел и возвращает сумму всех элементов.
// sum.js
export const sumArray = (arr) => arr.reduce((acc, val) => acc + val, 0);
// sum.test.js
import { sumArray } from './sum';
test('сумма массива чисел равна корректному результату', () => {
expect(sumArray([1, 2, 3])).toBe(6);
expect(sumArray([-1, 0, 1])).toBe(0);
expect(sumArray([])).toBe(0);
});
Билет №8
Теория
1. Что такое CI/CD и как он применяется в проектах на React Native?
2. Какие подходы к локализации поддерживаются в React Native?
Ответы:
1. CI/CD (непрерывная интеграция и доставка) позволяет автоматизировать сборку, тестирование и деплой приложений. В React Native используется GitHub Actions, GitLab CI, Fastlane, EAS Build для автоматической проверки кода и выпуска новых версий.
2. Локализация реализуется через библиотеки вроде `i18next`, `react-i18next`, `expo-localization`. Поддерживаются форматирование дат, валют, чисел, множественное число и динамическое изменение языка в приложении.
Практика
Создайте простое приложение с поддержкой двух языков (русский и английский), где пользователь может переключать язык, и текст будет обновляться соответственно.
// i18n.js
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
i18n.use(initReactI18next).init({
resources: {
en: {
translation: {
greeting: 'Hello',
button: 'Switch to Russian'
}
},
ru: {
translation: {
greeting: 'Привет',
button: 'Переключить на Английский'
}
}
},
lng: 'en',
fallbackLng: 'en',
interpolation: {
escapeValue: false
}
});
export default i18n;
// App.js
import React from 'react';
import { View, Text, Button } from 'react-native';
import i18n from './i18n';
const App = () => {
const changeLanguage = (lng) => {
i18n.changeLanguage(lng);
};
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>{i18n.t('greeting')}</Text>
<Button
title={i18n.t('button')}
onPress={() => changeLanguage(i18n.language === 'en' ? 'ru' : 'en')}
/>
</View>
);
};
export default App;
Билет №9
Теория
1. Что такое нативная анимация в React Native и как она реализуется с помощью Reanimated 2?
2. Какие подходы используются для работы с локальным хранилищем данных в React Native?
Ответы:
1. Нативная анимация позволяет запускать анимации на уровне нативного кода, минуя JS-поток. В Reanimated 2 это достигается за счет JSI и использования `worklet`-функций, что делает анимации более отзывчивыми и производительными.
2. Для работы с локальным хранилищем используются AsyncStorage (простое хранение строк), SecureStore (защищенное хранение), MMKV (высокопроизводительное хранилище от WeChat), SQLite (для структурированных данных) и другие решения.
Практика
Реализуйте простой счетчик, который сохраняет значение в MMKV при каждом изменении и восстанавливает его при перезапуске приложения.
import React, { useState, useEffect } from 'react';
import { View, Text, Button } from 'react-native';
import MMKV from 'react-native-mmkv';
const storage = new MMKV();
const CounterApp = () => {
const [count, setCount] = useState(storage.getNumber('count') || 0);
useEffect(() => {
storage.set('count', count);
}, [count]);
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Счетчик: {count}</Text>
<Button title="Увеличить" onPress={() => setCount(prev => prev + 1)} />
</View>
);
};
export default CounterApp;
Билет №10
Теория
1. Объясните концепцию работы с нативными модулями через Turbo Modules в новой архитектуре React Native.
2. Какие инструменты используются для отладки React Native приложений?
Ответы:
1. Turbo Modules позволяют вызывать нативный код напрямую из JS через JSI без использования моста. Это повышает производительность и упрощает интеграцию новых версий React Native. Используется Codegen для генерации типов и ABI-совместимости.
2. Для отладки применяются Chrome DevTools, React Developer Tools, Flipper, LogBox, а также нативные инструменты Android Studio и Xcode. Flipper особенно полезен для просмотра сетевых запросов, состояния Redux, логов и UI-дерева.
Практика
Напишите функцию, которая отправляет POST-запрос к API с данными пользователя и обрабатывает ошибки сети.
const sendUserData = async (userData) => {
try {
const response = await fetch('https://api.example.com/user', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(userData),
});
if (!response.ok) {
throw new Error(`Ошибка HTTP: ${response.status}`);
}
const result = await response.json();
console.log('Данные успешно отправлены:', result);
return result;
} catch (error) {
console.error('Ошибка отправки данных:', error.message);
throw error;
}
};
Билет №11
Теория
1. Что такое Codegen в новой архитектуре React Native и зачем он нужен?
2. Как реализуется работа с push-уведомлениями в React Native?
Ответы:
1. Codegen — это процесс генерации нативного кода из TypeScript/JavaScript интерфейсов, чтобы обеспечить строгую типизацию и совместимость между JS и нативным кодом. Он используется в новых возможностях, таких как Turbo Modules и Fabric.
2. Push-уведомления реализуются через Firebase Cloud Messaging (Android) и Apple Push Notification Service (iOS). В React Native могут использоваться библиотеки, такие как `expo-notifications`, `@react-native-firebase/messaging`.
Практика
Создайте экран, который подписывается на push-уведомления и выводит текст последнего полученного уведомления.
import React, { useEffect, useState } from 'react';
import { View, Text } from 'react-native';
import * as Notifications from 'expo-notifications';
Notifications.setNotificationHandler({
handleSetTimeOut: () => {},
handleSettings: () => {},
});
const NotificationScreen = () => {
const [notification, setNotification] = useState(null);
useEffect(() => {
const subscription = Notifications.addNotificationReceivedListener(notification => {
setNotification(notification);
});
return () => subscription.remove();
}, []);
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Полученные уведомления</Text>
{notification && <Text>{notification.request.content.body}</Text>}
</View>
);
};
export default NotificationScreen;
Билет №12
Теория
1. Какие основные отличия между Expo и bare workflow в React Native?
2. Охарактеризуйте работу с файловой системой в React Native.
Ответы:
1. Expo предоставляет готовые SDK и упрощает разработку, но ограничивает доступ к нативному коду. Bare workflow позволяет использовать нативные модули и полностью контролировать проект, но требует ручной настройки зависимостей и сборки.
2. Работа с файловой системой осуществляется через библиотеки вроде `react-native-fs` или `expo-file-system`. Они позволяют читать, записывать, удалять файлы, работать с медиа и кэшировать данные.
Практика
Напишите функцию, которая загружает файл по URL и сохраняет его в локальном хранилище устройства.
import RNFS from 'react-native-fs';
const downloadFile = async (url, filename) => {
const path = `${RNFS.DocumentDirectoryPath}/${filename}`;
try {
const result = await RNFS.downloadFile({
fromUrl: url,
toFile: path,
}).promise;
console.log('Файл сохранён по пути:', path);
return path;
} catch (error) {
console.error('Ошибка загрузки файла:', error);
throw error;
}
};
Билет №13
Теория
1. Что такое Fabric и как он влияет на производительность и архитектуру React Native?
2. Какие существуют способы оптимизации размера APK/IPA в React Native?
Ответы:
1. Fabric — это новая система рендеринга в React Native, которая заменяет старый "Paper" движок. Она улучшает производительность, позволяет лучше взаимодействовать с нативными компонентами и поддерживает современные возможности, такие как Turbo Modules.
2. Способы: удаление неиспользуемых зависимостей, использование Tree Shaking, минификация JavaScript, оптимизация изображений, исключение debug-библиотек, использование Hermes, выборочная сборка только необходимых языковых пакетов.
Практика
Создайте экран с кнопкой, которая запускает показ диалога с подтверждением перед выходом из приложения.
import React from 'react';
import { View, Text, Button, Alert } from 'react-native';
const ExitConfirmationScreen = () => {
const handleExit = () => {
Alert.alert(
'Выход',
'Вы уверены, что хотите выйти?',
[
{ text: 'Отмена', style: 'cancel' },
{ text: 'Да', onPress: () => BackHandler.exitApp() }
],
{ cancelable: false }
);
};
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Button title="Выйти из приложения" onPress={handleExit} />
</View>
);
};
export default ExitConfirmationScreen;
Билет №14
Теория
1. Как реализуется работа с Bluetooth в React Native?
2. Какие особенности работы с камерой и галереей в React Native?
Ответы:
1. Для работы с Bluetooth используются библиотеки вроде `react-native-ble-plx` или `expo-bluetooth`. Они позволяют сканировать устройства, подключаться к ним, обмениваться данными и обрабатывать ошибки.
2. Камера и галерея реализуются через `expo-camera`, `expo-image-picker` или `react-native-image-picker`. Позволяют делать фото, выбирать из галереи, записывать видео и обрабатывать медиафайлы.
Практика
Создайте компонент, который открывает галерею и отображает выбранное изображение.
import React, { useState } from 'react';
import { View, Image, Button } from 'react-native';
import * as ImagePicker from 'expo-image-picker';
const ImagePickerComponent = () => {
const [image, setImage] = useState(null);
const pickImage = async () => {
const result = await ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
allowsEditing: true,
aspect: [4, 3],
quality: 1,
});
if (!result.canceled) {
setImage(result.assets[0].uri);
}
};
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Button title="Выбрать изображение" onPress={pickImage} />
{image && <Image source={{ uri: image }} style={{ width: 200, height: 200, marginTop: 20 }} />}
</View>
);
};
export default ImagePickerComponent;
Билет №15
Теория
1. Что такое EAS Build и как он используется в экосистеме Expo?
2. Какие инструменты и практики используются для документирования React Native проектов?
Ответы:
1. EAS Build — это облачная система сборки от Expo, которая позволяет собирать iOS и Android приложения без необходимости локальной настройки Xcode или Android Studio. Поддерживает кастомные билды и автоматическую публикацию.
2. Для документирования используются Storybook, Docusaurus, Swagger (для API), JSDoc/TSDoc, Markdown-документация в репозитории, Readme-файлы и инструменты автоматической генерации документации.
Практика
Создайте простой пример использования Storybook для одного из ваших компонентов.
// stories/Button.stories.js
import React from 'react';
import { View } from 'react-native';
import Button from '../components/Button';
export default {
title: 'Components/Button',
component: Button,
};
const Template = (args) => (
<View style={{ padding: 20 }}>
<Button {...args} />
</View>
);
export const Primary = Template.bind({});
Primary.args = {
title: 'Кнопка',
onPress: () => alert('Нажата'),
};
Кейс 1: Падение производительности при прокрутке списка с изображениями
Описание ситуации
Разработчик реализовал экран со списком товаров, каждый из которых содержит изображение и краткое описание. Для отображения использовался ScrollView и стандартный компонент Image. После запуска пользователи начали жаловаться на подтормаживания при прокрутке, особенно на устройствах среднего и низкого класса.
Текстовое описание кода (упрощённо)
<ScrollView>
{products.map(product => (
<View key={product.id}>
<Image source={{ uri: product.image }} />
<Text>{product.title}</Text>
</View>
))}
</ScrollView>
Скрытые проблемы
1. Использование ScrollView вместо FlatList, что приводит к одновременному рендерингу всех элементов, даже если они не видны на экране. Это вызывает высокую нагрузку на память и процессор.
2. Отсутствие кэширования и ленивой загрузки изображений — каждое изображение загружается повторно при каждом рендере.
3. Нет оптимизации размера изображений — используются исходные изображения большого размера вместо адаптированных под устройство.
Вопросы для анализа
- Какие компоненты в React Native предназначены для работы с длинными списками?
- Как можно уменьшить количество ререндеров и повысить отзывчивость интерфейса?
- Какие библиотеки позволяют эффективно работать с изображениями?
Предлагаемое решение
- Заменить ScrollView на FlatList для виртуализации элементов.
- Использовать react-native-fast-image или expo-image для кэширования и ленивой загрузки.
- Оптимизировать размер изображений на стороне сервера или через параметры запроса (например, ?size=small).
- Добавить placeholder и индикатор загрузки для улучшения пользовательского опыта.
Кейс 2: Ошибка отправки данных на сервер после обновления приложения
Описание ситуации
После очередного обновления мобильного приложения часть пользователей перестала успешно регистрироваться. При нажатии на кнопку регистрации UI показывает успех, но данные не доходят до сервера. Ошибки в консоли нет. Проблема наблюдается только на Android 9 и ниже.
Текстовое описание кода (упрощённо)
fetch('https://api.example.com/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(userData)
})
.then(res => res.json())
.then(data => console.log('Успешная регистрация'))
.catch(err => console.error(err));
Скрытые проблемы
1. В Android 9 (Pie) и выше по умолчанию запрещено использование незащищённых HTTP-соединений (без HTTPS).
2. Не проверяется статус ответа сервера, поэтому даже при ошибке выводится сообщение об успехе.
3. Нет обработки сетевых ошибок, таких как потеря соединения или таймаут.
Вопросы для анализа
- Почему fetch может не выдавать ошибку, хотя данные не дошли до сервера?
- Как проверить, действительно ли запрос был отправлен?
- Какие особенности Android влияют на сетевые запросы?
Предлагаемое решение
- Убедиться, что API использует HTTPS.
- Добавить проверку `if (!response.ok) throw new Error(...)`.
- Настроить разрешение на использование cleartext в AndroidManifest.xml, если необходимо поддерживать HTTP (не рекомендуется).
- Использовать axios или interceptors для централизованной обработки сетевых ошибок.
- Реализовать fallback на альтернативный метод отправки при потере соединения.
Кейс 3: Ошибка при деплое iOS-приложения в App Store
Описание ситуации
При попытке загрузить новый билд iOS-приложения в App Store через App Store Connect возникает ошибка: “Invalid Bundle – The bundle at ‘YourApp.app’ does not support any of the platforms required by the SDK.”
Данные проекта
- Проект создан с помощью Expo CLI.
- Сборка выполнялась через eas build --platform ios.
- Версия SDK — 46.0.0.
Скрытые проблемы
1. Указана устаревшая версия SDK, которая больше не поддерживается Apple.
2. Неправильно указан минимальный уровень поддержки iOS в app.json.
3. Артефакт сборки содержит платформы, не поддерживаемые текущим SDK.
Вопросы для анализа
- Как проверить совместимость текущего SDK с требованиями App Store?
- Где указывается целевая версия iOS в Expo-проекте?
- Как проверить содержимое собранного артефакта?
Предлагаемое решение
- Обновить SDK до актуальной версии, поддерживающей современные требования Apple.
- Убедиться, что в app.json указано `"ios": { "supportsTablet": true, "bundleIdentifier": "...", "buildNumber": "...", "targetSdkVersion": "..." }`.
- Проверить минимальную поддерживаемую версию iOS и убедиться, что она соответствует требованиям SDK.
- Пересобрать приложение с корректными настройками через EAS Build.
- Если используется bare workflow, проверить настройки в Xcode перед загрузкой.
Кейс 4: Проблема с push-уведомлениями на новых устройствах
Описание ситуации
Пользователи новых iPhone (iOS 17+) начали жаловаться, что push-уведомления перестали приходить. При этом на старых устройствах уведомления работают нормально. В логах backend не фиксирует ошибок доставки.
Текстовое описание кода (упрощённо)
import * as Notifications from 'expo-notifications';
Notifications.requestPermissionsAsync();
const token = await Notifications.getExpoPushTokenAsync();
sendTokenToServer(token.data);
Скрытые проблемы
1. В iOS 17 изменились политики получения токенов — теперь требуется явное разрешение на фоновые уведомления.
2. Метод getExpoPushTokenAsync() может возвращать разные типы токенов в зависимости от версии SDK.
3. Устаревший SDK Expo, не поддерживающий новые версии iOS.
Вопросы для анализа
- Как получить push-токен на новых версиях iOS?
- Что изменилось в политике разрешений уведомлений в iOS 17?
- Как проверить, возвращает ли сервер правильный тип токена?
Предлагаемое решение
- Обновить Expo SDK до версии, поддерживающей iOS 17.
- Запрашивать разрешение на background-уведомления отдельно:
await Notifications.setNotificationChannelAsync('default', {
name: 'default',
importance: Notifications.AndroidImportance.MAX,
behavior: Notifications.AndroidBehavior.ALWAYS,
});
- Проверить, что настройки канала уведомлений корректны.
- Убедиться, что сервер принимает и обрабатывает токены, полученные через новую версию SDK.
- Тестировать поведение на реальном устройстве, так как симулятор может вести себя иначе.
Ролевая игра 1: "Баг-репорт из продакшена"
Цель игры
Научить студентов анализировать реальные ошибки в приложениях, выявлять причины и предлагать решения. Развить навыки диагностики проблем по логам, стек-трейсам и описаниям пользователей.
Формат
Командная ролевая игра (3–5 человек в команде). Каждой группе выдается описание бага от пользователя, логи, возможно — частичный код или видео с поведением приложения.
Сеттинг
Стартап «Мобильные решения» внедряет обновление мобильного приложения. После релиза поступают жалобы от пользователей на краши при переходе на экран профиля.
Роли в команде
- Разработчик (анализирует код и предлагает исправления)
- QA-инженер (воспроизводит ситуацию, проверяет гипотезы)
- Тимлид (принимает решение по приоритету и способу устранения)
- Технический писатель (оформляет документацию по найденной проблеме и решению)
Этапы игры
1. Ознакомление с описанием проблемы и логами.
2. Воспроизведение ситуации (при наличии эмуляторов/устройств).
3. Анализ возможных причин.
4. Поиск корневой причины в предоставленном фрагменте кода.
5. Предложение исправлений.
6. Презентация решения перед другими группами и преподавателем.
Обучающие эффекты
- Навыки анализа ошибок в реальном коде
- Умение работать с логами и инструментами отладки
- Понимание типовых источников крашей и как их избегать
- Командная работа и распределение ролей
Возможные проблемы и вызовы
- Лог содержит дополнительный шум, который отвлекает от сути
- Баг зависит от версии ОС или устройства
- Причина скрыта в сторонней библиотеке
Ролевая игра 2: "Переговоры с клиентом: техническая реализация"
Цель игры
Научить студентов эффективно взаимодействовать с заказчиком, объяснять технические ограничения и предлагать альтернативы, сохраняя при этом проектную целостность.
Формат
Диалоговая ролевая игра в формате "клиент – разработчик". Один участник играет роль клиента, другой(ие) — роли разработчика(ов).
Сеттинг
Стартап хочет запустить MVP приложения для доставки еды. Заказчик ожидает, что все функции будут реализованы за две недели, включая авторизацию через соцсети, push-уведомления, карты, рейтинг и оплату.
Роли в команде
- Клиент (представляет бизнес-интересы, давит на сроки и требования)
- Разработчик (объясняет техническую сложность, предлагает компромиссы)
- Архитектор (выступает с обоснованием выбора технологий и приоритетов)
Этапы игры
1. Подготовка к встрече: разработчики изучают техническое задание.
2. Диалог с клиентом: обсуждение требований, сроков и ограничений.
3. Обсуждение внутри команды: какие функции можно убрать или отложить.
4. Итоговое предложение клиенту.
Обучающие эффекты
- Навыки коммуникации с не-технической аудиторией
- Понимание важности приоритизации задач
- Умение находить баланс между желаниями клиента и реалиями реализации
- Формирование soft skills и уверенности в общении
Возможные проблемы и вызовы
- Клиент настаивает на невозможных сроках
- Требуется убедительно обосновать отказ от некоторых функций
- Необходимость подчеркнуть долгосрочные выгоды архитектурного подхода
Ролевая игра 3: "Оптимизация производительности: спасаем приложение"
Цель игры
Показать, как влияют различные архитектурные и технические решения на производительность мобильного приложения. Научить выбирать правильные стратегии оптимизации.
Формат
Групповая игра (по 4–6 человек). Каждая группа получает готовое приложение с искусственными проблемами производительности.
Сеттинг
Команда получает доступ к приложению с плохой прокруткой списка, высоким потреблением памяти и медленной загрузкой данных. Задача — провести аудит и улучшить показатели.
Роли в команде
- Разработчик (проводит изменения в коде)
- QA-инженер (проверяет, что оптимизация не сломала текущее поведение)
- DevOps (следит за сборкой и тестированием)
- Тимлид (координирует действия и принимает решения)
Этапы игры
1. Запуск приложения и первичный анализ производительности.
2. Выявление проблем: использование ScrollView вместо FlatList, отсутствие memo, тяжёлые изображения и т.д.
3. Реализация изменений.
4. Тестирование и сравнение до/после.
Обучающие эффекты
- Понимание, как работает виртуализация
- Навыки работы с React.memo, useMemo, useCallback
- Умение использовать инструменты профилирования
- Практический опыт оптимизации UI
Возможные проблемы и вызовы
- Некоторые проблемы маскируются под другие
- Изменения могут вызвать side effects
- Нужно выбрать, какие оптимизации принесут наибольший эффект
Ролевая игра 4: "Новый модуль: интеграция нативного кода"
Цель игры
Научить студентов правильно добавлять и интегрировать нативный код в существующее React Native приложение, понимать особенности Android и iOS.
Формат
Проектная ролевая игра (по 3–5 человек). Группа получает задачу внедрить функцию, недоступную через JS API, например, работу с NFC или Bluetooth.
Сеттинг
Приложение должно поддерживать чтение NFC-меток. Но в текущей реализации нет такой возможности. Студенты должны создать собственный нативный модуль или интегрировать существующую библиотеку.
Роли в команде
- Android-разработчик (пишет Java/Kotlin часть)
- iOS-разработчик (пишет Swift/Objective-C часть)
- React Native разработчик (интегрирует нативный код в JS)
- Тестировщик (проверяет на устройстве)
Этапы игры
1. Изучение задачи и выбор способа реализации.
2. Создание нативного модуля или интеграция стороннего.
3. Интеграция в JS-часть приложения.
4. Тестирование на реальных устройствах.
5. Презентация работы другим группам.
Обучающие эффекты
- Понимание различий между платформами
- Навыки создания и использования нативных модулей
- Умение работать с мостом (bridge) и Turbo Modules
- Опыт совместной разработки под несколько платформ
Возможные проблемы и вызовы
- Совместимость версий SDK и зависимостей
- Ошибки в связи между JS и нативным кодом
- Отсутствие реального оборудования для тестирования
- Различия в реализации между Android и iOS
Интеллект-карта 1: Путь обучения — от основ к профессионализму
Центральная тема: Кроссплатформенная разработка на React Native
Основные направления:
1. Основы программирования
- JavaScript (ES6+)
- TypeScript
- Работа с Git
- Основы алгоритмов и структур данных
2. Основы React
- JSX
- Компоненты (функциональные и классовые)
- Props и state
- Хуки (useState, useEffect, useContext)
- Управление состоянием
3. Введение в React Native
- Установка и настройка среды
- Expo vs Bare workflow
- Структура проекта
- Первые экраны и навигация
- Работа с базовыми компонентами
4. Продвинутая разработка
- Архитектура приложений (Redux, MobX, Context API)
- Навигация (React Navigation)
- Работа с API
- Локализация и международизация
- Анимации (Animated, Reanimated)
5. Нативная интеграция
- Работа с нативными модулями
- Turbo Modules
- Доступ к датчикам, камере, геолокации
- Push-уведомления
- Bluetooth, NFC и другие платформенные возможности
6. Производительность и оптимизация
- FlatList и SectionList
- Memoization (React.memo, useMemo, useCallback)
- Профилирование и отладка
- Управление памятью
7. Тестирование
- Unit-тестирование (Jest)
- Интеграционное тестирование (Testing Library)
- End-to-end тестирование (Detox)
8. CI/CD и деплой
- EAS Build
- Fastlane
- Автоматизация сборок и выпусков
- Подготовка к App Store / Google Play
9. Работа в команде и практики
- Agile и Scrum
- Работа с задачами (Jira, Trello)
- Code review
- Документирование кода и архитектуры
Интеллект-карта 2: Навыки выпускника курса
Центральная тема: Что должен уметь выпускник
Основные направления:
1. Разработка приложений
- Создание кроссплатформенных приложений
- Использование современных библиотек
- Реализация сложной логики и интерфейсов
2. Работа с данными
- Запросы к API
- Обработка и хранение данных
- Локальное хранилище (AsyncStorage, MMKV, SQLite)
- Кэширование
3. Архитектурные подходы
- Clean Architecture
- Feature-Sliced Design
- Redux, MobX, Context API
- Управление зависимостями
4. Тестирование и качество кода
- Написание unit- и интеграционных тестов
- Покрытие тестами
- Линтеры и форматтеры (ESLint, Prettier)
5. Нативная разработка
- Интеграция нативного кода
- Работа с нативными API
- Настройка под конкретные устройства
6. Производительность
- Оптимизация рендеринга
- Мемоизация
- Отслеживание и устранение утечек памяти
7. Деплой и сопровождение
- Подготовка билдов
- Работа с магазинами приложений
- Обновление и поддержка версий
8. Работа в реальном проекте
- Участие в командной разработке
- Соблюдение стандартов
- Публичные портфолио и проекты
Интеллект-карта 3: Технологии и инструменты
Центральная тема: Экосистема React Native
Основные направления:
1. Языки и фреймворки
- JavaScript
- TypeScript
- React
- React Native
2. Библиотеки UI
- React Native Paper
- NativeBase
- Tamagui
- Styled Components
3. Навигация
- React Navigation
- Stack, Tab, Drawer навигаторы
- Deep linking
4. Управление состоянием
- Redux
- MobX
- Zustand
- Context API
- React Query
5. Тестирование
- Jest
- Testing Library
- Detox
6. Асинхронность и работа с API
- Fetch API
- Axios
- SWR
- React Query
7. Файловая система и медиа
- react-native-fs
- expo-media-library
- ImagePicker
8. Нативные модули
- Native Modules
- Turbo Modules
- Codegen
9. CI/CD
- GitHub Actions
- EAS Build
- Fastlane
- App Center
10. Другие полезные инструменты
- Flipper
- Sentry
- Storybook
- Metro Bundler
Интеллект-карта 4: Жизненный цикл мобильного приложения
Центральная тема: Этапы создания и развития мобильного приложения
Основные направления:
1. Планирование и анализ
- Изучение целевой аудитории
- Анализ конкурентов
- Определение требований
- Составление технического задания
2. Проектирование
- Прототипирование
- Выбор архитектуры
- Структура проекта
- Дизайн системы
3. Разработка
- Верстка экранов
- Реализация функционала
- Интеграция API
- Тестирование
4. Тестирование
- Unit-тестирование
- Интеграционное тестирование
- QA проверка
- Тестирование производительности
5. Деплой
- Подготовка к релизу
- Заливка в App Store и Google Play
- Подписка и сертификаты
6. Поддержка и обновления
- Сбор обратной связи
- Исправление багов
- Добавление новых функций
- Апдейты под новые версии ОС
7. Мониторинг и аналитика
- Crash reporting (Sentry, Bugsnag)
- Пользовательская аналитика (Amplitude, Mixpanel)
- A/B тестирование
1. Ульянов М. В. — "Разработка мобильных приложений с использованием кроссплатформенных технологий".
Учебное пособие для вузов. Рассматриваются архитектурные подходы, особенности React Native, интеграция с нативным кодом и практика разработки.
2. Красильников А. В., Попов С. А. — "React Native: создание мобильных приложений на JavaScript".
Учебник-практикум. Включает примеры проектов, описание работы с API, навигацией и состоянием.
3. Методические указания "Основы React Native: от верстки до деплоя".
Разработаны для курса повышения квалификации. Содержат лабораторные работы, задания для самостоятельной работы и рекомендации по настройке среды.
4. Сборник задач и кейсов по мобильной разработке. Под редакцией Лебедева А. И.
Включает практические задания по созданию интерфейсов, работе с данными, тестированию и оптимизации производительности в React Native.
5. Дидактическое пособие "Кроссплатформенная разработка: практика и технологии".
Содержит упражнения, тесты и проектные задания для закрепления материала по React Native и смежным инструментам (TypeScript, Expo, CI/CD).
1. Мобильная разработка с нуля: React Native для начинающих
Освойте основы кроссплатформенной разработки, создавая первые мобильные приложения на React Native. Курс подходит для новичков без опыта в мобильной разработке.
2. Профессиональный React Native: от компонентов до архитектуры
Углубленное изучение React Native с акцентом на архитектурные паттерны, производительность и интеграцию нативного кода.
3. React Native Fullstack: фронтенд и бэкенд в одном курсе
Научитесь разрабатывать мобильные приложения с полным стеком технологий: от UI до API-интеграции и баз данных.
4. Кроссплатформенные приложения: React Native в реальных проектах
Создание приложений по методологии реальной разработки: работа в команде, CI/CD, тестирование и релиз.
5. React Native и TypeScript: типизация в профессиональной разработке
Изучите использование TypeScript в мобильной разработке для повышения надежности и читаемости кода.
6. Разработка мобильных приложений под заказ: практика фрилансера
Получите навыки создания приложений по ТЗ, работы с клиентами и управления проектами в условиях реального заказа.
7. Архитектура мобильных приложений на React Native
Погрузитесь в лучшие практики проектирования архитектуры: Clean Architecture, Feature-Sliced Design и другие подходы.
8. React Native и нативная интеграция: расширяем возможности
Научитесь работать с нативными модулями, Turbo Modules и Codegen для реализации функций, недоступных через JS.
9. Анимация и интерфейсы в React Native: живой UX
Создание красивых и отзывчивых интерфейсов с использованием Animated API, Reanimated и Lottie.
10. Тестирование мобильных приложений: от unit до e2e
Освойте все уровни тестирования — от unit-тестов с Jest до end-to-end проверок с Detox.
11. Деплой и монетизация: запуск своего приложения в App Store и Google Play
Подготовьте, протестируйте и загрузите своё приложение в магазины, настройте аналитику и рекламу.
12. React Native и Expo: быстрая разработка без нативного кода
Используйте мощь Expo для ускорения разработки, доступа к датчикам, камерам и другим возможностям устройства.
13. Mobile-first разработка: от идеи до MVP за 8 недель
Быстрый старт в мобильной разработке: создание минимально жизнеспособного продукта с нуля.
14. Продвинутые навигационные системы в React Native
Глубокое изучение React Navigation: deep linking, навигация с состоянием, кастомизация и управление стеком.
15. React Native для Web: один код — две платформы
Используйте React Native для разработки не только под мобильные устройства, но и под веб.
16. Redux и MobX: управление состоянием в больших приложениях
Изучите продвинутые методы управления состоянием в масштабируемых приложениях.
17. Работа с API в React Native: от fetch до React Query
Научитесь эффективно взаимодействовать с серверами, обрабатывать ошибки, кэшировать данные и управлять запросами.
18. Оптимизация производительности в React Native
Узнайте, как улучшить скорость, снизить потребление памяти и добиться гладкой работы даже на слабых устройствах.
19. Мобильные приложения с нативной скоростью: Reanimated и Fabric
Работа с нативными анимациями, современными движками и производительностью на уровне нативных приложений.
20. CI/CD для мобильных приложений: автоматизация сборки и тестирования
Настройка непрерывной интеграции и доставки для React Native приложений с помощью GitHub Actions, Fastlane и EAS Build.
21. Разработка приложений с offline-функционалом
Реализация кэширования, локального хранения и работы без интернета с использованием SQLite и MMKV.
22. Push-уведомления, геолокация и камеры: работа с системными API
Интеграция ключевых функций мобильных устройств: push-уведомления, геолокация, камера и датчики.
23. Командная разработка на React Native: Git, CI, стандартизация
Работа в команде: стандарты кодирования, организация проекта, совместная разработка и code review.
24. Локализация и международизация мобильных приложений
Поддержка нескольких языков, форматирование дат, валют и чисел, адаптация под разные регионы.
25. Capstone проект: создание коммерческого приложения с нуля
Завершающий курс в виде реального проекта: от идеи до деплоя, с документацией, тестированием и презентацией.
Нет элементов для просмотра