P
prepair.app
Пройти інтерв'ю →
EnglishУкраїнськаРусскийDeutsch
📱

Middle React Native DeveloperПитання на співбесіді React Native

Middle · 2–4 роки досвіду

Співбесіда на React Native розробника йде кількома шарами: базовий React і JSX, потім мобільна специфіка — навігація, стилі через Flexbox, доступ до нативного коду через міст або JSI, і нарешті збірка та реліз. Нижче — питання, які ставлять найчастіше, кожне з еталонною відповіддю. Middle: глибше розуміння, оптимізацію та реальні робочі ситуації.

Спробувати — без реєстрації
Готуємо питання…

Теми для підготовки

Компоненти, props і state
JSX та хуки (useState, useEffect)
Стилізація через Flexbox
React Navigation і deep linking
Міст, JSI та New Architecture (Fabric)
Продуктивність, відмінності платформ і реліз (Metro, OTA-оновлення)

5 питань рівня Middle з відповідями

1

Проведіть через те, що реально відбувається при виклику нативного методу з JS — у старій і новій архітектурі.

Відповідь

На старому мості виклик серіалізується в JSON, стає в чергу, батчується, асинхронно надсилається на нативний бік, виконується, і результат серіалізується назад — кожен перехід коштує часу, і нічого не синхронно. З JSI TurboModule — реальний C++-обʼєкт, на який JS зберігає пряме посилання; виклик методу йде через C++-байндинг без JSON-серіалізації й без черги, і може бути синхронним, якщо це потрібно. Плата — складність: написати TurboModule як слід означає мати справу з кодогенерацією і C++, тоді як модуль на старому мості був ближчим до звичайного JS-подібного клейового коду.

2

`FlatList` на кілька сотень рядків гальмує під час скролу — як підступитися?

Відповідь

Спершу профілювати — профайлер Flipper/React DevTools чи вбудований perf monitor покаже, вартість у JS (ре-рендери, важкий renderItem) чи в нативному потоці (layout, зображення). Далі перевірити базове: стабільний keyExtractor, React.memo на рядку, щоб зміна стану батька не каскадувалася на кожен рядок, і відсутність інлайнових стрілкових функцій та обʼєктних літералів у пропсах рядка. Якщо проблема в смиканні layout, getItemLayout позбавляє від проходу вимірювання на елемент, а якщо вузьке місце — сам список за великого масштабу, перехід на FlashList часто прагматичніший за подальшу ручну настройку FlatList.

3

Фічі потрібна можливість, якої React Native не надає — як дістатися нативного коду, і що доведеться дублювати?

Відповідь

Пишете нативний модуль — реалізацію на Swift/Objective-C для iOS і на Kotlin/Java для Android, — з однаковою сигнатурою методу з обох боків, бо JS викликає один JS-фейсинг API, який має розвʼязатися в реальну реалізацію на тій платформі, де виконується. Пропуск однієї платформи означає, що застосунок там впаде або мовчки нічого не зробить, тож обидві реалізації мають насправді робити те саме, а не просто мати однакову назву. Тестувати треба на реальному пристрої чи симуляторі кожної платформи, а не довіряти тому, що «воно зібралося».

4

Як надійно обробляти deep link, включно з холодним стартом?

Відповідь

Зареєструвати URL-схему чи universal link/app link у нативному конфізі (Info.plist / AndroidManifest.xml) і в конфізі linking навігатора, зіставивши патерни URL з екранами й параметрами. Складність — холодний старт: якщо застосунок не був запущений, під час старту треба перевірити Linking.getInitialURL() і використати його для початкового стану навігації, бо слухач події Linking сам по собі ловить лише посилання, що прийшли, поки застосунок уже відкритий. Universal links додатково потребують файли associated-domains / assetlinks.json, розміщені на вашому домені, щоб ОС довіряла застосунку обробку цього URL замість відкриття браузера.

5

У чому різниця між OTA-оновленням і релізом через стор, і коли що використовувати?

Відповідь

OTA-оновлення (CodePush, Expo Updates) надсилає новий JS-бандл прямо на встановлені застосунки без ревʼю в сторі, і користувачі отримують його при наступному запуску чи фоновій перевірці — добре для суто JS-багфіксів і змін контенту. Усе, що зачіпає нативний код — новий нативний модуль, додавання дозволу, оновлення нативної залежності, — взагалі не входить до JS-бандла, тож OTA цього не доставить; потрібна справжня збірка й відправка в стор. Правила Apple прямо забороняють OTA «суттєво змінювати основне призначення застосунку», тож команда, що покладається на OTA понад швидкі фікси, ризикує акаунтом у сторі, а не лише оновленням.

🦎

Прочитати відповіді недостатньо

На співбесіді ти говориш вголос під тиском. Кем поставить ті самі питання, оцінить кожну відповідь і покаже, що саме підтягнути.

Пройти інтерв'ю Middle React Native Developer →
Безкоштовно · 3 інтерв'ю на місяць

Інші рівні — React Native Developer

Junior React Native DeveloperSenior React Native DeveloperУсі питання React Native Developer

Інші спеціалізації

🔍Middle QA Manual🤖Middle QA AutomationMiddle Java Backend🐍Middle Python Backend🐘Middle PHP Backend🦫Middle Go Backend🟢Middle Node.js Backend💎Middle Ruby on Rails🟣Middle .NET Backend Developer🔷Middle C++