[기술 면접] 기술 면접 대비 1-5

김동욱·2023년 9월 8일
0

기술 면접

목록 보기
1/4

커리커리에서 봤던 기술 면접 대비를 작성해보려고 합니다.

1. index란?

무분별한 자료들을 효율적으로 검색하기 위해서 검색 기준이 되는 값을 미리 정렬해둔 데이터 구조를 만들어 놓는 것. 주로 배열 형태로 만들어짐


2. final 키워드 사용

final은 한 번 할당하면 그 값을 변경할 수 없도록 불변성을 보장해주는 역할이며 변수, 메서드, 클래스 등에 사용됩니다.

변수에서는 한 번 초기화 하면 재할당을 할 수 없으며 그래서 처음에 먼저 초기화를 해야합니다. 마찬가지로 매개변수에 final을 사용하면 메소드나 생성자에서 값을 변경할 수 없습니다.

메서드에서는 서브 클래스에서 오버라이딩이 불가능하며

클래스에서는 다른 클래스에서 상속이 불가능합니다.

스프링 부트에서 의존성 주입을 위해 final을 붙이는 이유도 의존성 주입이 일어난 후에는 다른 객체로 변경되지 않도록 하기 위함입니다.

final을 통해 불변성을 유지하고 코드의 안정성을 지킵니다.


3. JDK와 JRE의 차이점

JDK ( java development kit)

JRE ( Java Runtime Environment)

jdk는 java로 소프트웨어를 개발하기 위한 도구 모음이며 JRE또한 jdk에 포함되어있습니다. jre에는 자바 실행 환경으로 실행시키는데 필요한 라이브러리 jvm이 있습니다.

IDE와 jdk를 연동해서 소스 코드를 작성하고

jdk의 컴파일러 javac, 인터프린터 java, 패키징 도구 jar 를 통해서 개발을 진행합니다.

컴파일러 : 자바 소스코드(.java )를 바이트 코드 (.class)로 컴파일

인터프리터 : 바이트 코드를 해석하고 실행 (jvm을 실행시키기 위해 )

jar : 클래스 파일을 압축한 아카이프 파일(.jar) 생성하고 관리

이외에도 javap(역 어셈블러, 컴파일된 파일을 소스로 변환)

JRE는 JVM을 통해 바이트 코드를 해석하고 실행하며 JIT 컴파일러를 컴파일 후 사용할 수 있습니다.

jar로 패키징된 파일은 JVM을 통해 자체적으로 실행할 수 있으며 이 jvm을 제공하는 게 jre입니다.

JVM은 실행하고자 하는 운영체제에서 실행 가능한 기계어로 변환해줍니다.


4. ==와 equals의 차이점

equals 는 값 자체를 비교하고 ==는 주소값을 비교합니다.

그래서 A라는 같은 값을 저장한 객체끼리 비교하더라도
매번 새로운 객체를 생성해서 A를 저장하게 된다면 ==로 비교했을 때 false가 나오게 됩니다. 하지만 값 A는 같기 때문에 equals는 true가 나오게 됩니다.

하지만 원시타입 (기본 데이터 타입)의 경우에는 객체가 아니라 실제 값을 저장하기 때문에 ==를 사용하여 값을 비교할 수 있습니다.

equals의 경우 객체를 비교하기 때문에 null을 비교하는 경우 nullPointerException이 발생하게 됩니다.
그래서 objects.equals( str1, str2)처럼 null을 포함해서 비교해주는 objects 를 사용하는 등 null을 처리한 방식으로 비교해야 합니다 .


5. 두 객체가 동일한 hashcode를 가지면 Equals()가 참이어야합니다, 그렇죠?

두 객체가 같으면 두 해시코드는 같지만

두 객체가 동일한 해시코드를 가진다고 해서 equals가 참은 아닙니다.

해시 함수는 많은 수의 입력을 작은 수의 고유한 출력 값으로 값을 매핑합니다.

그렇기 때문에 많은 입력이 발생하면 서로 다른 입력값이 같은 해시코드를 가지게 되는 경우가 생겨서 해시충돌이 발생합니다.

해시충돌을 제어하는 방식에는 체이닝 방식과 개방 주소법이 있습니다.

profile
안녕하세요. 공부해요

0개의 댓글