Java, Android Interview

면접을 보고 정리하거나 지인에게 면접 후기를 듣고 정리했습니다. 날짜는 면접 날짜 or 지인에게 들은 후기 입니다.

답변을 정리한 것은 보통 구글을 검색한 것으로 잘못된 정보가 있을 수 있습니다. 추가로 정리가 필요할 수 있어요. (아래 내용에 키워드로 구글 검색해서 상위에 있는 내용을 정리해두는 것도 도움이 많이 됐던 것 같네요)

문서로 정리된 것은 파일로 업로드하였습니다. 도움이 된 강좌 및 사이트는 아래와 같습니다.

만약 시간에 여유가 많다면 아래도 참고하는 것이 좋다고 하네요 (저도 다 읽진 못 했습니다)

2017-06-04

https://opentutorials.org/module/2870/16475

  • 안드로이드 뷰의 생성 과정
  • 액티비티 생명 주기
  • 안드로이드에서 Enum 사용을 자제시켰는데 그 이유는 무엇인가?
  • 대용량 Bitmap 을 불러올 경우 메모리 문제가 있기 쉬운데 이럴 떄 어떻게 처리하는가?

2017-06-17

https://opentutorials.org/module/2870/16545

  • String Literal
  • Annotation 생성 방법 (관점 프로그래밍)
  • 프로세스와 스레드의 차이
  • ArrayList VS LinkedList
  • Quick Sort
  • Iterator 를 쓰지 않고 직접 참조 시의 문제점
  • DP란?
  • 제네릭이란?
  • Singleton 동기화
  • Heap Data Stack 영역
  • Lambda 식이란?

2017-06-18

https://opentutorials.org/module/2870/16547

  • Vector
  • 서비스에서 뷰를 띄울 수 있는가?
  • Intent Service 란?
  • Doze 모드란?
  • 허프만 코드 알고리즘
  • ListView vs RecyclerView
  • Annotation 이란?
  • MultiDex란?
  • Null Object 패턴
  • Binary Search Tree

2017-06-19

https://opentutorials.org/module/2870/16557

  • ConcurrenModificationException
  • Equals 를 Override 할 때, 반드시 Override 해야하는 함수

2017-06-20

https://opentutorials.org/module/2870/16563

  • Android 서비스는 어떤 Thread 에서 실행되는가?
  • HashMap 자료구조
  • Composite 패턴
  • 상속의 위험성
  • 객체지향언어의 4대 특징
  • 서비스 생명주기
  • 서비스에서 Bind 와 StartService 를 섞어쓰지 않는 이유

2017-06-21

https://opentutorials.org/module/2870/16567

  • Enum 의 장점
  • volatile vs synchronized
  • Java UnitTest
  • View dispatchTouchEvent
  • Dalvik 과 ART 의 차이
  • Android N 변경사항
  • 안드로이드 런타임 퍼미션
  • 안드로이드 Memory Leak
  • Strong Reference vs Weak Reference in Java

2017-06-21 N사 전화면접

https://opentutorials.org/module/2870/16572

  • 이직 사유
  • 정렬 알고리즘을 알고 있는대로 말해주세요
  • 퀵소트를 말했는데, 해당 정렬 알고리즘을 상세히 설명해주세요.
  • 프로세스와 스레드의 차이는 무엇입니까?
  • 프로세스는 어떠한 영역을 공유하고 스레드는 어떤 영역을 공유하나요
  • 디자인패턴을 알고 있는대로 알려주세요
  • 말하신 디자인패턴을 각각 예를 들어 설명해주세요
  • 언급하신 Singleton 은 논란이 있는 부분이 있습니다. 어떤 부분인지 아시나요?
  • 자신이 UI Driven 인지 Data Driven 인지 어느 쪽에 가깝다고 생각하시나요?
  • 객체지향의 4대 특징이 무엇인가요?
  • 각각에 대해서 예를 들어 자세히 설명해주세요
  • 인텐트 등의 프로세스 간의 통신이 아닌 앱 내부적으로 이벤트를 받았을때, 업데이트 하는 방법에는 무엇이 있나요?
  • 백그라운드 작업을 할 때, 안드로이드에서는 어떤 방법을 이용할 수 있나요?
  • Activity Class 를 이용해서 백그라운드 스레드를 돌릴 수 있는 방법?
  • 다이나믹 프로그래밍이란 무엇인가요?
  • 오버로딩과 오버라이딩의 차이점은 무엇인가요?
  • 자바와 자바스크립트 외에 어떤 언어를 할 줄 아나요?
  • 요즘 관심있는 언어나 분야는 무엇인가요?
  • Github 사용하시나요, 사용하시면 어떤 프로젝트를 진행했나요?
  • 현재 진행하는 프로젝트 중에 Kotlin 을 이용하거나 진행할 예정이 있나요?

2017-07-03

https://opentutorials.org/module/2870/16710

  • 네이티브힙
  • MVP 패턴
  • Parcelable vs Serializable
  • Comparable
  • RxJava란?
  • Atomic Type
  • 데드락을 해결하려면?
  • Singleton Double Checked Lock
  • 해시코드란?
  • 해시맵을 만들려면 무슨 자료구조를 쓸까?

2017-07-05 N Labs

https://opentutorials.org/module/2870/16724

  • Recycler View Holder
  • 안드로이드 성능 개선 툴
  • onTouch Event 리턴값의 의미 등을 자세히 설명
  • onInterceptTouch 리턴값의 의미를 자세히 설명
  • 구조 개선 시에 사용한 디자인 패턴
  • DB 접근 시 ANR 발생은 어떤 식으로 개선했는가?
  • Handler, Looper, HandleMessage 의미
  • Android MutiThread 환경 설명
  • View 에 대한 전반적인 질문
  • 성능 개선한 사례에 대한 전반적인 질문
  • onDispatchTouchEvent
  • 인터페이스 활용의 장점
  • 맵 자료구조 설명
  • HashMap 과 HashTable 의 차이
  • 안드로이드 맵 자료구조 (ArrayMap 등의 사용법 등)
  • 전반적인 View, Thread, 성능 개선에 대해 중점적인 추가 질문

2017-07-17

https://opentutorials.org/module/2870/16875

  • onStart 와 onResume 의 차이
  • 디자인패턴 아는 것을 말해보세요
  • AsyncTask 최근 변화
  • ListView, RecyclerView 차이와 ConstraintLayout behavior 적용이 왜 안되는지?
  • 최근 안드로이드 트렌드
  • Interface 와 Abstract 에 대한 설명
  • Set, Map, List 에 대해 설명
  • 동기화 방법에 대해 설명
  • 해시맵을 사용할 때 주의점은 무엇인가?
  • 프로세스와 스레드에 대해서 설명
  • GC 과정에 대해서 설명
  • 접근지정자에 대해서 설명
  • 오버로딩과 오버라이딩에 대해서 설명
  • 리플렉션에 대해 설명
  • Parcelable 에 대해서 설명
  • Strict Mode 에 대해서 설명
  • 일반 뷰와 Surface View 의 차이
  • Handler, Looper 에 대해서 설명
  • ANR 을 피하려면 어떻게 해야 하는가?
  • 백키로 앱을 종료했을 때 프로세스는 종료되나요, 되지 않나요?
  • 종료되면 왜 종료되나요? 종료되지 않으면 왜 종료되지 않나요?
  • Zygote 에 대해서

2017-07-24 N사 면접

https://opentutorials.org/module/2870/16969

  • 자신의 장점과 단점
  • 요즘 기술 트렌드 학습하는 법
  • 부서나 업무 롤의 분쟁이 일어났을 때 해결한 경험
  • 이직하려는 이유는?
  • 이전 직장에서 맡았던 개발과 역할?
  • 배우고 싶은 기술은 어떤 것이 있나요?
  • wait / notifyall 관련 손코딩
  • quicksort 손코딩
  • quicksort 알고리즘 과정 그림으로 설명 (화이트보드)
  • Circular List 와 일반 Linked List 구분하는 법은?
  • 즐겨쓰는 디자인패턴과 이유
  • GC 과정을 설명해주세요
  • GC 알고리즘을 설명해주세요
  • Dalvik 에서 Art 로 바뀌면서 GC 알고리즘이 변경되었는데 어떻게 변경되었나요?
  • HashTable 을 구현한다면 어떻게 구현하실래요?
  • Hash 를 쓰는 이유는 무엇인가요?
  • 아시는 Sort 알고리즘 모두 설명해주세요
  • JDK 의 Sort 는 어떻게 되어있나요?
  • HashMap 사용 시 hashCode 및 equals 오버라이딩 시의 주의점 및 규약
  • 자신이 생각하는 OOP 란 무엇인가?
  • 자바의 메모리 구조에 대해서 설명해주세요
  • 프로세스 및 스레드에 대해서 설명해주세요
  • Singleton 패턴을 멀티스레드 환경에서 적용하는 3가지 방법에 대해서 설명해주세요
  • Merge Sort 와 Quick Sort 의 장단점 및 시간복잡도, 공간복잡도를 알려주세요
  • 데드락 발생 조건에 대해서 설명해주세요
  • 데드락 회피 방법 및 대응 방법에 대해서 설명해주세요
  • Java 멀티스레드 구현을 위해 고려할 수 있는 것을 모두 알려주세요
  • interface 와 abstract 의 차이
  • 오버로딩과 오버라이딩의 차이
  • 오버로딩이 제네릭에서 쓰일 때는 어떻게 사용되나요?
  • 컴파일 타임 오버라이딩 및 런타임 오버라이딩에 대해 설명해주세요
  • Java ITC?
  • Java concurrent package 에 대해서 설명해주세요
  • 어노테이션에 대해서 설명해주세요
  • Android 시스템 구조
  • Android APK 구조
  • 액티비티나 커스텀뷰로 할 수 있는데 프래그먼트를 쓰는 이유는?
  • Handler / Thread / Looper
  • 백그라운드로 UI 를 업데이트하는 방법을 모두 알려주세요
  • 인텐트와 인텐트 필터의 개념을 알려주세요
  • 이미지 안드로이드 라이브러리를 무엇을 사용해보았나요?
  • 해당 라이브러리를 사용하는 이유는 무엇인가요?
  • RxJava 란 무엇인가요
  • 안드로이드에서 멀티스레드 구현을 위해 고려할 수 있는 것을 모두 적어주세요
  • 벡터 이미지 장점 및 사용 방법
  • onPause / onStop 의 차이점
  • 프래그먼트 생명주기를 액티비티와 비교해서 설명
  • 서비스에서 startService 와 bindService 를 사용하는데, bindService 를 쓰는 경우는 언제인가요?
  • Kotlin 의 특징에 대해서 알려주세요
  • Dalvik 과 Art 의 차이에 대해서 알려주세요
  • NDK 의 개념

2017-08-04 N사 임원 면접

  • Weak Reference / Soft Reference / Strong Reference 자세히 설명 및 GC 과정
  • ListView 와 RecyclerView 차이점 및 ViewHolder 를 ListView 에서 구현할 경우 RecyclerView 와 성능차이가 있는지 여부
  • HTTP 통신 구현 경험

정리 및 검색을 통해 개념 파악 필요한 용어들

  • zip / CountDownLatcher / flatMap
  • 레트로핏, 글라이드, 피카소, 슈가레코드, Dagger, RxJava, RxAndroid, Fresco, ButterKnife, sqlbrite&delight, greendao
  • Junit, mockito, ATSL, stetho, leakcanary
  • Android 아키텍트 패턴 (MVP, MVVM 등)
  • Android UnitTest
  • TDD
  • GCM, FCM, Firebase
  • Hot Cold Observable (RxJava)
  • mearsure&layout, style&theme, appcompat
  • eventbus, volley, realm, sqlite
  • bitmap 로딩 및 운용방법