기술 면접 질문-Java

young.h·2022년 8월 14일
0

CS

목록 보기
3/6
post-thumbnail

Java

기술 면접 때 나왔던 질문

String vs String Buffer vs String Builder?

String은 불변 객체이며 버퍼와 빌더는 가변 객체입니다. Buffer는 동기화를 지원하여 스레드 세이프한 장점이 있으며며 Builder는 동기화를 지원하지 않는 대신 단일 스레드일 경우 버퍼보다 성능이 좋다는 장점이 있습니다.

Call By Value와 Call By Reference 차이?

Call By Value는 인자로 받은 변수의 값을 복사하여 처리하는 방식으로 Call By Value에 의해 넘어온 값을 증가시켜도 원래의 값이 보존됩니다. 값을 복사하여 넘기기 때문에 메모리 사용량이 늘어나는 특징이 있습니다. Call By Reference는 인자로 받은 값의 주소를 참조하여 직접 값에 영향을 주는 방식입니다. 값을 복사하지 않고 직접 참조하기 때문에 속도가 빠르지만 원래의 값에 영향을 주는 위험이 존재합니다. 자바는 콜바이 벨류입니다.

어노테이션이 뭔가요?
GC가 무엇인지?

JVM에서 동작하는 가비지 컬렉터로 더이상 참조하지 않는 객체의 메모리를
해제하는 역할을 합니다. 가비지 컬렉터로 인해 자바 개발자는 더이상 메모리를 생각하지 않고 개발할 수 있는 장점이 있습니다.

추상 클래스와 인터페이스를 설명해 주세요.

추상 클래스와 인터페이스의 공통점은
차이점은 추상 클래스는 상속하여 기능을 확장하는데에 목적이 있고 인터페이스는 상속하여 같은 동작을 보장하는데에 목적이 있습니다.

접근제어자

public은  어떤 클래스의 객체에서든 접근가능하며
private은  이 클래스에서 생성된 객체들만 접근가능합니다.
protected는  이 클래스와 동일 패키지에 있거나 상속관계에 있는 하위 클래스의 객체들만 접근가능며
마지막으로
package는  동일 패키지에 있는 클래스와 객체들만 접근 가능합니다.

오버로딩과 오버라이딩

오버로딩은 같은 메소드의 이름을 사용하지만 매개변수의 타입이나 개수가 다른 것이고
오버 라이딩은 상위 클래스가 가지고 있는 메소드를 하위클래스에서 같은 이름과 용례로 재정의하여 사용하는 것입니다.

제네릭이란

자바의 제네릭은 타입 제거라는 개념의 근거하다. 이 기법은 소스 코드를 JVM이 인식하는 바이트 코드로 변환할 때 인자로 주어진 타입을 제거하는 기술이다.

Java 8의 등장 이유?

기술 면접 때 XXXX

람다 개념

익명 함수를 지칭하는 용어어로 함수를 파라미터로 전달할 수 있습니다.
코드가 간결해지고 멀티 쓰레드를 활용하여 병렬처리를 사용할 수 있는 장점이 있지만
오히려 가독성을 떨어트릴 수 있다는 단점이 있습니다.

Stream API 개념

스트림은 데이터의 흐름을 가공하여 웒스트림 생성, 중간연산, 최종연산 세가지 구성으로 되어있으며 원본 데이터를 변경하지 않는 특징이 있습니다.

static
JVM 실행 순서

JVM 가상머신이 자바 컴파일러가 자바 코드를 바이트 코드로 변환화여 클래스 파일이 만들어 집니다. 그럼 클래스 로더가 켬파일 된 자바 바이트 코드를 런타임 데이터 영역에 로드합니다. 마지막으로 실행 엔진이 바이트 코드를 실행합니다.

final, finally, finalize의 차이는?

final 은 변수나 메서드 또는 클래스가 변경 불가능 하도록 만든다.
finally 키워드는 try/catch 블록이 종료될 때 항상 실행된 코드 블록을 정의하기 위해 사요된다.
finalize() 메서드는 가비지 컬렉터가 더 이상의 참조가 존재하지 않는 객체를 메모리에서 삭제하겠다고 결정하는 순간 호출된다.

객체 리플렉션
자바 클래스와 객체에 대한 정보를 프로그램 내에서 동적으로 알아낼 수 있도록 하는 기능입니다.
프로그램이 어떻게 동작하는지 실행 시간에 관측하고 조정할 수 있고, 메서드나 생성자, 필드에 직접 접근할 수 있기 때문에 프로그램을 디버깅하거나 테스트할 때 유용합니다.

0개의 댓글