서문 (Preface)
추천사 (Testimonial)
이 책에 대하여
- 이 책의 대상 독자
- 이 책에서 다루는 내용
- 책 활용 방법과 면접 준비
- 최신 내용에 관하여
- 오류 제보
Sponsors
- CodeRabbit
Chapter 0. Kotlin Language
- Q) 0. Kotlin의 null 안전성에 대해 설명하세요
- Q) 1. Any, Unit, Nothing 타입의 주요 역할은 무엇인가요?
- Q) 2. data class란 무엇이며, 일반 클래스와 어떻게 다른가요?
- Q) 3. sealed class란 무엇이며 사용 사례를 설명하세요
- Q) 4. inner class란 무엇이며 nested class와의 차이점은 무엇인가요?
- Q) 5. enum class는 언제 사용하나요?
- Q) 6. value class란 무엇인가요?
- Q) 7. object란 무엇이며 일반 클래스와의 차이점은 무엇인가요?
- Q) 8. companion object란 무엇인가요?
- Q) 9. var와 val의 차이점은 무엇인가요?
- Q) 10. backing field와 backing property의 차이점은 무엇인가요?
- Q) 11. 위임 프로퍼티(delegated property)란 무엇인가요?
- Q) 12. lazy 위임과 lateinit의 차이점은 무엇인가요?
- Q) 13. 가시성 수정자에는 어떤 것들이 있나요?
- Q) 14. init 블록은 언제 호출되며, 주요 특징은 무엇인가요?
- Q) 15. 고차 함수란 무엇이며, 어떤 장점이 있나요?
- Q) 16. inline 키워드의 장점과 한계는 무엇인가요?
- Q) 17. reified 키워드란 무엇이며, 사용 시 이점은 무엇인가요?
- Q) 18. 람다 표현식은 어떻게 사용하나요?
- Q) 19. 함수형(SAM) 인터페이스란 무엇인가요?
- Q) 20. 확장(Extension)이란 무엇이며, 장단점은 무엇인가요?
- Q) 21. 구조적 동등성과 참조적 동등성은 무엇이며, 어떻게 다른가요?
- Q) 22. null + null 연산을 실행하면 어떻게 되나요?
- Q) 23. DSL이란 무엇이며 어떻게 활용할 수 있나요?
Chapter 1. Kotlin 표준 라이브러리
- Q) 24. Kotlin에는 어떤 컬렉션 타입이 있나요?
- Q) 25. 컬렉션에 사용할 수 있는 변환 연산자의 종류는 무엇인가요?
- Q) 26. Iterator의 메커니즘을 설명해 주세요
- Q) 27. Sequence와 그 메커니즘이란?
- Q) 28. 컬렉션의 일부를 검색하기 위해 어떤 유형의 확장 함수를 사용할 수 있나요?
- Q) 29. 컬렉션에서 객체의 순서를 어떻게 정의하나요?
- Q) 30. 스코프 함수란 무엇인가요?
Chapter 2. 코루틴 (Coroutines)
- Q) 31. 코루틴이란 무엇인가요?
- Q) 32. Continuation이란 무엇이며, suspend 함수와 내부적으로 어떤 관계가 있나요?
- Q) 33. 코루틴과 스레드의 차이점은 무엇인가 요?
- Q) 34. 코루틴 빌더란 무엇인가요?
- Q) 35. 코루틴 컨텍스트란 무엇인가요?
- Q) 36. Job의 역할은 무엇인가요?
- Q) 37. 코루틴 스코프의 목적은 무엇인가요?
- Q) 38. 어떤 종류의 코루틴 dispatcher가 있고, 각각의 목적은 무엇인가요?
- Q) 39. 채널이란 무엇이고 어떻게 동작하나요?
- Q) 40. join()과 yield() 함수는 어떤 역할을 하나요?
- Q) 41. 코루틴에서 예외를 어떻게 처리하나요?
- Q) 42. Cold Flow와 Hot Flow의 차이점은 무엇인가요?
- Q) 43. StateFlow와 SharedFlow의 차이점을 설명해 주세요
- Q) 44. Flow.flowOn() 연산자는 어떤 역할을 하나요?
- Q) 45. Flow.buffer() 연산자는 어떻게 동작하나요?
- Q) 46. 코틀린의 내부 메커니즘은 FusibleFlow와 ChannelFlow로 Flow를 어떻게 최적화하나요?
- Q) 47. launchIn(scope)과 scope.launch()의 차이점은 무엇인가요?
- Q) 48. Flow 변환 연산자인 flatMapLatest, flatMapMerge, flatMapConcat은 무엇인가요?
- Q) 49. callbackFlow와 channelFlow는 무엇이며, 내부 메커니즘은 어떻게 되나요?
Chapter 3. KotlinX 라이브러리
- Q) 50. kotlinx-serialization이란 무엇이며 어떻게 동작하나요?
- Q) 51. kotlinx-datetime은 무엇이며 Java time API 대신 왜 사용하나요?
- Q) 52. kotlinx-collections-immutable이란 무엇이며 언제 사용해야 하나요?
- Q) 53. 그 밖에 주목할 만한 KotlinX 라이브러리에는 어떤 것이 있나요?
Chapter 4. 코틀린 컴파일러와 플러그인
- Q) 54. 어노테이션 프로세서, KAPT, KSP란 무엇인가요?
- Q) 55. 코틀린 컴파일러의 구조는 어떻게 되어 있나요?
- Q) 56. K2 컴파일러란 무엇인가요?
- Q) 57. FIR(Frontend Intermediate Representation)란 무엇인가요?
- Q) 58. IR이란 무엇이며 코틀린 백엔드는 어떻게 동작하나요?
- Q) 59. 코틀린 컴파일러 플러그인은 어떻게 작성하나요?
- Q) 60. 실제 코틀린 컴파일러 플러그인 활용 사례에는 어떤 것이 있나요?
Chapter 5: 코틀린 멀티플랫폼
- Q) 61. 코틀린 멀티플랫폼이란 무엇인가요?
- Q) 62. 코틀린 멀티플랫폼은 플랫폼별 API를 어떻게 처리하고, 공통 코드를 어떻게 공유하나요?
- Q) 63. 코틀린 멀티플랫폼에서 동시성 또는 비동기 프로그래밍을 위한 전략은 무엇인가요?
- Q) 64. 코틀린 멀티플랫폼에서 HTTP 네트워크 통신을 어떻게 처리하나요?
- Q) 65. Compose Multiplatform이란 무엇인가요?
- Q) 66. 코틀린 멀티플랫폼 프로젝트에서 소스 셋은 어떻게 구성되나요?
- Q) 67. Kotlin/Native는 메모리 관리와 플랫폼 상호 운용을 어떻게 처리하나요?
- Q) 68. 코틀린 멀티플랫폼에서 어떤 테스트 전략을 사용하시나요?
- Q) 69. 코틀린 멀티플랫폼에서 의존성 주입을 위해 어떤 전략을 사용하나요?



