3.7 정리 문제
1. 식이 본문인 함수란 무엇인가? 블록이 본문인 함수 대신 식이 본문인 함수를 쓰면 어떤 경우에 더 좋을까?
2. 디폴트 파라미터와 함수 오버로딩 중 어느 쪽을 써야 할지 어떻게 결정할 수 있을까?
3. 이름 붙은 인자를 사용할 경우의 장단점은 무엇인가?
4. 인자 개수가 가변적인 함수를 정의하는 방법은 무엇인가? 코틀린과 자바에서 vararg 함수는 어떻게 다른가?
5. Unit과 Nothing 타입을 어디에 사용하는가? 이들을 자바의 void와 비교해 설명하라. Nothing이나 Unit이 타입인 함수를 정의해 사용할 수 있는가?
6. return 0과 같은 코드의 의미를 설명해보라. 이런 코드가 올바르지만 불필요한 중복이 있는 것으로 여겨지는 이유는 무엇인가?
7. return 문을 사용하지 않는 함수를 정의할 수 있는가?
8. 지역 함수란 무엇인가? 이런 함수를 자바에서는 어떻게 흉내 낼 수 있을까?
9. 공개(public)와 비공개(private) 최상위 함수는 어떤 차이가 있는가?
10. 패키지를 사용해 코드를 어떻게 여러 그룹으로 나눌 수 있는가? 자바와 코틀린 패키지의 가장 핵심적인 차이는 무엇인지 설명하라.
11. 임포트 별명이란 무엇인가? 자바의 정적 임포트와 비슷한 임포트를 코틀린에서는 어떻게 처리하는가?
12. if 문/식은 어떤 일을 하는가? 각각을 자바의 if 문 및 3항 조건 연산자(?:)와 비교해보라.
13. when 문을 처리하는 알고리즘을 설명하라. 자바 switch와 코틀린 when은 어떤 차이가 있는가?
14. 자바 for (int i = 0; i< 100; i++)와 같이 수를 세는 루프를 코틀린에서는 어떻게 구현하는가?
15. 코틀린이 제공하는 루프 문에는 어떤 것이 있는가? while과 do...while의 차이는 무엇인가? 코틀린 for 루프를 사용해야 하는 이유는 무엇인가?
16. break와 continue를 사용해 루프의 제어 흐름을 어떻게 변경할 수 있는가?
17. 예외 처리 과정을 전체적으로 설명하라. 자바와의 차이점은 무엇인가? 자바와 코틀린에서 try 문이 어떻게 다른지 설명하라.