패스잇
모바일 개발 · 심화

복잡한 데이터 구조(예: 대용량 이미지 데이터, 파일 스트림, 커스텀 객체 그래프)를 React Native의 JavaScript 환경과 네이티브 모듈(iOS/Android) 간에 효율적으로 전달하고 처리하기 위한 설계 전략을 설명해 주세요. 특히, 이러한 데이터 전송 시 발생할 수 있는 메모리 문제나 스레딩 이슈를 어떻게 관리할 것인지 구체적인 방안을 제시해 주세요.

힌트 · JSI를 활용한 직접적인 메모리 접근, 파일 경로/URI 전달, 백그라운드 스레드에서 네이티브 작업 수행, 큰 데이터는 스트림 또는 청크 단위로 처리하는 방안을 고려합니다.

ArrayBufferBase64Native ModulesBridgeSerialization

모범답안

React Native에서 복잡한 데이터를 네이티브 모듈과 효율적으로 주고받기 위해 몇 가지 전략을 고려할 수 있습니다.

첫째, 작은 데이터는 JSON 직렬화를 통해 브릿지를 사용하지만, 큰 데이터는 ArrayBuffer를 Base64로 인코딩하여 전달하는 방식을 고려합니다.

둘째, 이미지나 파일 스트림은 파일 경로 또는 URI를 네이티브 모듈에 전달하여 네이티브 코드에서 직접 처리하도록 합니다.

셋째, JSI를 활용하여 JavaScript 환경에서 네이티브 메모리에 직접 접근하는 방안도 있습니다. 이를 통해 복사본 생성을 최소화할 수 있습니다.

메모리 문제와 스레딩 이슈를 해결하기 위해, 네이티브 작업은 백그라운드 스레드에서 수행하고, 큰 데이터는 스트림 또는 청크 단위로 처리하여 메모리 사용량을 줄입니다. 또한, 필요 없는 데이터는 즉시 메모리에서 해제하여 메모리 누수를 방지해야 합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 React Native 면접 질문

← React Native 면접 질문 전체 보기