├── README.md ├── 면접준비.docx └── 면접후기.docx /README.md: -------------------------------------------------------------------------------- 1 | # Java, Android Interview 2 | 3 | 면접을 보고 정리하거나 지인에게 면접 후기를 듣고 정리했습니다. 4 | 날짜는 면접 날짜 or 지인에게 들은 후기 입니다. 5 | 6 | 답변을 정리한 것은 보통 구글을 검색한 것으로 잘못된 정보가 있을 수 있습니다. 7 | 추가로 정리가 필요할 수 있어요. (아래 내용에 키워드로 구글 검색해서 상위에 있는 내용을 정리해두는 것도 도움이 많이 됐던 것 같네요) 8 | 9 | 문서로 정리된 것은 파일로 업로드하였습니다. 10 | 도움이 된 강좌 및 사이트는 아래와 같습니다. 11 | 12 | ### 자바 13 | 코틀린으로 바껴가고 있는 추세이지만 자바 지식이 기본적으로 필요한 부분입니다. 아래 공유드린 부분은 기초 부분이라 14 | 자바 경험이 있으시면 그냥 넘어가셔도 될 것 같네요. 만약 기초가 너무 없다면 기본서 책을 하나 보시는 것을 추천 드립니다. 15 | - https://www.youtube.com/playlist?list=PLuHgQVnccGMCeAy-2-llhw3nWoQKUvQck (자바 기초) 16 | - https://www.youtube.com/playlist?list=PLW2UjW795-f5LNeTO6VQB1ZIeZJ_kwEG1 (자바 기초) 17 | - http://www.orentec.co.kr/teachlist/JAVA_BASIC_1/teach_sub1.php (자바 기초 / 회원 가입 시 무료) 18 | - https://www.youtube.com/playlist?list=PLuHgQVnccGMDsWOOn_P0EmAWB8DArS3Fk 19 | 20 | ### 자바 디자인 패턴 21 | GOF가 가장 유명하지만 헤드퍼스트 디자인 패턴이 쉽게 쓰여져있고 학습하기 좋다고 생각합니다. 22 | 23 | - http://www.yes24.com/24/goods/1778966?scode=032&OzSrank=1 24 | - https://www.youtube.com/playlist?list=PLsoscMhnRc7pPsRHmgN4M8tqUdWZzkpxY 25 | 26 | ### 안드로이드 27 | - https://www.udacity.com/course/new-android-fundamentals--ud851 (한글 자막 있음) 28 | - https://www.udacity.com/course/android-performance--ud825 (한글 자막 있음) 29 | - https://developer.android.com/guide/index.html (API 가이드는 전체적으로 한번 보면 좋은 듯 하네요) 30 | - http://www.yes24.com/24/Goods/41085242?Acode=101 (중급 서적으로 보면 도움이 되네요) 31 | 32 | 면접 때 많이 도움이 되었던 블로그 및 영상입니다. 33 | - https://brunch.co.kr/magazine/d-turnover 34 | - https://www.youtube.com/playlist?list=PLVNY1HnUlO25sSWDr7CzVvkOF3bUgkiQQ 35 | 36 | 아래 미디엄 블로그는 안드로이드 개발 관련하여 많은 공감이 가는 글이었습니다. 37 | - https://blog.aritraroy.in/what-my-2-years-of-android-development-have-taught-me-the-hard-way-52b495ba5c51 38 | 39 | 안드로이드 관련 트렌드 및 기술 내용들이 있어 좋았습니다. 40 | - https://www.charlezz.com/ 41 | 42 | ### 코틀린 43 | 입문은 커니의 코틀린으로 하고 추가적으로 코틀린 인 액션으로 보면 좋을 듯 하네요 44 | - http://www.yes24.com/Product/Goods/56921334?scode=032&OzSrank=1 45 | - http://www.yes24.com/24/Goods/55148593?Acode=101 46 | 47 | 샘플 소스는 아래에 있고 이걸로 직접 변경하면서 보는 것이 도움되는 것 같습니다. 48 | - https://github.com/Kotlin/kotlin-in-action 49 | 50 | ### RxJava 51 | - http://reactivex.io/ (영문이지만 홈페이지가 가장 정확하죠) 52 | - http://www.yes24.com/24/goods/45506284?scode=032&OzSrank=1 (입문서) 53 | - http://www.yes24.com/24/goods/38994496?scode=032&OzSrank=2 (레퍼런스) 54 | 55 | ### 그외 도움이 될만한 부분 56 | 아무래도 프로그래밍 관련 부분은 변화가 빠르다 보니 책이 시간이 지나면 현재 사항과 동떨어질 수 있다고 생각합니다. 57 | 그런 부분에 있어서는 영상의 경우에는 현재 버전에 맞게 계속 업데이트를 해주는 경우도 많고 해서 조금 더 선호하게 되는 것 같아요. 58 | 59 | ### 오라일리 사파리도 추천드립니다. 60 | - https://www.oreilly.com/ (한글책도 있긴 하지만 대부분 영문책입니다. 그리고 유료이긴 한데 개발 관련 서적은 모두 있다고 보셔도 될 정도이고 오라일리 책에 대해서 출간 전 Early Access 를 지원합니다. 비용은 한 달 49달러 입니다.) 61 | - 추가로 ACM 정회원 가입 시 오라일리 구독권도 주어지는데 조금 저렴하게 구독하길 원하시면 이 부분도 참고해보세요 (https://medium.com/@DataQ.draft/how-to-get-oreilly-learning-for-99-or-less-8681b959bb26, https://hack-jam.tistory.com/31) 학생은 19달러, 일반인은 99달러입니다. 62 | 63 | 64 | #### 유데미 65 | 유데미 사이트의 경우에는 유료지만 가격이 저렴합니다. 항상 세일하는 편이라 저렴하게 세일하면 11,000원 정도에 구매 가능하고 66 | 상시로 관련 강좌 두개 묶음에 22,000원으로 할인을 해요. 영어 강의가 많지만 실습 위주라서 따라가기 어렵지 않습니다. 67 | - https://www.udemy.com/ 68 | 69 | #### 인프런 70 | 인프런은 한국의 유데미 느낌인데요. 강좌의 수는 유데미 보다 많이 부족하지만 한국어이고 잘 가르쳐주시는 분들도 많아서 샘플 강좌를 들어보고 71 | 괜찮으면 결제하는 것도 좋다고 생각해요 72 | - https://www.inflearn.com/ 73 | 74 | #### 유다시티 75 | 유다시티의 경우에는 실습을 진행하고 리뷰를 받는 나노디그리 과정은 유료지만 그외 무료 강좌가 매우 많아요. 특히 안드로이드, 코틀린, 플러터 등 내용도 있으니 76 | 유용하다고 생각됩니다. 77 | - https://www.udacity.com/ 78 | 79 | #### 코세라 80 | 코세라는 유데미, 유다시티가 실무 위주라면 여기는 대학 강의 느낌이에요. 알고리즘 관련된 강좌나 다른 안드로이드, 자바 관련 강좌도 많고 무료로 들을 수 있는 부분도 81 | 많아서 도움이 됩니다. 82 | - https://www.coursera.org/ 83 | 84 | #### Caster.io 85 | 만약 안드로이드 중급 이상의 면접이 필요하다면 아래 사이트도 도움이 되실 듯 합니다. 월간, 연간 구독 옵션을 제공하고 안드로이드 테스트, MVVM 등과 관련된 내용이 86 | 많습니다(영어) 87 | - https://caster.io/ 88 | 89 | #### 유튜브 90 | 유튜브로 검색하고 관련 영상을 찾아서 보면 빠르게 감이 잡히는 경우가 많은 것 같아요. 모르는 부분이 있으면 유튜브로 검색해서 관련 부분을 찾아보는 것도 도움이 됩니다. 91 | - https://www.youtube.com 92 | 유튜브 안드로이드 관련 채널들 93 | - Android Dialogs https://www.youtube.com/channel/UCMEmNnHT69aZuaOrE-dF6ug 94 | - Android Developers… https://www.youtube.com/channel/UCVHFbqXqoYvEWM1Ddxl0QDg 95 | - Google Developers… https://www.youtube.com/channel/UC_x5XG1OV2P6uZZ5FSM9Ttw 96 | - Nate Ebel… https://www.youtube.com/channel/UCVysWoMPvvHQMEJvRkslbAQ 97 | 98 | #### 미디움 99 | 미디움 블로그에 기술 관련 부분이 많이 올라오더라고요. 한글로 올려주시는 분들도 있고 영문도 좋은 글들이 많아서 찾아서 보면 좋습니다. 100 | - https://medium.com/ 101 | 102 | #### 구글 103 | 구글 검색하면 안 나오는게 없는 것 같아요. 일단 궁금한 부분의 키워드를 적어놨다가 검색하는 것이 도움이 되었습니다. 104 | 105 | #### 참고할만한 Github 106 | - https://github.com/MaximAbramchuck/awesome-interview-questions#android (각종 인터뷰 관련 내용이 있습니다) 107 | - https://github.com/googlesamples 108 | - https://github.com/googlesamples/android-architecture 109 | - https://github.com/googlesamples/android-architecture-components 110 | - https://github.com/iluwatar/java-design-patterns 111 | 112 | #### Google Code Lab 113 | 직접 해보는 것이 가장 잘 습득하는 방법 같은데요. 그 부분에 있어서 코드랩은 정말 좋은 것 같습니다. 114 | - https://codelabs.developers.google.com/ 115 | 116 | #### 최신 트렌드를 위한 Android 관련 뉴스 레터 구독 117 | - Android Weekly… http://androidweekly.net/ 118 | - #AndroidDev Digest… https://www.androiddevdigest.com/ 119 | - Kotlin Weekly… http://www.kotlinweekly.net/ 120 | - #AndroidSweets… https://androidsweets.ongoodbits.com/ 121 | - AndroidLibHunt… https://android.libhunt.com/newsletter 122 | 123 | #### Medium Tag 124 | - https://medium.com/tag/android 125 | - https://medium.com/tag/androiddev 126 | - https://medium.com/google-developer-experts 127 | - https://medium.com/android-news 128 | - https://medium.com/googleplaydev 129 | - https://android-developers.googleblog.com/ 130 | - https://blog.feedspot.com/android_developer_blogs/ 131 | 132 | #### Realm Academy 133 | https://academy.realm.io/section/android/ 134 | 135 | ### 네이버 노재춘 개발자님의 질문 내용들 136 | https://github.com/ZeroBrain/Android-Fundamental 137 | 138 | 139 | # 면접 날짜 및 내용 140 | 141 | # 2017-06-04 142 | https://opentutorials.org/module/2870/16475 143 | 144 | - 안드로이드 뷰의 생성 과정 145 | - 액티비티 생명 주기 146 | - 안드로이드에서 Enum 사용을 자제시켰는데 그 이유는 무엇인가? 147 | - 대용량 Bitmap 을 불러올 경우 메모리 문제가 있기 쉬운데 이럴 떄 어떻게 처리하는가? 148 | - View 의 터치 이벤트 전달과정 149 | - View 의 Measure pass, Layout pass 에 대해서 설명 150 | - MeasureSpec 151 | 152 | # 2017-06-17 153 | https://opentutorials.org/module/2870/16545 154 | 155 | - String Literal 156 | - Annotation 생성 방법 (관점 프로그래밍) 157 | - 프로세스와 스레드의 차이 158 | - ArrayList VS LinkedList 159 | - Quick Sort 160 | - Iterator 를 쓰지 않고 직접 참조 시의 문제점 161 | - DP란? 162 | - 제네릭이란? 163 | - Singleton 동기화 164 | - Heap Data Stack 영역 165 | - Lambda 식이란? 166 | 167 | # 2017-06-18 168 | https://opentutorials.org/module/2870/16547 169 | 170 | - Vector 171 | - 서비스에서 뷰를 띄울 수 있는가? 172 | - Intent Service 란? 173 | - Doze 모드란? 174 | - 허프만 코드 알고리즘 175 | - ListView vs RecyclerView 176 | - Annotation 이란? 177 | - MultiDex란? 178 | - Null Object 패턴 179 | - Binary Search Tree 180 | 181 | 182 | # 2017-06-19 183 | https://opentutorials.org/module/2870/16557 184 | 185 | - ConcurrenModificationException 186 | - Equals 를 Override 할 때, 반드시 Override 해야하는 함수 187 | 188 | 189 | # 2017-06-20 190 | https://opentutorials.org/module/2870/16563 191 | 192 | - Android 서비스는 어떤 Thread 에서 실행되는가? 193 | - HashMap 자료구조 194 | - Composite 패턴 195 | - 상속의 위험성 196 | - 객체지향언어의 4대 특징 197 | - 서비스 생명주기 198 | - 서비스에서 Bind 와 StartService 를 섞어쓰지 않는 이유 199 | 200 | 201 | # 2017-06-21 202 | https://opentutorials.org/module/2870/16567 203 | 204 | - Enum 의 장점 205 | - volatile vs synchronized 206 | - Java UnitTest 207 | - View dispatchTouchEvent 208 | - Dalvik 과 ART 의 차이 209 | - Android N 변경사항 210 | - 안드로이드 런타임 퍼미션 211 | - 안드로이드 Memory Leak 212 | - Strong Reference vs Weak Reference in Java 213 | 214 | 215 | # 2017-06-21 216 | https://opentutorials.org/module/2870/16572 217 | 218 | - 이직 사유 219 | - 정렬 알고리즘을 알고 있는대로 말해주세요 220 | - 퀵소트를 말했는데, 해당 정렬 알고리즘을 상세히 설명해주세요. 221 | - 프로세스와 스레드의 차이는 무엇입니까? 222 | - 프로세스는 어떠한 영역을 공유하고 스레드는 어떤 영역을 공유하나요 223 | - 디자인패턴을 알고 있는대로 알려주세요 224 | - 말하신 디자인패턴을 각각 예를 들어 설명해주세요 225 | - 언급하신 Singleton 은 논란이 있는 부분이 있습니다. 어떤 부분인지 아시나요? 226 | - 자신이 UI Driven 인지 Data Driven 인지 어느 쪽에 가깝다고 생각하시나요? 227 | - 객체지향의 4대 특징이 무엇인가요? 228 | - 각각에 대해서 예를 들어 자세히 설명해주세요 229 | - 인텐트 등의 프로세스 간의 통신이 아닌 앱 내부적으로 이벤트를 받았을때, 업데이트 하는 방법에는 무엇이 있나요? 230 | - 백그라운드 작업을 할 때, 안드로이드에서는 어떤 방법을 이용할 수 있나요? 231 | - Activity Class 를 이용해서 백그라운드 스레드를 돌릴 수 있는 방법? 232 | - 다이나믹 프로그래밍이란 무엇인가요? 233 | - 오버로딩과 오버라이딩의 차이점은 무엇인가요? 234 | - 자바와 자바스크립트 외에 어떤 언어를 할 줄 아나요? 235 | - 요즘 관심있는 언어나 분야는 무엇인가요? 236 | - Github 사용하시나요, 사용하시면 어떤 프로젝트를 진행했나요? 237 | - 현재 진행하는 프로젝트 중에 Kotlin 을 이용하거나 진행할 예정이 있나요? 238 | 239 | 240 | # 2017-07-03 241 | https://opentutorials.org/module/2870/16710 242 | 243 | - 네이티브힙 244 | - MVP 패턴 245 | - Parcelable vs Serializable 246 | - Comparable 247 | - RxJava란? 248 | - Atomic Type 249 | - 데드락을 해결하려면? 250 | - Singleton Double Checked Lock 251 | - 해시코드란? 252 | - 해시맵을 만들려면 무슨 자료구조를 쓸까? 253 | 254 | 255 | # 2017-07-05 256 | https://opentutorials.org/module/2870/16724 257 | 258 | - Recycler View Holder 259 | - 안드로이드 성능 개선 툴 260 | - onTouch Event 리턴값의 의미 등을 자세히 설명 261 | - onInterceptTouch 리턴값의 의미를 자세히 설명 262 | - 구조 개선 시에 사용한 디자인 패턴 263 | - DB 접근 시 ANR 발생은 어떤 식으로 개선했는가? 264 | - Handler, Looper, HandleMessage 의미 265 | - Android MutiThread 환경 설명 266 | - View 에 대한 전반적인 질문 267 | - 성능 개선한 사례에 대한 전반적인 질문 268 | - onDispatchTouchEvent 269 | - 인터페이스 활용의 장점 270 | - 맵 자료구조 설명 271 | - HashMap 과 HashTable 의 차이 272 | - 안드로이드 맵 자료구조 (ArrayMap 등의 사용법 등) 273 | - 전반적인 View, Thread, 성능 개선에 대해 중점적인 추가 질문 274 | 275 | 276 | # 2017-07-17 277 | https://opentutorials.org/module/2870/16875 278 | 279 | - onStart 와 onResume 의 차이 280 | - 디자인패턴 아는 것을 말해보세요 281 | - AsyncTask 최근 변화 282 | - ListView, RecyclerView 차이와 ConstraintLayout behavior 적용이 왜 안되는지? 283 | - 최근 안드로이드 트렌드 284 | - Interface 와 Abstract 에 대한 설명 285 | - Set, Map, List 에 대해 설명 286 | - 동기화 방법에 대해 설명 287 | - 해시맵을 사용할 때 주의점은 무엇인가? 288 | - 프로세스와 스레드에 대해서 설명 289 | - GC 과정에 대해서 설명 290 | - 접근지정자에 대해서 설명 291 | - 오버로딩과 오버라이딩에 대해서 설명 292 | - 리플렉션에 대해 설명 293 | - Parcelable 에 대해서 설명 294 | - Strict Mode 에 대해서 설명 295 | - 일반 뷰와 Surface View 의 차이 296 | - Handler, Looper 에 대해서 설명 297 | - ANR 을 피하려면 어떻게 해야 하는가? 298 | - 백키로 앱을 종료했을 때 프로세스는 종료되나요, 되지 않나요? 299 | - 종료되면 왜 종료되나요? 종료되지 않으면 왜 종료되지 않나요? 300 | - Zygote 에 대해서 301 | 302 | 303 | # 2017-07-24 304 | https://opentutorials.org/module/2870/16969 305 | 306 | - 자신의 장점과 단점 307 | - 요즘 기술 트렌드 학습하는 법 308 | - 부서나 업무 롤의 분쟁이 일어났을 때 해결한 경험 309 | - 이직하려는 이유는? 310 | - 이전 직장에서 맡았던 개발과 역할? 311 | - 배우고 싶은 기술은 어떤 것이 있나요? 312 | - wait / notifyall 관련 손코딩 313 | - quicksort 손코딩 314 | - quicksort 알고리즘 과정 그림으로 설명 (화이트보드) 315 | - Circular List 와 일반 Linked List 구분하는 법은? 316 | - 즐겨쓰는 디자인패턴과 이유 317 | - GC 과정을 설명해주세요 318 | - GC 알고리즘을 설명해주세요 319 | - Dalvik 에서 Art 로 바뀌면서 GC 알고리즘이 변경되었는데 어떻게 변경되었나요? 320 | - HashTable 을 구현한다면 어떻게 구현하실래요? 321 | - Hash 를 쓰는 이유는 무엇인가요? 322 | - 아시는 Sort 알고리즘 모두 설명해주세요 323 | - JDK 의 Sort 는 어떻게 되어있나요? 324 | - HashMap 사용 시 hashCode 및 equals 오버라이딩 시의 주의점 및 규약 325 | - 자신이 생각하는 OOP 란 무엇인가? 326 | - 자바의 메모리 구조에 대해서 설명해주세요 327 | - 프로세스 및 스레드에 대해서 설명해주세요 328 | - Singleton 패턴을 멀티스레드 환경에서 적용하는 3가지 방법에 대해서 설명해주세요 329 | - Merge Sort 와 Quick Sort 의 장단점 및 시간복잡도, 공간복잡도를 알려주세요 330 | - 데드락 발생 조건에 대해서 설명해주세요 331 | - 데드락 회피 방법 및 대응 방법에 대해서 설명해주세요 332 | - Java 멀티스레드 구현을 위해 고려할 수 있는 것을 모두 알려주세요 333 | - interface 와 abstract 의 차이 334 | - 오버로딩과 오버라이딩의 차이 335 | - 오버로딩이 제네릭에서 쓰일 때는 어떻게 사용되나요? 336 | - 컴파일 타임 오버라이딩 및 런타임 오버라이딩에 대해 설명해주세요 337 | - Java ITC? 338 | - Java concurrent package 에 대해서 설명해주세요 339 | - 어노테이션에 대해서 설명해주세요 340 | - Android 시스템 구조 341 | - Android APK 구조 342 | - 액티비티나 커스텀뷰로 할 수 있는데 프래그먼트를 쓰는 이유는? 343 | - Handler / Thread / Looper 344 | - 백그라운드로 UI 를 업데이트하는 방법을 모두 알려주세요 345 | - 인텐트와 인텐트 필터의 개념을 알려주세요 346 | - 이미지 안드로이드 라이브러리를 무엇을 사용해보았나요? 347 | - 해당 라이브러리를 사용하는 이유는 무엇인가요? 348 | - RxJava 란 무엇인가요 349 | - 안드로이드에서 멀티스레드 구현을 위해 고려할 수 있는 것을 모두 적어주세요 350 | - 벡터 이미지 장점 및 사용 방법 351 | - onPause / onStop 의 차이점 352 | - 프래그먼트 생명주기를 액티비티와 비교해서 설명 353 | - 서비스에서 startService 와 bindService 를 사용하는데, bindService 를 쓰는 경우는 언제인가요? 354 | - Kotlin 의 특징에 대해서 알려주세요 355 | - Dalvik 과 Art 의 차이에 대해서 알려주세요 356 | - NDK 의 개념 357 | 358 | 359 | # 2017-08-04 360 | - Weak Reference / Soft Reference / Strong Reference 자세히 설명 및 GC 과정 361 | - ListView 와 RecyclerView 차이점 및 ViewHolder 를 ListView 에서 구현할 경우 RecyclerView 와 성능차이가 있는지 여부 362 | - HTTP 통신 구현 경험 363 | 364 | 365 | # 정리 및 검색을 통해 개념 파악 필요한 용어들 366 | - Junit, mockito, ATSL, stetho, leakcanary 367 | - Android 아키텍트 패턴 (MVP, MVVM, MVI) 368 | - RxJava, RxAndroid 369 | - TDD, Android UnitTest 370 | - 레트로핏, OKHttp, Glide, Dagger2 371 | - FCM, Firebase 372 | - mearsure&layout, style&theme, appcompat 373 | - bitmap 로딩 및 운용방법 374 | 375 | 376 | 377 | 378 | 379 | -------------------------------------------------------------------------------- /면접준비.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BearCola/ForJavaAndAndroidInterview/1c831e5318fb329424d8325aa28a68a62934d74b/면접준비.docx -------------------------------------------------------------------------------- /면접후기.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BearCola/ForJavaAndAndroidInterview/1c831e5318fb329424d8325aa28a68a62934d74b/면접후기.docx --------------------------------------------------------------------------------