Как вы напишете нативный модуль
Вопрос
Нужен модуль, который читает уровень заряда и сообщает о переходе в режим энергосбережения. Как вы его сделаете?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Сначала поиск готовой библиотеки (например, в Expo SDK)
Спецификация: `getLevel(): Promise<number>`, событие о режиме энергосбережения
TurboModule с Codegen или Expo Modules API
Реализация на Kotlin и Swift, работа в фоне, ответ через Promise
Подписка на события с `remove()` в очистке эффекта
Обработка ошибок и платформенных различий
Что могут спросить следом
- Почему
getLevelасинхронный? - Как протестировать JS-часть без устройства?
Разбор
Образцовый ответ: «Сначала проверю, нет ли готового: в Expo есть expo-battery, и писать своё не нужно. Если всё же нужен свой модуль, описываю контракт на TypeScript: getLevel(): Promise<number> и событие onPowerModeChange. Дальше либо TurboModule со спецификацией и Codegen, либо Expo Modules API, где на Swift и Kotlin модуль описывается декларативно, это обычно быстрее. На Android читаю BatteryManager и слушаю системный broadcast, на iOS UIDevice и уведомление о режиме энергосбережения. Метод асинхронный, чтобы не блокировать JS. В JS даю хук usePowerMode, который подписывается в useEffect и вызывает remove() в очистке. Модуль в тестах мокаю через jest.mock»
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.