안드로이드 앱개발자 기술면접 준비하기

YJ·2022년 3월 21일
17

첫 포스트!

이번 주에 스타트업 인턴 면접이 잡혔는데 기술 면접이 1시간이라고 한다. 지금 공부한다고 답변을 술술 말하는 똑똑이 개발자가 되진 않겠지만 이참에 안드로이드 개발 이론에 대해 공부하는 시간을 가져보려고 한다.

면접 X털렸다. 근데 내가 많이 부족하다는 점을 알기 때문에 할 말이 없다. 그런 의미로 받았던 질문들을 추가해본다. 최신 트렌드를 꾸준히 공부하는게 필요하다는걸 아주 절실히 깨달았다. (*표시)

해당 포스트는 여러 블로그와 이전 면접 경험들을 기반으로 작성되었습니다

🎇안드로이드 기초 지식 관련 질문 리스트

1. 안드로이드 4대 컴포넌트

  • 액티비티
    안드로이드에서 화면을 관리하고 사용자가 발생시키는 다양한 이벤트를 처리하는 컴포넌트
    • 서비스
      화면에서는 보이지 않지만 백그라운드에서 특정 기능을 수행하는 컨포넘트. 단, 메인 스레드에서 작동하기 때문에 앱이 터지는 걸 방지하기 위해서는 별도의 thread가 필요
    • 컨텐트 프로바이더
      앱 간 데이터공유를 위한 클래스를 제공하는 컴포넌트
    • 브로드캐스트 리시버
      특정 어플에서 발생하는 특정 브로드캐스트 메세지를 처리하는 컴포넌트

2. 액티비티 Life Cycle

액티비티가 시작하는 순간부터 종료되는 순간까지의 주기를 말한다.
onCreate(): 액티비티가 시작될 때 레이아웃을 구성하면서 한 번 실행
onStart(): 액티비티가 사용자에게 보이기 직전에 실행. BroadcastReceiver 실행
onResume(): 사용자가 액티비티와 상호작용하는 기능을 넣는 곳으로, 무조건 실행되어야 하는 기능이 들어감
onPause(): 포커스를 잃어 화면이 부분적으로는 보이지만 곧 사라질 때 실행
onStop(): 사용자에게서 화면이 완전히 사라지고, 다른 액티비티가 보여질 때 호출
onDestroy(): (화면회전 혹은)화면이 완전히 종료되기 직전에 호출

2. 프래그먼트 Life Cycle

onAttach
onCreate
onCreateView
onPause
onStop
onDestoryView

3. List View와 Recycler View의 차이

리스트뷰와 리사이클러뷰는 모두 스크롤 가능한 리스트 형식의 레이아웃을 구현할 때 사용. 리스트뷰는 스크롤할 때 나오는 아이템을 끊임없이 새로 만들어 메모리 성능에 부담이 갈 수 있음. 반면, 리사이클러뷰는 처음 만들어지는 아이템의 개수는 정해져있고, 뷰홀더를 통해 들어가는 뷰의 재사용을 가능하게 함.

4. Recycler View에서 에러를 겪어본 적이 있는지

5. Activity가 가로/세로로 전환되거나 메모리 부족 등으로 종료되었을 때 데이터를 유지하는 방법

onSaveInstanceState()의 Bundle에 저장되어야 할 상태 데이터를 저장하여 유지

6. 디자인 패턴에 대해 아는지

  • MVC
  • MVP
  • MVVM

7. Process와 Thread의 차이

Process는 운영체제로부터 필요한 메모리를 할당받아 실행되는 프로그램의 단위, Thread는 Process 내에서 실행되는 흐름의 단위

8. Thread와 Handler

Thread는 Process 내에서 실행되는 흐름의 단위로 Handler를 통해 구현이 가능

9. 멀티스레드에 대해 아는지

하나의 프로그램에 동시에 여러개의 일을 수행하는 것. 비동기적.

10. Context란

안드로이드 시스템이 어플리케이션 또는 컴포넌트 등을 관리하기 위해 만들어놓은 일종의 ID. 현재 내가 사용하고 있는 어플리케이션 환경의 정보에 접근할 수 있는 수단.

11. 안드로이드 데이터 전달법

  • Activity 간: 인텐트
  • Fragment 간, Activity-Fragment 간: 번들

12. Restful API란

get, post과 같이 어떤 역할을 하고, 재사용성이 있는 API. 서버와 클라이언트를 잇는 인터페이스.

13. 메인(UI) 스레드에서 네트워크 통신이 가능한지

가능하지 않다. 응답이 반드시 10초 이내에 온다는 보장은 없기 때문에 ANR이 발생할 가능성이 크다. 네트워크 통신이나 데이터베이스 저장같은 경우에는 주로 스레드를 별도로 이용한다.

14. OkHttp 라이브러리와 Retrofit 라이브러리

클라이언트와 서버간 http 통신을 쉽게 하기 위해 사용. Retrofit은 OkHttp라는 Http 통신 라이브러리 바탕으로 이루어져있으며, Annotation을 사용하여 가독성 제공. OkHttp는 Interceptor를 통해 로그인을 위한 jwt 토큰을 자동으로 헤더에 붙여주는 등의 편리 제공.

15. Jetpack

안드로이드 앱을 쉽고 빠르게 구축하는데 도움이 되는 도구들의 모음으로, 기존의 support library를 단일화한 것으로 보면 됨. AndroidX가 Jetpack의 라이브러리들을 묶은 패키지 명. 내부에는 ViewModel, DataBinding, ViewBinding 등등이 있음.

16. jwt 토큰

서버와 클라이언트 간 정보를 주고 받을 때 Http 리퀘스트 헤더에 JSON 토큰을 넣어서 보내면, 서버는 별도의 인증 과정없이 헤더에 포함되어 있는 JWT 정보를 통해 인증

17. ANR이란

Application Not Responding. Main Thread(UI Thread)가 일정 시간이상 어딘가에 붙잡혀있을 때 발생.

18. 인텐트

안드로이드 시스템에서 커뮤니케이션을 담당하는 역할로 컴포넌트간의 호출과 메시지 전달에 이용

19. Git과 Github의 차이

Git은 로컬에서 버전 관리하는 프로그램이고, Github는 버전 관리, 소스 코드 공유 등이 가능한 원격저장소

20. 안드로이드 OS*

21. 안드로이드 URI 스킴, 유니버설 링크, 딥링크*

22. 커스텀 컴포넌트*

  • 커스텀 UI(버튼 등ㅇ)을 만들 때 어떤 식으로 만드는지
  • 버튼 컴포넌트가 어떤 상위 컴포넌트를 갖고 있는지

23. 푸시 알림*

24. 액티비티 back pressed (+ 스택, 힙)*

25. 자바와 코틀린의 차이*

26. Relative Layout과 Constraint Layout의 차이*

27. Fragment로만 이루어지는 앱의 장점과 단점*

28. 파이어베이스*


🎇경험 혹은 포트폴리오 관련 기술 질문 리스트

  • 지금까지 진행했던 프로젝트와 어떤 역할을 맡았는지에 대한 간략한 소개
  • 사용기술스택에 대한 꼬리질문
  • 인턴에서 진행한 업무에 대한 소개
  • 기억에 남는 문제해결과정

🎇직무 적합성 및 흥미도 관련 질문 리스트

  • 자기소개
  • 장/단점
  • (회사) 지원동기
  • (직무) 지원동기
  • 회사가 나를 뽑아야 하는 이유
  • 자사의 앱을 사용해보았는지
  • 새로운 언어 및 기술을 배워야 할 때 어떤 방식으로 습득하는지
  • 문제를 해결할 때 시간이 얼마나 걸리는지*
  • 주로 어떤 레이아웃을 사용하는지*
    • 꼬리질문 : Relative와 Constraint의 차이
  • 안드로이드 개발을 할 때 신경쓰는 부분 혹은 맡고싶은 부분*
  • 처음 안드로이드 개발을 시작할 때 고려하는 부분이나 순서*
  • 팀 프로젝트에서 소통방식
  • 최근에 관심을 가지고 다운로드해본 앱이 있는지
  • 인생 목표
  • 마지막으로 질문있는지



*출처
http://heavybros.dothome.co.kr/?p=543
https://www.notion.so/imwj/Android-Interview-3ce7ddf12ddb413a9d2213173654d52c
https://ppizil.tistory.com/1
https://bbul-jit.tistory.com/m/23
https://github.com/taeiim/Android-Study/blob/master/study/week16/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A1%9C%20%EC%B7%A8%EC%97%85%ED%95%98%EA%B8%B0%20-%20%EB%A9%B4%EC%A0%91/%EC%8B%A0%EC%9E%85%20%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A1%9C%20%EC%B7%A8%EC%97%85%ED%95%98%EA%B8%B0%20-%20%EB%A9%B4%EC%A0%91.md

profile
기록안해놓잖아? 그럼 나중에 싹 다 잊어버리는 거에요

0개의 댓글