모바일 개발 · 기초
Kotlin의 Null Safety 기능은 무엇이며, 이를 위해 사용되는 '?' (nullable type)와 '!!' (non-null assertion operator)의 역할과 사용 시 주의점에 대해 설명해주세요.
힌트 · 널 포인터 예외 방지를 위한 기능입니다. '?'는 널이 될 수 있음을 명시하고, '!!'는 널이 아님을 강제하여 위험하게 사용될 수 있습니다.
NullPointerExceptionnullable typenon-null assertion안전한 호출 연산자컴파일 시점
모범답안
Kotlin의 Null Safety는 널 포인터 예외(NullPointerException)를 방지하기 위한 기능입니다. Kotlin은 변수가 널 값을 가질 수 있는지 여부를 명확히 구분합니다.
'?' (nullable type)는 변수가 널 값을 가질 수 있음을 나타냅니다. 예를 들어 String?은 String 타입이거나 null일 수 있다는 의미입니다. 이 변수를 사용할 때는 널 체크를 하거나 안전한 호출 연산자(?. )를 사용해야 합니다.
'!!' (non-null assertion operator)는 변수가 널이 아님을 강제로 단언하는 연산자입니다. 만약 '!!'를 사용했는데 실제 변수 값이 널이라면 NullPointerException이 발생합니다. 따라서 '!!'는 정말로 널이 될 가능성이 없다고 확신할 때만 신중하게 사용해야 합니다. 잘못 사용하면 Kotlin의 Null Safety 장점을 무효화하고 예외를 발생시킬 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Android / Kotlin 면접 질문
- 안드로이드 개발에서 Context는 무엇을 의미하며, 어떤 상황에서 주로 사용되는지 최소 두 가지 이상의 예시를 들어 설명해주세요.
- AndroidManifest.xml 파일의 주요 역할은 무엇이며, 이 파일에 반드시 포함되어야 하는 정보들은 어떤 것들이 있는지 설명해주세요.
- 안드로이드 UI 구성의 기본 요소인 View와 ViewGroup의 차이점을 설명하고, 각각의 예시를 들어주세요.
- Activity의 onPause()와 onStop() 메서드는 어떤 차이가 있으며, 각각 어떤 상황에서 호출되고 어떤 작업을 수행하는 것이 적절한가요?
- Fragment의 onCreateView()와 onViewCreated() 메서드의 호출 시점과 역할의 차이점을 설명하고, 각각 어떤 종류의 작업을 수행하는 것이 권장되는지 예시와 함께 설명해 주세요.
- Android 아키텍처 컴포넌트 중 ViewModel의 역할과 장점은 무엇이며, Activity 또는 Fragment의 생명주기와 어떻게 독립적으로 데이터를 유지할 수 있는지 설명해주세요.