안드로이드 개발자 면접에서 나올 수 있는 개발자 기술 면접 질문 및 예상 답변 모음입니다.
1. 안드로이드 개발에서 컨텐츠 제공자(Content Provider)란 무엇인가요?
안드로이드 개발에서 Content Provider는 데이터를 다른 앱들과 공유하기 위해 사용되는 컴포넌트입니다. 다른 앱들에게 데이터를 제공하고, 데이터를 검색하고, 수정하고, 삭제하는 기능을 제공합니다. 이를 통해 한 앱에서 생성된 데이터를 다른 앱에서도 사용할 수 있게 됩니다.
Content Provider는 데이터베이스나 파일 시스템, 네트워크 등 다양한 소스로부터 데이터를 제공할 수 있으며, URI(Uniform Resource Identifier)를 통해 데이터에 접근합니다. Content Resolver라는 컴포넌트를 통해 Content Provider에 접근하고 데이터를 조작할 수 있습니다.
2. 안드로이드 개발에서 액티비티(Activity)와 프래그먼트(Fragment)의 차이점은 무엇인가요?
액티비티는 안드로이드 애플리케이션에서 사용자 인터페이스를 담당하는 컴포넌트입니다. 하나의 화면을 나타내며 사용자와 상호작용할 수 있는 기능을 제공합니다. 액티비티는 독립적으로 실행되어 다른 액티비티로 전환될 수 있습니다.
프래그먼트는 액티비티의 하위 컴포넌트로 독립적인 인터페이스를 가지며 액티비티 위에서 실행됩니다. 액티비티 내의 화면을 세분화하여 모듈화하고 재사용성을 높여줍니다. 프래그먼트는 여러 개가 동시에 화면에 표시될 수 있으며 액티비티와 라이프사이클을 공유합니다.
3. 안드로이드 개발에서 서비스(Service)는 어떤 용도로 사용되나요?
서비스는 백그라운드에서 실행되는 컴포넌트로, 사용자 인터페이스를 가지지 않습니다. 네트워크 요청, 파일 다운로드, 데이터 처리 등의 작업을 처리하고, 앱이 죽더라도 백그라운드에서 작업을 계속할 수 있습니다.
서비스는 두 가지 유형으로 사용될 수 있습니다. 첫 번째는 백그라운드에서 계속 실행되는 작업을 처리하기 위한 '스타티드(Started) 서비스'이고, 두 번째는 다른 앱과 상호작용하거나 백그라운드에서 실행되는 작업이 완료될 때까지 유지해야 하는 '바인드(Bound) 서비스'입니다.
서비스는 Intent를 통해 시작하고, 필요한 작업을 구현하는 onStartCommand() 메서드를 오버라이딩하여 사용합니다.
4. 안드로이드 개발에서 동기와 비동기의 차이는 무엇인가요?
동기(Synchronous) 작업은 순차적으로 실행되며, 이전 작업이 완료된 후에 다음 작업을 진행합니다. 모든 작업이 완료될 때까지 대기해야 하기 때문에 시간이 오래 걸릴 수 있습니다.
비동기(Asynchronous) 작업은 작업을 시작한 후 그 작업의 완료를 기다리지 않고 다른 작업을 동시에 실행할 수 있습니다. 다른 작업을 중간에 수행하고 결과를 기다리지 않아도 되므로 시간을 효율적으로 활용할 수 있습니다. 비동기 작업은 일반적으로 콜백이나 이벤트 기반으로 처리됩니다.
5. 안드로이드 개발에서 메모리 누수(Memory Leak)가 무엇이며, 어떻게 방지할 수 있나요?
메모리 누수는 프로그램이 더 이상 사용하지 않는 메모리를 계속해서 점유하게 되는 상황을 말합니다. 이는 앱의 성능 저하와 강제 종료의 원인이 될 수 있습니다.
메모리 누수를 방지하기 위해 다음과 같은 방법을 사용할 수 있습니다.
- 가비지 컬렉션: 사용하지 않는 객체를 자동으로 해제하여 메모리를 반환합니다.
- 약한 참조(Weak Reference): 참조하고 있는 객체의 메모리가 해제되어도 참조는 유지되지 않도록 합니다.
- 리소스 해제: 사용이 끝난 리소스를 적절하게 해제하여 메모리를 반환합니다. 예를 들어, 비트맵 리소스 사용 후에는 recycle() 메서드를 호출하여 해제합니다.
- Static으로 선언된 객체에는 액티비티나 컨텍스트와 같은 생명주기에 영향을 받는 객체를 참조하지 않도록 주의합니다. 정적 변수는 앱이 종료될 때까지 메모리에 남아있기 때문에, 해당 변수가 참조하는 객체 역시 메모리에 계속 남아있을 수 있습니다.
'job interview FAQ' 카테고리의 다른 글
기계 엔지니어 신입 면접 준비하기! (0) | 2023.08.27 |
---|---|
취준생들을 위한 신입 웹 개발자 면접 가이드 (0) | 2023.08.25 |
데이터 분석가 포지션 준비하기 : 예상 면접 질문 & 답변 예시 (0) | 2023.08.25 |
외부영업 전문가 인터뷰 핵심 질문 리스트 (0) | 2023.08.24 |
서버 개발자 신입 기술면접 및 예상 답변 5가지 (0) | 2023.08.24 |