면접을 보고 정리하거나 지인에게 면접 후기를 듣고 정리했습니다. 날짜는 면접 날짜 or 지인에게 들은 후기 입니다.
답변을 정리한 것은 보통 구글을 검색한 것으로 잘못된 정보가 있을 수 있습니다. 추가로 정리가 필요할 수 있어요. (아래 내용에 키워드로 구글 검색해서 상위에 있는 내용을 정리해두는 것도 도움이 많이 됐던 것 같네요)
문서로 정리된 것은 파일로 업로드하였습니다. 도움이 된 강좌 및 사이트는 아래와 같습니다.
- https://brunch.co.kr/magazine/d-turnover
- https://www.udemy.com/993276/
- https://www.udacity.com/course/new-android-fundamentals--ud851 (한글 자막 있음)
- https://www.udacity.com/course/android-performance--ud825 (한글 자막 있음)
- https://www.youtube.com/playlist?list=PLuHgQVnccGMCeAy-2-llhw3nWoQKUvQck (자바 기초)
- https://www.youtube.com/playlist?list=PLW2UjW795-f5LNeTO6VQB1ZIeZJ_kwEG1 (자바 기초)
- http://www.orentec.co.kr/teachlist/JAVA_BASIC_1/teach_sub1.php (자바 기초 / 회원 가입 시 무료)
- https://www.youtube.com/playlist?list=PLVNY1HnUlO25sSWDr7CzVvkOF3bUgkiQQ
- https://www.youtube.com/playlist?list=PLuHgQVnccGMDsWOOn_P0EmAWB8DArS3Fk
- https://www.youtube.com/playlist?list=PLsoscMhnRc7pPsRHmgN4M8tqUdWZzkpxY
- https://developer.android.com/guide/index.html (API 가이드는 전체적으로 한번 보면 좋은 듯 하네요)
- http://www.yes24.com/24/Goods/41085242?Acode=101
만약 시간에 여유가 많다면 아래도 참고하는 것이 좋다고 하네요 (저도 다 읽진 못 했습니다)
- https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517671272/ref=sr_1_1?ie=UTF8&qid=1504354968&sr=8-1&keywords=elements+of+programming+interviews+in+java
- http://www.yes24.com/24/goods/44305533?scode=032&OzSrank=1
- 알고리즘 문제 해결 전략 (구종만 저)
- https://www.inflearn.com/course/%EC%B5%9C%EB%B0%B1%EC%A4%80%EC%9D%98-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B8%B0%EC%B4%88/
https://opentutorials.org/module/2870/16475
- 안드로이드 뷰의 생성 과정
- 액티비티 생명 주기
- 안드로이드에서 Enum 사용을 자제시켰는데 그 이유는 무엇인가?
- 대용량 Bitmap 을 불러올 경우 메모리 문제가 있기 쉬운데 이럴 떄 어떻게 처리하는가?
https://opentutorials.org/module/2870/16545
- String Literal
- Annotation 생성 방법 (관점 프로그래밍)
- 프로세스와 스레드의 차이
- ArrayList VS LinkedList
- Quick Sort
- Iterator 를 쓰지 않고 직접 참조 시의 문제점
- DP란?
- 제네릭이란?
- Singleton 동기화
- Heap Data Stack 영역
- Lambda 식이란?
https://opentutorials.org/module/2870/16547
- Vector
- 서비스에서 뷰를 띄울 수 있는가?
- Intent Service 란?
- Doze 모드란?
- 허프만 코드 알고리즘
- ListView vs RecyclerView
- Annotation 이란?
- MultiDex란?
- Null Object 패턴
- Binary Search Tree
https://opentutorials.org/module/2870/16557
- ConcurrenModificationException
- Equals 를 Override 할 때, 반드시 Override 해야하는 함수
https://opentutorials.org/module/2870/16563
- Android 서비스는 어떤 Thread 에서 실행되는가?
- HashMap 자료구조
- Composite 패턴
- 상속의 위험성
- 객체지향언어의 4대 특징
- 서비스 생명주기
- 서비스에서 Bind 와 StartService 를 섞어쓰지 않는 이유
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
https://opentutorials.org/module/2870/16572
- 이직 사유
- 정렬 알고리즘을 알고 있는대로 말해주세요
- 퀵소트를 말했는데, 해당 정렬 알고리즘을 상세히 설명해주세요.
- 프로세스와 스레드의 차이는 무엇입니까?
- 프로세스는 어떠한 영역을 공유하고 스레드는 어떤 영역을 공유하나요
- 디자인패턴을 알고 있는대로 알려주세요
- 말하신 디자인패턴을 각각 예를 들어 설명해주세요
- 언급하신 Singleton 은 논란이 있는 부분이 있습니다. 어떤 부분인지 아시나요?
- 자신이 UI Driven 인지 Data Driven 인지 어느 쪽에 가깝다고 생각하시나요?
- 객체지향의 4대 특징이 무엇인가요?
- 각각에 대해서 예를 들어 자세히 설명해주세요
- 인텐트 등의 프로세스 간의 통신이 아닌 앱 내부적으로 이벤트를 받았을때, 업데이트 하는 방법에는 무엇이 있나요?
- 백그라운드 작업을 할 때, 안드로이드에서는 어떤 방법을 이용할 수 있나요?
- Activity Class 를 이용해서 백그라운드 스레드를 돌릴 수 있는 방법?
- 다이나믹 프로그래밍이란 무엇인가요?
- 오버로딩과 오버라이딩의 차이점은 무엇인가요?
- 자바와 자바스크립트 외에 어떤 언어를 할 줄 아나요?
- 요즘 관심있는 언어나 분야는 무엇인가요?
- Github 사용하시나요, 사용하시면 어떤 프로젝트를 진행했나요?
- 현재 진행하는 프로젝트 중에 Kotlin 을 이용하거나 진행할 예정이 있나요?
https://opentutorials.org/module/2870/16710
- 네이티브힙
- MVP 패턴
- Parcelable vs Serializable
- Comparable
- RxJava란?
- Atomic Type
- 데드락을 해결하려면?
- Singleton Double Checked Lock
- 해시코드란?
- 해시맵을 만들려면 무슨 자료구조를 쓸까?
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, 성능 개선에 대해 중점적인 추가 질문
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 에 대해서
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 의 개념
- 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 로딩 및 운용방법