면접 질문 목록으로 가기
면접 질문실전 질문꼬리 질문

안드로이드(Android)란 무엇인가

skydovesJaewoong Eum (skydoves)||10분 소요

안드로이드(Android)란 무엇인가

안드로이드(Android)는 리눅스 커널(Linux Kernel)을 기반으로 한 오픈소스 운영 체제로, Google이 개발하고 유지·관리하고 있습니다. 스마트폰과 태블릿 같은 터치스크린 모바일 기기를 주 대상으로 설계되었지만, 웨어러블, TV, 자동차, IoT 기기 등 다양한 하드웨어에서도 구동됩니다. 안드로이드의 계층형 아키텍처와 각 계층이 애플리케이션 개발에 어떻게 기여하는지 이해하는 것은 면접에서 빈번하게 출제되는 기초 주제이므로, 확실하게 정리해 두시는 것을 권장합니다.

이번 면접 질문을 통하여 아래 내용들을 학습하실 수 있습니다.

  • 안드로이드가 리눅스 커널 기반의 오픈소스 플랫폼이라는 점을 설명할 수 있습니다.
  • 커널부터 애플리케이션 프레임워크까지 이어지는 계층형 아키텍처를 이해할 수 있습니다.
  • 안드로이드 런타임(ART)이 애플리케이션 코드를 실행하는 역할을 파악할 수 있습니다.
  • 프레임워크 API와 네이티브 C/C++ 라이브러리의 차이를 구분할 수 있습니다.

플랫폼 개요

안드로이드는 전 세계에서 가장 널리 배포된 모바일 운영 체제입니다. AOSP(Android Open Source Project)를 통해 소스 코드가 공개되어 있어 기기 제조사들이 자사 하드웨어에 맞게 플랫폼을 자유롭게 커스터마이징할 수 있으며, CDD(Compatibility Definition Document)와 CTS(Compatibility Test Suite)를 통해 호환성을 유지합니다.

애플리케이션은 주로 Kotlin 또는 Java로 작성하며, 컴파일된 바이트코드는 안드로이드 런타임 위에서 실행됩니다. Google Play Store가 주요 배포 채널이지만, 사이드로딩(sideloading)이나 서드파티 앱 스토어를 통한 배포도 가능합니다. 이러한 개방성은 안드로이드를 다른 폐쇄적인 모바일 플랫폼과 차별화하는 핵심 특징입니다. 면접에서 "안드로이드의 특징을 설명해 주세요"라는 질문에 대해 이 개방성을 언급하면 좋은 인상을 남기실 수 있습니다.

아키텍처 계층

안드로이드의 플랫폼 아키텍처는 여러 개의 독립적인 계층으로 구성되어 있으며, 각 계층은 하위 계층을 기반으로 동작합니다.

리눅스 커널 (Linux Kernel): 운영 체제의 기반이 되는 계층입니다. 하드웨어 추상화, 프로세스 관리, 메모리 관리, 보안 정책 적용 등을 담당합니다. 디스플레이, 카메라, Wi-Fi, Bluetooth 등의 하드웨어 컴포넌트에 대한 디바이스 드라이버가 이 계층에 위치하며, 사용자 기반 권한 체계와 프로세스 격리를 통해 핵심 보안 모델을 제공합니다.

하드웨어 추상화 계층 (Hardware Abstraction Layer, HAL): 안드로이드 프레임워크와 기기별 하드웨어 사이에 표준 인터페이스를 제공합니다. 각 HAL 모듈은 특정 하드웨어 컴포넌트에 대해 정의된 인터페이스를 구현하는 공유 라이브러리 형태로 존재합니다. 프레임워크 API가 하드웨어에 접근할 때 시스템이 적절한 HAL 모듈을 로드하여 연결하는 구조입니다.

네이티브 C/C++ 라이브러리 (Native C/C++ Libraries): 성능이 중요한 기능을 제공하기 위해 C와 C++로 작성된 라이브러리 모음입니다. 주요 라이브러리로는 그래픽 렌더링을 위한 OpenGL ES, 로컬 데이터베이스 연산을 위한 SQLite, 웹 콘텐츠 처리를 위한 WebKit, 오디오 및 비디오 재생을 위한 Media Framework 등이 있습니다. NDK 개발자는 저수준 제어가 필요한 작업에서 이 라이브러리를 직접 호출할 수 있습니다.

안드로이드 런타임 (Android Runtime, ART): 애플리케이션 바이트코드를 실행하는 계층입니다. ART는 설치 시점의 AOT(Ahead-of-Time) 컴파일과 실행 시점의 JIT(Just-in-Time) 컴파일을 조합하여 성능을 최적화합니다. 각 애플리케이션은 자체 프로세스에서 독립된 ART 인스턴스로 실행되므로 프로세스 격리가 보장됩니다. 또한 가비지 컬렉션(garbage collection), 디버깅 지원, 프로파일링 기능도 ART가 담당합니다.

애플리케이션 프레임워크 (Application Framework): 개발자가 애플리케이션을 구축할 때 사용하는 Java 및 Kotlin API 계층입니다. ActivityManager를 통한 Activity 생명주기 및 태스크 관리, WindowManager를 통한 윈도우 표시 관리, ContentProvider를 통한 앱 간 데이터 공유, NotificationManager를 통한 시스템 알림, PackageManager를 통한 설치된 패키지 조회 등의 기능을 포함합니다.

애플리케이션 계층

최상위 계층에는 사용자와 직접 상호작용하는 모든 애플리케이션이 위치합니다. 시스템 앱(설정, 연락처, 전화)과 서드파티 앱 모두 이 계층에 해당합니다. 모든 애플리케이션은 동일한 프레임워크 API를 사용하므로, 일부 특수 시스템 권한을 제외하면 시스템 앱이라고 해서 서드파티 앱보다 특별한 API 접근 권한을 갖지 않습니다.

애플리케이션은 컴파일된 바이트코드, 리소스, 애셋, 매니페스트 파일을 포함하는 APK 또는 AAB 파일로 패키징됩니다. 매니페스트에는 앱의 구성 요소(Activity, Service, BroadcastReceiver, ContentProvider), 필요한 권한, 최소 SDK 버전 등이 선언됩니다.

이 면접 질문은 구독자 전용입니다

Dove Letter를 구독하시면 안드로이드, 코틀린 개발 관련 독점 면접 질문의 전체 내용을 볼 수 있습니다.

구독하기
면접 질문 목록으로 가기