React Native

Quản lý bộ nhớ

Memory leak, cleanup, useEffect cleanup, listeners, timers, xử lý hình ảnh lớn

20 câu hỏi phỏng vấn·
Senior
1

Memory leak trong ứng dụng React Native là gì?

Câu trả lời

Memory leak xảy ra khi các đối tượng trong bộ nhớ không còn được ứng dụng sử dụng nhưng không thể được garbage collector giải phóng vì các tham chiếu đến chúng vẫn còn tồn tại. Trong React Native, điều này thường xảy ra với các subscription chưa được dọn dẹp, các timer vẫn hoạt động sau khi unmount, hoặc các closure giữ tham chiếu cũ. Memory leak làm giảm hiệu năng dần dần và có thể gây crash trong các phiên dài.

2

Vai trò của hàm trả về (cleanup function) trong useEffect đối với việc quản lý bộ nhớ là gì?

Câu trả lời

Cleanup function được useEffect trả về sẽ chạy trước khi component bị unmount hoặc trước khi effect được chạy lại với các dependency mới. Vai trò chính của nó là dọn dẹp các tài nguyên do effect cấp phát: hủy subscription, clearTimeout/clearInterval, gỡ event listener, hoặc hủy các request đang chờ. Nếu không dọn dẹp, các tài nguyên này vẫn tồn tại trong bộ nhớ và có thể cố gắng cập nhật một component đã bị unmount.

3

Tại sao việc dùng clearTimeout và clearInterval trong cleanup function của useEffect lại quan trọng?

Câu trả lời

Các timer được tạo bằng setTimeout và setInterval vẫn tiếp tục chạy ngay cả sau khi component unmount. Nếu callback của timer cố gắng cập nhật state của một component đã unmount, nó sẽ kích hoạt cảnh báo 'Can't perform a React state update on an unmounted component' và tạo ra một memory leak. Timer giữ một tham chiếu đến callback và closure của nó, khiến garbage collector không thể giải phóng các tài nguyên này. Dùng clearTimeout/clearInterval trong cleanup đảm bảo hủy các timer này một cách đúng đắn.

4

Làm thế nào để ngăn memory leak khi sử dụng event listener trong React Native?

5

Closure có tác động gì đến việc quản lý bộ nhớ trong các component React Native?

+17 câu hỏi phỏng vấn

Các chủ đề phỏng vấn React Native khác

Kiến thức cơ bản về JavaScript

Junior
25 câu hỏi

Kiến thức cơ bản về React

Junior
20 câu hỏi

Kiến thức cơ bản về React Native

Junior
22 câu hỏi

React Hooks

Junior
20 câu hỏi

TypeScript cho React & React Native

Junior
22 câu hỏi

Thành phần & API React Native

Junior
20 câu hỏi

Styling & Layout trong React Native

Junior
18 câu hỏi

Điều hướng React Native

Mid-Level
22 câu hỏi

Quản lý State trong React Native

Mid-Level
24 câu hỏi

Networking & API trong React Native

Mid-Level
20 câu hỏi

Lưu trữ dữ liệu bền vững

Mid-Level
20 câu hỏi

Form & Validation

Mid-Level
18 câu hỏi

Animation trong React Native

Mid-Level
22 câu hỏi

Native Modules & Bridge

Mid-Level
20 câu hỏi

Mã đặc thù theo nền tảng

Mid-Level
18 câu hỏi

Quyền & Device API

Mid-Level
20 câu hỏi

Push Notifications

Mid-Level
18 câu hỏi

Testing React Native

Mid-Level
20 câu hỏi

Debugging React Native

Mid-Level
18 câu hỏi

Build & Deployment

Mid-Level
20 câu hỏi

Expo vs React Native Bare

Mid-Level
18 câu hỏi

Tối ưu hóa hiệu suất

Senior
24 câu hỏi

Architecture Patterns

Senior
22 câu hỏi

New Architecture của React Native

Senior
24 câu hỏi

Các Phương Pháp Bảo Mật Tốt Nhất

Senior
20 câu hỏi

Offline-First Architecture

Senior
20 câu hỏi

CI/CD React Native

Senior
20 câu hỏi

Monorepo & Chia sẻ mã

Senior
18 câu hỏi

Chủ đề nâng cao

Senior
22 câu hỏi

Vòng đời ứng dụng & Thực thi nền

Mid-Level
20 câu hỏi

Xác thực & Quản lý phiên

Mid-Level
22 câu hỏi

Monitoring & Crash Reporting

Senior
20 câu hỏi

Nắm vững React Native cho lần phỏng vấn tiếp theo

Truy cập tất cả câu hỏi, flashcards, bài kiểm tra kỹ thuật, bài tập code review và mô phỏng phỏng vấn.

Bắt đầu miễn phí