[면접 회고] part. Kotlin

falsovsveritas·2025년 3월 27일

기술면접

목록 보기
5/10
  • Kotlin이 뭔지?
  • Kotlin은 안드로이드 앱용 언어일 뿐만 아니라 서버 개발용으로도 사용한다.

Kotlin이란?

Kotlin은 JetBrains에서 개발한 현대적인 프로그래밍 언어로, JVM(Java Virtual Machine)에서 실행되는 언어이며, Android 개발 공식 언어 중 하나입니다. 또한, JavaScript 및 네이티브 코드로도 컴파일할 수 있어 다양한 플랫폼에서 활용할 수 있습니다.


1. Kotlin의 특징

🔹 Java와 100% 호환

  • Kotlin은 Java와 완전히 호환되므로, 기존 Java 코드와 함께 사용할 수 있습니다.
  • Java 라이브러리 및 프레임워크를 그대로 활용 가능.

🔹 간결한 문법

  • 코드가 Java보다 간결하며, boilerplate 코드를 줄여줍니다.
  • 예를 들어, Java에서 Getter/Setter, equals(), toString() 등을 직접 구현해야 하지만, Kotlin에서는 data class 한 줄로 해결 가능.
// Java에서 객체 생성 및 데이터 접근
class Person {
    private String name;
    
    public Person(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
}

// Kotlin에서는 한 줄로 끝남
data class Person(val name: String)

🔹 Null Safety (안전한 Null 처리)

  • NullPointerException(NPE)을 방지하는 기능이 내장돼 있음. (?. 연산자 등)
  • Kotlin에서는 기본적으로 null 값을 허용하지 않음.
  • ? 연산자를 사용하여 Nullable 변수를 선언해야 함.
  • !! 연산자를 사용하면 Null Safety를 무시하고 강제 호출 가능 (하지만 NullPointerException 위험 있음).
val name: String = "Kotlin" // Non-nullable
val nullableName: String? = null // Nullable

🔹 객체지향 + 함수형 프로그래밍 지원

  • 고차 함수, 람다 표현식, 확장 함수 등을 지원.
  • map, filter 등과 같은 함수형 API 활용 가능.
val numbers = listOf(1, 2, 3, 4, 5)
val doubled = numbers.map { it * 2 } // [2, 4, 6, 8, 10]

🔹 코루틴(Coroutines) 지원

  • 비동기 프로그래밍을 쉽게 할 수 있도록 설계됨. (suspend fun 등)

2. Kotlin의 주요 활용 분야

1️⃣ Android 개발

  • Android 공식 프로그래밍 언어(Java와 함께).
  • Android Jetpack 및 최신 API와의 완벽한 호환성.

2️⃣ 서버 개발 (Spring Boot + Kotlin)

  • Spring Boot에서도 Kotlin을 지원.
  • Java보다 코드가 간결하고 생산성이 높음.

3️⃣ 웹 개발

  • Kotlin/JS를 사용하여 JavaScript로 컴파일 가능.
  • 프론트엔드와 백엔드를 함께 개발할 수 있음.

4️⃣ 네이티브 개발 (Kotlin/Native)

  • iOS, macOS, Windows 등에서도 Kotlin을 사용할 수 있음.
  • Kotlin Multiplatform을 활용하면 하나의 코드베이스로 여러 플랫폼에서 동작하는 앱 개발 가능.

3. Kotlin 코드 예제

코틀린 기본 문법 예제

fun main() {
    val name: String = "Kotlin"
    println("Hello, $name!")  // 문자열 템플릿 사용 가능
}

변수 선언

val x = 10  // val: 변경 불가능한 변수 (Immutable)
var y = 20  // var: 변경 가능한 변수 (Mutable)
y = 30  // var이므로 변경 가능

함수 선언

fun add(a: Int, b: Int): Int {
    return a + b
}
fun add(a: Int, b: Int) = a + b  // 한 줄로 간결하게 표현 가능

조건문과 반복문

fun checkNumber(num: Int) {
    if (num > 0) {
        println("양수")
    } else {
        println("음수 또는 0")
    }
}
for (i in 1..5) {
    println(i)  // 1부터 5까지 출력
}

클래스 & 데이터 클래스

class Person(val name: String, var age: Int)

fun main() {
    val person = Person("Alice", 25)
    println("${person.name}${person.age}살입니다.")
}

// 데이터 클래스
data class User(val name: String, val age: Int)

fun main() {
    val user = User("Bob", 30)
    println(user) // User(name=Bob, age=30)
}

Null Safety 예제

fun main() {
    var name: String? = "Kotlin"
    println(name?.length) // Safe call operator (null이면 실행되지 않음)

    name = null
    println(name?.length) // null
}

4. Kotlin vs Java 비교

비교 항목KotlinJava
코드 길이짧고 간결함길고 보일러플레이트 코드 많음
Null Safety기본적으로 Null을 허용하지 않음NullPointerException 발생 가능
람다 표현식기본 지원Java 8부터 지원
데이터 클래스data class 제공직접 equals(), hashCode() 등을 구현해야 함
코루틴 (Coroutine)비동기 프로그래밍 지원Thread, Executor를 사용해야 함

5. Kotlin을 배워야 하는 이유

Java보다 간결하고 생산성이 높음
Android 개발의 공식 언어
서버, 웹, 네이티브 등 다양한 분야에서 활용 가능
Null 안전성을 보장하여 안정적인 코드 작성 가능
Java와 100% 호환되므로 쉽게 전환 가능

0개의 댓글