최신 글
-
기술면접
Kotlin에서 Null 처리 방법
1. ? Nullable 가능하게 만듦 val a: String? = null val b: String = "hello world" //val c: String = null // 에러 : null을 허용하지 않는 값에 null을 대입할 수 없음 2. ?. null이 아니면 값 반환하고 그렇지 않으면 null 리턴 val a: String? = null val b: String = "hello world" println(b?.length) // 10 println(a?.length) // null 리턴 3. ?: 왼쪽에 있는 표현식이 null 이 아니면 반환, 그렇지 않으면 오른쪽 반환 엘비스 연산자는 주로 nullable한 타입에 사용 val length = a?.length ?: 0 // 0 4. as..
-
기술면접
Java와 Kotlin 차이
1. JAVA 객체 지향 지원 할당되는 값으로부터 컴파일러가 타입을 추론 (Java 10 이후 가능) Null 할당 불가 (런타임에 Null point 예외 발생) val 지원 X 2. Kotlin 객체 지향 + 함수형 모두 지원 함수형 : 람다, 고차 함수 (filter, forEach) 할당되는 값으로부터 컴파일러가 타입을 추론 Null 할당이 가능한 타입 미리 선언 가능 Null Point 예외를 컴파일 시점에서 미리 방지 (Nullable이 아닌 변수에 null 넣으면 컴파일 에러 발생) 기본형 타입마저 클래스로 존재 (Nullable 위해) var nullableInt: Int? = null // Nullable Int 변수 var nonNullableInt: Int = 42 // Non-nul..
-
기술면접
비동기 프로그래밍
비동기 프로그래밍이란 코드가 다 완료되지 않아도 다음 코드 라인을 실행할 수 있는 프로그래밍입니다. 동기 프로그래밍에 비해 성능 향상과 자원이 최적화되며 유연성과 확장성을 가지고 있어 복잡한 작업을 효율적으로 처리할 수 있게 해줍니다. 1. 비동기 프로그래밍 복잡한 작업은 백그라운드에서 실행, 완료되면 콜백 처리 쓰레드, 코루틴 2. 장점 동기 프로그래밍에 비해 성능 향상(작업 시간 단축) 자원 최적화 (네트워크 요청 받는 동안 cpu 다른 계산) 유연성과 확장성 (모듈화 및 재사용 용이) 3. 쓰레드, 코루틴 1) 쓰레드 프로세스 : 프로그램이 메모리에 올라가서 실행 된 것 (프로그램 더블 클릭) 프로세스보다 더 작은 단위 생성되면서 수행 할 때 각 독립된 메모리 영역인 STACK 가짐 2) 쓰레드 예..
-
기술면접
예외
사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류 1. 일반 예외(Exception) → Checked Exception 컴파일 시점에서 예외을 catch하는지 검사 → try/catch 하여 해결 2. 실행 예외(Runtime Exception) -> Unchecked Exception 컴파일 시점에서 예외을 catch하는지 검사X, 예외 발생할 것인지 여부 판단 X 런타임 시에 발생하는 예외 3. 실행 예외 종류 NullPointerException 해당 객체가 null인 상태에서의 접근을 했을 때 발생 fun main() { var nullableString: String? = null // 아래 줄에서 nullpointer 예외 발생 가능성 있음 val length:..
-
기술면접
Kotlin 정적 타입 언어
모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증한다. 1. 정적 언어 정적 언어라는 것은 위에서 언급한 '타입' 즉 자료형을 컴파일 시에 결정 컴파일 시에 자료형에 맞지 않은 값이 들어있으면 컴파일 에러 속도와 타입 안정성 높음 var k : Int = 4 var m : Int = 3 var score : IntArray = intArrayOf(4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2) 2. 동적 언어 컴파일 시 자료형을 정하는 것이 아니고 실행 시에 결정 타입 없이 변수만 선언하여 값을 지정 많은 선택의 여지, but type error 있을 수 있음 num1 = 10; name = "Evan..