Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 기록

안드로이드 대기업 기술 면접 정리 - 1 본문

안드로이드 자료

안드로이드 대기업 기술 면접 정리 - 1

기록개발자 2020. 1. 12. 17:05

참고 자료

https://blog.naver.com/PostView.nhn?blogId=csi468_&logNo=221465784013&from=search&redirect=Log&widgetTypeCall=true&directAccess=false

 

 

1차시 면접

1. 지금까지 개발해왔던 경험들을 바탕으로, 기술적인부분에서의 간략한 자기소개 부탁드립니다.

지금까지 해왔던 Android Studio 관련 프로젝트나 동아리활동, 최근 Kotlin 을 공부중이라는 부분에 대해 설명했습니다.

2. Thread 와 Process 의 차이점을 설명해주세요

모두 프로그램의 실행과 관련된 단어들 입니다. 차이점은 Process는 실행의 단위, Thread는 Process 내에서 실행되는 흐름의 단위로

Process는 독립적으로 실행되지만 Thread는 Process 내의 Thread 들끼리는 Heap,Data 등(Stack은 개별할당)을 공유합니다.

자세한 내용은 https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html 을 참고해주세요.

 

[OS] 프로세스와 스레드의 차이 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

3. Network 부분 질문.

3-1. Http Request Code 에 대해 아는대로 설명해 보세요.

큰 맥락에서 설명하였으면 되었을 것 같습니다. Http Request Status Code는 크게 앞자리숫자를 기준으로 5가지 그룹으로 나누어집니다.

1xx : 정보(조건부) 응답

2xx : 성공

3xx :Ridirection Message Client는 요청을 마무리하기 위해 추가동작을 해야합니다.

4xx : Client 요청 오류. Client가 전송한 코드에 오류가 있음

5xx : 서버 오류.

https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C

 

HTTP 상태 코드 - 위키백과, 우리 모두의 백과사전

HTTP 상태 코드 아래는 HTTP (하이퍼텍스트 전송 프로토콜) 응답 상태 코드의 목록이다. IANA 가 현재 공식 HTTP 상태 코드 레지스트리 를 관리하고 있다. 1xx (조건부 응답) [ 편집 ] 요청을 받았으며 작업을 계속한다. [1] 이 상태의 상태 코드는 상태-라인과 선택적 헤더(컴퓨터에서 출력될 때 각 페이지 맨 윗부분에 자동으로 붙는 부분)만을 포함하는 임시의 응답을 나타내고 빈 라인에 의해서 종결된다. HTTP/1.0이래로 어떤 1XX 상태 코드들도 정의 되지 않았다. 서버들은 1XX 응답을 실험적인 상태를 제외하...

ko.wikipedia.org

4. Lambda Function 과 High Order Function 에 대해 설명해보세요.

Kotlin에서는 함수형 프로그래밍을 지원합니다.

High Order Function(고차함수) 란 , 함수를 인수로 취하거나 함수를 결과로 반환할 수 있는 함수를 말합니다. Android Studio 에서 자주 사용하는 Call-Back Method 등이 고차함수 입니다.

이러한 고차함수에서 매개변수로 주어지는 식을 Lambda Expression ( 람다 표현식 ) 이라고 부릅니다.

Android Studio 같은 경우에 Java8 을 지원하지 않았기 때문에, Lambda Expression을 사용하지 못하고 비슷한 기능을 익명클래스를 만들어 사용하였으며 현재는 Kotlin 의 함수형 프로그래밍을 이용하여 Code를 간결하게 바꾸고 코딩의 자유도를 높일 수 있었습니다.

자세한 내용은 다음을 참고하세요

https://thdev.tech/kotlin/2018/03/17/Kotlin-Lambdas/

Kotlin Lambdas

Kotlin Lambdas March 17, 2018 by Taehwan Udemy : 안드로이드 공식 언어 : 코틀린(Kotlin) 시작하기 by Tae-hwan 2019 드로이드나이츠 발표자 절찬리 모집중!! Kotlin을 활용하여 개발을 하면 무조건 만나는 Lambdas 식. 기존 Android 개발에서는 Java 7을 주로 사용하다 보니 Lambda 식을 사용할 일은 없었다. 하지만 Backport 활용으로 Lambda을 적용할 수 있었는데 retrolambda 이다. 현재는 Android Studio 3.0 이상에서 구글이...

thdev.tech

5. 안드로이드 스튜디오의 Thread 에 대해 설명해보세요. Main Thread와 Worker Thread 등을 구분하는 이유와 Main Thread에서 반드시 동작해야하는 함수가 있는지도 설명해보세요

안드로이드 스튜디오는 크게 2가지 Thread로 분류됩니다. Main Thread(UI Thread ) 와 Worker Thread.

Main Thread는 액티비티와 컴포넌트들의 사용을 담당하고 연동하는 역할을 합니다. UI 컴포넌트들과 밀접한 연관이 있는 Thread 이다보니 UI

Thread라고도 부릅니다. 즉, System Call-Back Method , LifeCycle 에 관련된 Method 등은 반드시 Main Thead에서 관리되어야 합니다.

그런데 다른 작업들에 의해 Main Thread가 UI와 동기화되지 못하고 지연되는 경우에는 문제가 발생합니다. 이러한 오류를 ANR(Application Not Responding, UI 관련 작업이 일정기간 이상 반응되지 못하면 발생) 이라 부릅니다. (ANR이 무엇인지 또한 면접중에 물어보셨습니다.)

이러한 문제점을 막기위해 불안정한 UI관련 작업이나 비동기 작업(애니메이션 등) , High Cost의 연산작업 (Database 처리등) 등은 Worker Thread를 따로 만들어 처리하도록 합니다.

하지만 View 등의 UI 관련 컴포넌트를 업데이트 하는 작업은 UI Thread에서 진행되어야 하는데 애니메이션등의 비동기작업을 진행하며 UI를 수정해야 한다면, Async Task등을 이용하는 것이 바람직합니다.

관련 내용은 https://apphappy.tistory.com/63 를 참고하였습니다.

<안드로이드/Android> 안드로이드에서 스레드란?

안드로이드(Android)에서 메인 스레드(Main Thread)란 무엇인가? 어플리케이션이 실행됐을 때, 시스템에서는 "Main"이라 불리는 어플리케이션을 실행하는 스레드를 생성한다. "Main" 스레드는 안드로이드 이벤트..

apphappy.tistory.com

6. View Model을 사용하는 이유는 무엇인가요? Counter Animation을 사용하는 어플리케이션에서 실행 중에 화면을 돌려 Activity가 회전한다면 Counter 의 값이 Reset 될까요?

A : View Model은 Activity 나 Fragment에 자료가 제한되는 것을 방지하고, UI 관련 데이터를 수명주기에 관계없이 보존하기 위해 만들어졌습니다. 위의 예시에서 View Model을 사용하지 않는다면 런타임중에 Call-Back Method에 의해 Activity가 재시작되고, Activity 내에서 저장되던 Counter 관련 변수 또한 초기화됩니다. 하지만 View Model 은 Activity 나 Fragment의 수명주기에 영향을 받지 않고, Live Data를 통해 UI에 Data를 업데이트하기에 유용하게 사용될 수 있습니다.

관련 내용을 너무도 잘 설명한 포스팅이 있어 링크를 남깁니다.

https://medium.com/@jungil.han/%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8-viewmodel-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-2e4d136d28d2

안드로이드 아키텍처 컴포넌트, ViewModel 이해하기 – 한로니 – Medium

안드로이드 앱 개발 시 한 번쯤 겪어봤을 어려움 하나를 꼽자면 단연 안드로이드 컴포넌트의 수명주기가 아닐까 싶습니다. 그중에서도 액티비티와 프래그먼트의 수명주기는 많은 상태와 여러 진입 케이스에 따른 복잡함으로 오랫동안 개발자들을 괴롭혀 왔습니다…

medium.com


7. Android Activity Life Cycle 에 대해 설명해보세요.

(이 부분의 설명 및 사진자료는 android developer site를 참조하였습니다.)

https://developer.android.com/guide/components/activities?hl=ko

액티비티  |  Android Developers

An Activity is an application component that provides a screen with which users can interact in order to do something, such as dial the phone, take a photo, send an email, or view a map. Each activity is given a window in which to draw its user interface…

developer.android.com

Activity는 3가지 상태를 가집니다. Resumed , Paused , Stopped .

Resumed (Active)- Focus 를 가지고 있으며 화면에 보이는 상태입니다. (Dialog 에 의해 가려진 Activity 또한 Active상태입니다 - dialog 또한 Activity의 일부이기 때문)

Paused - 화면에는 보이지만 Focus를 받지 못하고 있는 상태입니다. ( 투명한 Activity 에 의해 가려진 경우에도 Paused 상태에 해당합니다.)

Stopped - 화면에 보이지 않는 상태입니다. 다른 Activity에 의해 가려지거나 전화가 오거나 홈버튼을 누르는 등의 작업에 의해 Activity는 Stopped 상태로 전환됩니다.

아래는 이러한 상태를 변경하는 Call-Back Method 들과 생명주기에 관련된 설명 입니다.

Activity의 생명주기

Activity의 생명주기와 관련된 Call-Back Method

추가적으로 언급한 부분 :

onCreate() 에서 컴포넌트들의 초기화과정 - binding 이 일어나고,

onStop() 에서는 메모리관리등을 위해 Activity의 상태를 Bundle에 저장하는 작업등을 진행합니다.

이 경우 onSavedInstanceState() Call-Back Method가 실행됩니다.

7-1. onStart() 와 onResume() 함수가 구분되어 있는데 둘의 차이점은 무엇인가요?

A : onStart() 는 액티비티가 사용자에서 보여지기 직전에 호출되고, onResume() 은 사용자에게 보이지만 사용자와 상호작용하기 직전상태일때 실행됩니다.


8. Android 의 Component 관련 질문입니다.

(Android 4대 컴포넌트는 Activity, Service, Broadcast Receiver, Component Provider 입니다)

8-1 . Broadcast Receiver 를 사용할 때, Broadcast를 수신하는 기능 말고 Broadcast 를 송신할 수는 없을까요?

Broadcast Receiver를 이용하여 앱간의 데이터 전달이나 Broadcast 를 송신할 수 있습니다.

상호작용할 앱 모두에 Broadcast Receiver를 등록하고, sendBroadcast() 를 이용하여 Intent 를 주고 받는 방식으로 동작시켜줍니다.

8-2. Content Provider를 이용해 구현해 본 앱이나 기능이 있으신가요?

Content Provider는 앱간의 정보공유를 가능해게 해주는 컴포넌트입니다.

무엇인지는 알고 있었지만 실제로 사용해 본 적은 없어, 없다고 답했습니다.

이후 찾아본 정보에 의하면 Content Provider를 구현하기 위해서는 우선 Content Uri 를 디자인 해야합니다. 이후 query , insert , update , delete 를 구현한 뒤 intent를 교환하여 앱간의 정보교환이 이루어지게 됩니다.

자세한 내용은 developer site를 참조하세요.

https://developer.android.com/guide/topics/providers/content-provider-basics

 

콘텐츠 제공자 기본 사항  |  Android Developers

A content provider manages access to a central repository of data. A provider is part of an Android application, which often provides its own UI for working with the data. However, content providers are primarily intended to be used by other applications…

developer.android.com

9. Jetpack 에서 사용해본 기능은?

A : Room, Navigation - Fragment , View Model 등 사용해 보았습니다.

10. Firebase 중 사용해 본 기능은?

A : 답변당시 Firebase 에 대해 충분히 이해를 하지 못하고 있었습니다. 이 부분은 추후에 업데이트 하도록 하겠습니다.

11. Custom View 를 사용해 본 적이 있는지?

A : 이전의 앱개발에서 ListView 를 커스터마이징 한 Custom ListView를 사용해 본 적이 있어 그 내용을 답변드렸는데, 원하는 대답이 아니셨던 것 같습니다.

정확한 이 부분의 질문은, View를 커스터마이징 하여 모양이 둥근 뷰를 만들거나 특정위치에 고정시키는 등의 작업을 해 본 적이 있냐는 것이였습니다. 만드는 방법은 아래 링크에서 잘 설명되어 있으니 참고하세요.

https://blog.burt.pe.kr/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%BB%A4%EC%8A%A4%ED%85%80%EB%B7%B0-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/

 

안드로이드 커스텀뷰 이해하기 : Burt.K

Burt.K 코코아를 좋아하는 프로그래머입니다 ;) 소개 아카이브 오픈소스 책모음 안드로이드 커스텀뷰 이해하기 안드로이드 뷰는 화면에 그려지기 전에 아래 그림과 같은 몇 단계의 과정을 거친다. 커스텀뷰를 만들기 위해서는 뷰의 드로잉 과정을 이해해야 한다. 위 단계를 3개의 과정으로 나눌 수 있다. 하나의 과정이 실행되면 항상 Draws 단계에서 마무리 된다. Animate 과정 Layout 과정 Draw 과정 각 과정의 시작점은 아래와 같다. Animate 과정은 View의 animate() 메서드에 의해서 시작된다. Layout ...

blog.burt.pe.kr

[출처] 안드로이드 앱 개발자 면접 후기 - 1차면접 (질문 & 답변 중심)|작성자 컴쏘공