React Native

Управління пам'яттю

Витоки пам'яті, cleanup, useEffect cleanup, listeners, timers, обробка великих зображень

20 питань зі співбесід·
Senior
1

Що таке memory leak (витік пам'яті) у застосунку React Native?

Відповідь

Memory leak виникає, коли об'єкти в пам'яті більше не використовуються застосунком, але не можуть бути звільнені garbage collector, оскільки посилання на ці об'єкти все ще існують. У React Native це часто трапляється з неочищеними subscription, timer'ами, що залишаються активними після unmount, або closure, які захоплюють застарілі посилання. Memory leak поступово погіршують продуктивність і можуть спричиняти крахи під час тривалих сесій.

2

Яку роль відіграє функція повернення (cleanup function) у useEffect для керування пам'яттю?

Відповідь

Cleanup function, яку повертає useEffect, виконується перед тим, як компонент буде unmount, або перед повторним виконанням ефекту з новими залежностями. Її основна роль — очистити ресурси, виділені ефектом: скасувати subscription, clearTimeout/clearInterval, видалити event listener або перервати запити, що виконуються. Без цього очищення ці ресурси продовжують існувати в пам'яті й можуть намагатися оновити розмонтований компонент.

3

Чому важливо використовувати clearTimeout і clearInterval у cleanup function useEffect?

Відповідь

Timer'и, створені за допомогою setTimeout і setInterval, продовжують виконуватися навіть після unmount компонента. Якщо callback timer'а намагається оновити state розмонтованого компонента, це спричиняє попередження 'Can't perform a React state update on an unmounted component' і є memory leak. Timer зберігає посилання на callback і його closure, перешкоджаючи garbage collector звільнити ці ресурси. Використання clearTimeout/clearInterval у cleanup забезпечує коректне скасування цих timer'ів.

4

Як запобігти memory leak під час використання event listener у React Native?

5

Який вплив мають closures на керування пам'яттю в компонентах React Native?

+17 питань зі співбесід

Інші теми співбесід React Native

Основи JavaScript

Junior
25 запитань

Основи React

Junior
20 запитань

Основи React Native

Junior
22 запитань

React Hooks

Junior
20 запитань

TypeScript для React та React Native

Junior
22 запитань

Компоненти та API React Native

Junior
20 запитань

Стилізація та макет у React Native

Junior
18 запитань

Навігація в React Native

Mid-Level
22 запитань

Управління станом у React Native

Mid-Level
24 запитань

Networking та API в React Native

Mid-Level
20 запитань

Збереження даних

Mid-Level
20 запитань

Форми та валідація

Mid-Level
18 запитань

Анімації React Native

Mid-Level
22 запитань

Native Modules & Bridge

Mid-Level
20 запитань

Код, специфічний для платформи

Mid-Level
18 запитань

Дозволи та API пристрою

Mid-Level
20 запитань

Push Notifications

Mid-Level
18 запитань

Тестування React Native

Mid-Level
20 запитань

Налагодження React Native

Mid-Level
18 запитань

Build & Deployment

Mid-Level
20 запитань

Expo vs React Native Bare

Mid-Level
18 запитань

Оптимізація продуктивності

Senior
24 запитань

Architecture Patterns

Senior
22 запитань

React Native New Architecture

Senior
24 запитань

Найкращі практики безпеки

Senior
20 запитань

Offline-First Architecture

Senior
20 запитань

CI/CD React Native

Senior
20 запитань

Monorepo та спільне використання коду

Senior
18 запитань

Складні теми

Senior
22 запитань

Життєвий цикл застосунку та фонове виконання

Mid-Level
20 запитань

Автентифікація та керування сесіями

Mid-Level
22 запитань

Monitoring & Crash Reporting

Senior
20 запитань

Опануй React Native для наступної співбесіди

Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.

Почни безкоштовно