본문 바로가기

안드로이드

안드로이드 인터뷰 면접 질문 20선! - 1

반응형

https://medium.com/@yogitavarsani/top-20-android-interview-question-for-beginners-94e734c62920

 

Top 20 Android Interview Question For Beginners .

1. What is the life cycle of Android activity?

medium.com

위 내용을 기반으로 작성한 내용입니다~

 

1. Android Activity 라이프 싸이클에 대해서 설명해주세요.

onCreate()

액티비티가 생성될 때 호출된다. 액티비티 전체 수명 주기 동안 딱 한 번만 동작되는 초기화 및 시작 로직을 실행할 수 있다. savedInstanceState를 통해 이전 상태가 저장된 Bundle 객체를 얻을 수 있는데, 이를 통해 이전 상태를 복원하여 화면에 표시할 수 있다. setContentView()는 onCreate()에 종속적인 메소드로 해당 콜백 메소드에서 구현해야한다.

onStart()

액티비티가 "STARTED" 상태에 진입하게 되면 onStart() 가 호출된다. 이 메소드가 호출되면 사용자에게 보여지고, 포그라운드 태스크로써 사용자와 상호작용할 수 있도록 준비한다. onStart()는 매우 빠른 속도로 실행되고, Activity가 "RESUMED" 상태에 진입함과 동시에 onResume() 메소드를 호출하게 된다.

onResume()

Activity가 "RESUMED" 상태에 진입하게 되면 포그라운드 액티비티가 표시되고 앱이 사용자와 상호작용을 할 수 있는 상태가 된다. 방해 이벤트 및 인터럽트가 발생하면 onPause 가 불리고 다시 돌아올 땐 onResume 이 불린다. 즉, onPause() 중에 해제되는 구성요소를 다시 초기화하고, 액티비티가 재개될 때마다 필요한 이외 초기화 작업을 수행하면 된다.

onPause()

사용자가 잠시 액티비티를 떠났을 때 호출되는 콜백메소드이다. 즉, 해당 액티비티가 포그라운드에 있지 않게 되었다는 것을 의미 한다. (예외적으로 한 화면에 두 앱을 동시에 구동할 수 있는 멀티 윈도우 모드에서는, 멀티 윈도우의 또 다른 앱에 포커스를 두어도 해당 액티비티가 포그라운드에 있으면서 onPause() 가 호출된다.

따라서, 보통 onPause()는 액티비티가 포그라운드에 없을 동안 계속 실행되어서는 안 되지만 언젠가 다시 시작할 작업을 일시중지하는 작업을 수행한다. onPause() 는 아주 잠깐 실행되기 때문에 저장 로직을 넣기엔 시간이 부족하다. 따라서 이렇게 부하가 큰 작업은 onStop()에서 수행해야 한다.

onStop()

액티비티가 사용자에게 더 이상 표시되지 않으면 "STOPPED" 상태에 진입하고 시스템이 onStop() 콜백메소드를 호출한다. 이 메소드에서 필요하지 않은 리소스를 해제하거나 조정해야한다. 애니메이션 중지나 GPS 사용시 배터리 절약을 위해 "세밀한 위치 " > "대략적인 위치" 로 전환할 수 있다.

onDestroy()

액티비티가 완전히 소멸되기 전에 이 콜백 메소드가 호출된다

 

참고:

https://velog.io/@haero_kim/Activity-Lifecycle-%EC%99%84%EB%B2%BD-%EC%A0%95%EB%B3%B5%ED%95%98%EA%B8%B0

 

Activity Lifecycle 완벽 정복하기

안드로이드 Activity 의 생명주기 알아보기

velog.io

 

2. Android 센서에 대해서 설명해주세요.

https://developer.android.com/guide/topics/sensors/sensors_overview?hl=ko 

 

센서 개요  |  Android 개발자  |  Android Developers

대부분의 Android 지원 기기에는 움직임, 방향 및 다양한 환경 조건을 측정하는 센서가 내장되어 있습니다. 이러한 센서는 높은 정밀도와 정확도로 원시 데이터를 제공하며 3차원으로 모니터링하

developer.android.com

크게 세 가지 카테고리의 센서를 지원합니다.

움직임 감지 센서

세 축을 따라 가속력과 회전력을 측정합니다. 가속도계, 중력 센서, 자이로스코프 및 회전 벡터 센서가 포함됩니다.

환경 센서

주변 기온 및 압력, 조도, 습도와 같은 다양한 환경 매개변수를 측정합니다. 이 카테고리에는 기압계, 광도계, 온도계가 포함됩니다.

위치 센서

이 센서는 기기의 물리적 위치를 측정합니다. 이 카테고리에는 방향 센서와 자기계가 포함됩니다.

3. Android Dialog Box 를 설명해보세요.

- AlertDialaog

제목 한개, 버튼 최대 3개, 선택 가능한 항목 목록 또는 맞춤 레이아웃 한개를 표시할 수 있는 대화상자입니다.

- DatePickerDialog / TimePickerDi

미리정의한 UI가 있는 대화상자이며, 사용자가 날짜 또는 시간을 선택할 수 있습니다.

- ProgressDialog

API 26에서 Deprecated 되었습니다. 대신 ProgressBar를 사용해야합니다.

 

4. AndroidManifest.xml 이 무엇이며 왜 필요할까요?

AndroidManifest.xml 파일에는 Android 시스템이 코드를 실행하기 전에 알아야하는 애플리케이션에 대한 정보가 포함되어 있습니다. 루트디렉토리에 선언되어 있습니다. Activity, Service 를 선언합니다.

 

5. 인텐트에 대해서 설명해주세요.

인텐트는 애플리케이션의 다른 컴포넌트에서 작업을 요청하는 데 사용되는 메시징 개체입니다. 암시적 인텐트, 명시적 인텐트 두 가지 유형이 있습니다.

6. Android 에서 Class, File, Activity 에 대해서 설명해주세요.

- Class는 안드로이드에서 실행가능한 apk 파일을 생성하는데 사용하는 java의 컴파일된 형식입니다.
- File은 정보를 저장하는데 사용되는 임의의 정보 또는 리소스 블록입니다. 모든 파일의 형식이 될 수 있습니다.
- Activity는 사용자와 상호작용할 수 있는 GUI를 나타내는 단일 화면입니다.

7. 토스트란 무엇인가요?

토스트는 화면 하단부에 나타는 팝업 메시지입니다. 토스트 알림은 시스템에 의해서 나타났다가 사라지게 되고 상호작용 이벤트를 할 순 없습니다.

Toast.makText(context, "Messeage", Toast.LENGTH_SHORT).show()

 

8. context 란 무엇인가요?

Activity 나 Application 에 대한 정보를 얻기 위해 컨텍스트를 사용합니다. Resource, DataBase, Preferences 등에 접근을 제공합니다.

- Application context

싱글턴 인스턴스이며 액티비티에서 getApplicationContext()를 통해 접근할 수 있습니다. 이 컨텍스트는 애플리케이션 라이프사이클과 연결되어 있습니다.
따라서 현재의 컨텍스트와 분리된 라이프사이클을 가진 컨텍스트가 필요할 때나 액티비티 범위를 넘어서 컨텍스트를 전달할 때에 사용합니다.

싱글턴 객체를 생성할 때 애플리케이션 컨텍스트를 사용하면 됩니다. 이때 액티비티 컨텍스를 전달하게 되면 액티비티는 가비지 콜렉터에 의해 수집되지 않는데 액티비티 컨텍스트는 액티비티에 대한 참조를 계속 유지하기 때문입니다.

- Activity Context

액티비티 라이프사이클과 연결되어있는 컨텍스트 입니다. 액티비티 범위 내에서 컨텍스트를 전달하거나, 라이프사이클이 현재 컨텍스트에 붙은 컨텍스트가 필요할 때 액티비티 컨텍스트를 사용합니다.

ContentProvider 에서의 getContext()

애플리케이션 컨텍스트이며 애플리케이션 컨텍스트와 비슷하게 쓰일 수 있습니다.

9. 암시적 인텐트와 명시적 인텐트의 다른점을 서술하세요.

4대 컨포넌트 (Activity, BroadCastReceiver, Service, ContentProvider) 사이에서 정보전달을 가능하게 해주는 것이 인텐트 입니다.

명시적 인텐트의 경우에는 클래스 객체나 컴포넌트 이름을 지정하여 호출할 대상을 확실하게 알 수 있는 경우 사용하는 것으로 애플리케이션 내부에서 사용합니다. 

암시적 인텐트의 경우는 인텐트의 액션과 데이터를 지정하긴 했지만, 호출할 대상이 달라질 수 있는 경우에 암시적 인텐트를 사용합니다. 기존에 어떤 기능을 지원하는 앱이 있으면 암시적 인텐트를 통해서 타 앱을 사용할 수 있게 하는 것입니다.

 

10. 안드로이드에서 ANR 이란 무엇일까요? ANR을 피하기 위한 방법은?

ANR : Application is Not Responding

애플리케이션 내의 메인쓰레드가 오랫동안 응답하지 않을 때마다 표시됩니다.

- 5초 후에도 입력이벤트에 대한 응답이 없을 때
- 10초 이내에 실행을 완료하지 못했을 때

ANR을 막기 위해 데이터베이스 및 네트워킹 작업을 수행할 땐 백그라운드 스레드를 이용해서 해야합니다. 

 

나머지 10개는 새로운 게시물로 작성하겠습니다. :)

반응형

'안드로이드' 카테고리의 다른 글

Android의 Touch Event 전달  (0) 2023.01.25
Android 인터뷰 20선 - 2  (0) 2023.01.23
Android, Compose 왜 생겼을까?  (0) 2022.07.29
AttributeSet  (0) 2022.07.09
안드로이드 수동 종속성 삽입  (0) 2022.06.25