모바일 개발 · 중급
Android Jetpack Navigation Component를 사용하여 앱 내 화면 간 이동을 구현할 때의 장점은 무엇이며, NavController, NavGraph, NavHostFragment가 각각 어떤 역할을 하는지 설명해주세요.
힌트 · Navigation Component는 화면 전환을 중앙에서 관리하며, Safe Args와 같은 기능을 통해 타입 안정성을 제공합니다. 각 구성 요소의 역할 분담을 설명하세요.
단일 액티비티 아키텍처UI 컨트롤러 관리탐색 그래프NavControllerNavHostFragment
모범답안
Android Jetpack Navigation Component를 사용하면 앱 내 화면 이동을 훨씬 효율적으로 관리할 수 있습니다. 가장 큰 장점은 단일 액티비티 아키텍처를 쉽게 구현할 수 있다는 점입니다. 화면 전환 로직을 중앙 집중적으로 관리하여 코드 중복을 줄이고 유지보수성을 높여줍니다. 또한, Safe Args를 사용하면 화면 간 데이터 전달 시 타입 안정성을 확보할 수 있어 런타임 오류를 예방할 수 있습니다.
각 구성 요소의 역할은 다음과 같습니다. NavController는 화면 이동을 수행하는 핵심 컨트롤러입니다. NavGraph는 앱 내 모든 탐색 경로를 정의하는 XML 파일로, 화면 간의 관계를 시각적으로 보여줍니다. NavHostFragment는 NavGraph를 호스팅하고 화면 전환을 처리하는 컨테이너 역할을 합니다. NavController를 통해 NavHostFragment 내에서 화면을 전환하게 됩니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Android / Kotlin 면접 질문
- Kotlin Flow 기반의 StateFlow와 Android 아키텍처 컴포넌트의 LiveData는 각각 어떤 특징을 가지고 있으며, UI 상태 관리에 있어 어떤 상황에서 어떤 것을 사용하는 것이 더 효과적인지 비교하여 설명해주세요.
- 코틀린 코루틴에서 Dispatchers.Main, Dispatchers.IO, Dispatchers.Default의 역할과 각각 어떤 종류의 작업에 적합한지 구체적인 사용 사례와 함께 설명해주세요.
- Android에서 Hilt(또는 Dagger Hilt)를 사용하여 의존성 주입(DI)을 구현할 때, @Inject, @Module, @Provides 어노테이션의 역할과 사용 방법에 대해 설명하고, 빌드 타임에 어떻게 의존성 그래프가 생성되는지 간략하게 설명해 주세요.
- Jetpack Compose에서 Recomposition의 동작 원리를 설명하고, 불필요한 Recomposition을 최소화하여 Compose UI 성능을 최적화하는 구체적인 전략들을 제시해 보세요.
- 대규모 안드로이드 프로젝트에서 멀티 모듈 아키텍처를 도입할 때의 장점과 단점을 설명하고, 모듈 간의 의존성 관리 및 순환 의존성 문제를 해결하는 방안에 대해 논의해 보세요.
- Android 8.0 (Oreo) 이후 강화된 백그라운드 실행 제한 사항들을 설명하고, 이러한 제약 하에서 안정적이고 효율적인 백그라운드 작업을 구현하기 위한 Jetpack WorkManager 활용 전략을 제시해 보세요.