*진행 중인 문서입니다.
- Android Interview Questions
Category 0: The Android Framework
Q) 0. What is Android?
모바일 지향 운영체제, 리눅스 커널 기반
주요 특징
- 오픈소스(Android Open Source Project) 및 커스텀 가능 -> 광범위한 채택
- 풍부한 앱 생태계 : Play Store, third-party stores, 직접 배포
- multitaking
- 다양한 하드웨어 지원 : 다양한 가격대, 화면 크기, 해상도, 하드웨어 구성
안드로이드 아키텍처
모듈식 구성
- Linux Kernel
프로세스 관리, 메모리 관리, 파일 관리, 하드웨어 관리 - HAL (Hardware abstraction Layer)
리눅스 커널과 안드로이드 프레임워크 사이의 표준화 계층
구글이 관리하는 프레임워크는 하나고, 커스텀 커널과 드라이버를 작성하는 제조사는 무수히 많기에 안정성을 위해 강제력 있는 규격이 필요- 칩셋(SoC, system-on-chip) 제조사 : 커스텀 커널과 드라이버 작성, HAL 구현
- Google : Android framework 관리 및 업데이트
- Native C/C++ libraries
OpenGL, SQLite, WebKit 등
커널이 제공하는 거친 원재료를 앱이 쓰기 좋게 가공하는 계층 - Android Runtime (ART) and core libraries
Ahead-of-Time (AOT) / Just-in-Time (JIT) compile
데이터 구조, 파일 조작, 스레딩 등을 위한 필수 API 제공 - Android framework (APIs)
앱 개발을 위한 고수준 API 제공. Activity, ContentProvider 등 - Applications
시스템 앱 + third-party 앱
Q) 1. What is Intent?
컴포넌트 간 통신을 위한 메시징 프로토콜
Explicit Intent: 호출할 컴포넌트의 이름을 지정
Implicit Intent: 수행할 작업을 선언. 시스템은 action, category, data를 기반으로 처리할 수 있는 컴포넌트를 결정
Intent Filter: 각 컴포넌트가 처리할 수 있는 Intent 유형을 선언, 시스템이 암시적 인텐트를 전달할 컴포넌트를 걸러내는 데 사용하는 필터
Q) 2. What is the purpose of Pending Intent?
Pending Intent: 다른 앱이나 시스템 서비스가 현재 앱과 동일한 권한으로 Intent를 실행할 수 있도록 하는 wrapper. 앱의 수명 주기를 벗어나 트리거 되어야 하는 작업(알림, 컴포넌트 시작)에 사용.
Q) 3. What are the differences between Serializable and Parcelable
// TBU
Q) 4. What is Context and what types of Context exist?
Context: 앱(또는 컴포넌트)의 신분증이자 시스템 자원과 리소스에 접근하기 위한 핸들
// TBU
Q) 5. What is Application class?
Q) 6. What is the purpose of the AndroidManifest file?
Q) 7. Describe the Activity lifecycle
Q) 8. Describe the Fragment lifecycle
Q) 9. What is Service?
Q) 10. What is BroadcastReceiver?
Q) 11. What is the purpose of a ContentProvider, and how does it facilitate secure data sharing between applications?
Q) 12. How to handle configuration changes?
Q) 13. How Android handles memory management, and how do you avoid memory leaks?
Q) 14. What are the main causes of ANR errors, and how can you prevent them from occurring?
Q) 15. How do you handle deep links?
Q) 16. What are tasks and back stack?
Q) 17. What’s the purpose of Bundle?
Q) 18. How do you pass data between Activities or Fragments
Q) 19. What happens to an Activity during configuration changes?
Q) 20. What is ActivityManager?
Q) 21. What are the advantages of using SparseArray
Q) 22. How do you handle runtime permissions?
Q) 23. What are the roles of Looper, Handler, and HandlerThread?
Q) 24. How do you trace exceptions?
Q) 25. What are build variants and flavors?
Q) 26. How do you ensure accessibility?
Q) 27. What is the Android file system?
Q) 28. What are Android Runtime (ART), Dalvik, and Dex Compiler?
Q) 29. What are the differences between the APK file and the AAB file?
Q) 30. What is R8 optimization?
Q) 31. How do you reduce application sizes?
Q) 32. What is a process in Android applications, and how does the Android operating system manage it?
Category 1: Android UI - Views
Q) 33. Describe the View lifecycle
Q) 34. What’s the difference between View and ViewGroup?
Q) 35. Have you ever used ViewStub and how do you optimize UI performance using it?
Q) 36. How to implement custom views?
Q) 37. What is Canvas and how to utilize it?
Q) 38. What is the invalidation in the View system?
Q) 39. What is ConstraintLayout?
Q) 40. When should you use SurfaceView instead of TextureView?
Q) 41. How does RecyclerView work internally?
Q) 42. What’s the difference between Dp and Sp?
Q) 43. What is the use of a nine-patch image?
Q) 44. What is a Drawable, and how is it used in UI development?
Q) 45. What is Bitmap on Android, and how would you handle large Bitmaps efficiently?
Q) 46. How do you implement animations?
Q) 47. What is the Window?
Q) 48. How do you render a web page?
Category 2: Jetpack Library
Q) 49. What is the AppCompat library?
Q) 50. What is the Material Design Components (MDC)?
Q) 51. What is the advantages of using ViewBinding?
Q) 52. How DataBinding works?
Q) 53. What is LiveData?
Q) 54. What is Jetpack ViewModel?
Q) 55. What is the Jetpack Navigation Library?
Q) 56: What are Dagger 2 and Hilt?
Q) 57. What is the Jetpack Paging library?
Q) 58. What is Baseline Profile?
Category 3: Business Logic
Q) 59. How would you manage long-running background tasks?
Q) 60. How do you serialize Json format to object
Q) 61. How do you handle network requests to fetch data, and which libraries or techniques do you use for efficiency and reliability?
Q) 62. Why is a paging system essential for loading large datasets, and how can it be implemented with RecyclerView?
Q) 63. How do you fetch and render images from the network?
Q) 64. How do you store and persist data locally?
Q) 65. How do you handle offline-first features?
Q) 66. Where do you launch tasks for loading the initial data? LaunchedEffect vs. ViewModel.init()
- Jetpack Compose Interview Questions
Category 0: Compose Fundamentals
Q) 0. What is the structure of Jetpack Compose?
Q) 1. What are the Compose phases?
Q) 2. Why is Jetpack Compose a declarative UI framework?
Q) 3. What is recomposition, and when does it occur? Also, how does it relate to the app performance?
Q) 4. How does the composable function work internally?
Q) 5. What is stability in Jetpack Compose, and how does it relate to performance?
Q) 6. Have you ever had experience optimizing Compose performance by improving stabilities?
Q) 7. What is composition and how to create it?
Q) 8. What strategies are available for migrating the XML-based project to Jetpack Compose?
Q) 9. Why should you always test Compose performance in release mode?
Q) 10. What Kotlin idioms are frequently used in Jetpack Compose?
Category 1: Compose Runtime
Q) 11. What is State and which APIs are used to manage it?
Q) 12. What are the advantages you can take from the state hoisting?
Q) 13. What are the differences between remember and rememberSaveable?
Q) 14. How do you safely create a coroutine scope within composable functions?
Q) 15. How do you handle side effects inside composable functions?
Q) 16. What is the purpose of rememberUpdatedState, and how does it work?
Q) 17. What is the purpose of produceState, and how does it work?
Q) 18. What is snapshotFlow and how does it work?
Q) 19. What is the purpose of derivedStateOf, and how does it help optimize recomposition?
Q) 20. What’s the lifecycle of composable functions or Composition?
Q) 21. What is SaveableStateHolder?
Q) 22. What’s the purpose of the snapshot system?
Q) 23. What are the mutableStateListOf and mutableStateMapOf?
Q) 24. How can you safely collect Kotlin’s Flow in composable functions while preventing memory leaks?
Q) 25. What’s the role of the CompositionLocals?
Category 2: Compose UI
Q) 26. What’s Modifier?
Q) 27. What is Layout?
Q) 28. What is Box?
Q) 29. What are the differences between Arrangement and Alignment?
Q) 30. What is Painter?
Q) 31. How do you load images from the network?
Q) 32. How can you efficiently render hundreds of items as a list in while avoiding UI jank?
Q) 33. How do you implement pagination with lazy lists?
Q) 34. What is Canvas?
Q) 35. Have you ever utilized graphicsLayer Modifier?
Q) 36. How do you implement visual animations in Jetpack Compose?
Q) 37. How do you navigate between screens?
Q) 38. How preview works and how do you handle them?
Q) 39. How do you write unit tests for Compose UI components or screens?
Q) 40. What is screenshot testing, and how does it help ensure UI consistency during development?
Q) 41. How do you ensure accessibility in Jetpack Compose?
'Android' 카테고리의 다른 글
| 🥕당근 안드로이드 전형 후기 (0) | 2026.01.11 |
|---|---|
| DevFest Android in Korea 2025 - 버터맥주파티 (0) | 2026.01.11 |
| Kotlin Coroutines에 대한 메모 (0) | 2025.08.06 |
| super.init(version=6) (0) | 2025.03.23 |
| [Error] command not found: adb (0) | 2024.12.01 |