본문 바로가기

기술 면접

(13)
[Android] RecyclerView에 대해 설명하시오. 1. 구성요소1) 기본 구성요소1–1)LayoutManager*리스트, 그리드, 스태그드 그리드 등의 배치를 담당하고 *동시에 스크롤도 담당한다. *아이템의 focus담당 (리스트를 내릴때 새로운 아이템을 추가해야하는지도 알려준다)1–2) Adapter*view, viewHoler생성 *item과 viewHolder를 bind *RecyclerView에게 changes를 notify *아이템 클릭등의 interaction 핸들링 *viewTypes 분기 *onFailedToRecyclerView를 통해 Recycler복원2) 내부 구성요소2 . Recycle 방법1) 레이아웃 매니저가 getViewForPosition으로 view를 요청2) RecyclcerView는 캐시에 getViewForPositi..
[Android] Multi Thread 환경에서의 올바른 Singleton은 무엇인가? 일반적으로 하나의 인스턴스만 존재해야 할 경우 Singleton 패턴을 사용하게 된다. 물론 Single Thread에서 사용되는 경우에는 문제가 되지 않지만 Multi Thread 환경에서 Singleton 객체에 접근 시 초기화 관련하여 문제가 있다.보통 Singleton 객체를 얻는 static 메서드는 getInstance()로 작명하는 게 일반적이다.그렇다면 어떻게 코드를 작성해야 Singleton 객체를 생성하는 로직을 thread-safe 하게 적용할 수 있을까? 정말 단순하게 별로 신경 쓰고 싶지 않다면 메서드에 synchronized 키워드만 추가해도 무방할 것이다. 그렇지만 좋은 개발자가 되기 위해선 효율적인 코드에 대해서 고민을 해 봐야 한다. 메서드에 Singleton 클래스의 ge..
[Android] 안드로이드 context에 대해 설명하시오 Context의 정의Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.Application 환경에 대한 전역 정보를 접근하기 위한 인터페이스.추상 클래스이며 실제 ..
[Android] 안드로이드 Task, flag에 대해 설명하시오 태스크란? (Task, Activity Stack) 어피니티란? (Android Affinity) 플래그란? (Android Flag) 안드로이드 태스크란? (Android Task, Activity Stack) - Task는 어플리케이션에서 실행되는 액티비티를 보관하고 관리하며 Stack형태의 연속된 Activity로 이루어진다 - 선입후출(First In Last Out)형태로 나중에 적재된 액티비티일 수록 가장 먼저 사용된다 만약 1페이지>2페이지>3페이지 순으로 액티비티를 이동했을때 실행순서대로 Task에 push해 놓았다가 back버튼을 누르면 3페이지>2페이지>1페이지순으로 Task에서 pop시켜 되돌아 간다고 생각하면 된다 - 서로 다른 어플리케이션간의 이동에도 Task를 이용해 사용자 경험..
[Android] Process와 Task에 대해 설명하시오. 안드로이드의 Process타 운영체제와 마찬가지로, 실행가능한 프로그램 데이터가 메모리로 로드되어 실행된 것을 프로세스라고 한다. 안드로이드는 리눅스 기반의 OS이므로, 리눅스의 프로세스처럼 각각 ID가 부여되며, 다른 프로세스와 철저히 격리되어 실행된다.Process의 구등안드로이드는 앱의 컴포넌트(엑티비티, 서비스, 리시버, 프로바이더)를 실행하는 시점에서, 그 컴포넌트가 메모리로 로드되고, 컴포넌트가 속한 앱의 프로세스가 구동된다. Note : 앱의 프로세스가 새로 구동될 때마다, 시작점은 Application의 onCreate()메서드이다.Process 변경컴포넌트는 기본적으로 앱의 프로세스에 속하지만, 소속 프로세스를 변경할 수도 있다. 메니페스트 파일에서 컴포넌트를 선언할 때, android:..
[Android] 안드로이드 서비스(service)에 대해 설명하시오. : 서비스를 사용하지 않고 별도의 스레드를 생성해 백그라운드 작업을 하면 어떤 문제가 발생할까? 스레드로 백그라운드 작업을 하다가 앱에서 back 키를 눌러 액티비티를 모두 종료할 시 앱 프로세스의 우선순위가 낮아져 LMK(low memory killer)가 프로세스를 강제로 종료할 수 있다. 이 때 스레드 또한 종료되게 된다. 그렇다면 서비스는 그냥 스레드와 다를까? 먼저, 프로세스 우선순위에 대해 알아보자. - 프로세스 우선순위1. 포그라운드 프로세스 : 사용자와 상호작용하는 액티비티나 그런 액티비티에 바인딩된 서비스, onCreate/ onStart/ onStartCommand/ onDestory 를 실행 중인 서비스, onReceive를 실행하는 브로드캐스트 리시버에 해당한다. 2. 가시(visi..
[Android] Intent에 대해 설명하시오. 안드로이드 어플리케이션을 구성하는 네 가지 기본 요소에는 Activity, Service, Broadcast Receiver, Content Provider가 있다. 인텐트(Intent)란 이러한 어플리케이션 구성요소(컴포넌트) 간에 작업 수행을 위한 정보를 전달하는 역할을 한다. 인텐트를 가장 손쉽게 사용한 예로는 액티비티간의 화면전환을 들 수 있다. 즉 인텐트는 컴포넌트A가 컴포넌트B를 호출할 때 필요한 정보를 담고 있으며, 이 정보에는 호출되는 컴포넌트B의 이름이 명시적으로 표시되기도 하고, 속성들이 암시적으로 표시되기도 한다. 또한 호출된 컴포넌트B가 호출한 컴포넌트A로 어떠한 결과를 전달할 때도 인텐트가 사용된다. 어떠한 컴포넌트를 호출하냐에 따라 사용되는 대표적인 메소드로는 다음과 같은 것들이..
[Android] 안드로이드 생명주기(Life cycle)에 대해 설명하시오. 1. Activity 생명주기먼저, Activity에 대해서 정리해볼텐데요,아래 이미지를 보시면서 전체 흐름에 대해서 보고, 하나씩 정리해보도록 하겠습니다.1-1. OnCreate ()액티비티가 Launch되고 나서, 최초에 실행될 때, 호출 됩니다.액티비티에 필요한 리소스들을 여기서 초기화 해주는데요.Button이라든가 EditText를 예로 들 수 있겠습니다.1-2. OnStart ()유저에게 액티비티가 보이도록 해주는데요.이 단계는 매우 빠르게 끝나고, onResume() 상태로 들어갑니다.보통 BroadcastReceiver는 이 단계에서 등록을 하는것이 좋습니다.1-3. OnResume () 와 OnPause()제 생각에, 안드로이드 개발에 있어서 꼭 알아야 하는, 매우 중요한 단계 두가지입니다..