14 자주 묻는 Java 인터뷰 질문 및 답변 [2022]

꿈에 그리던 자바 개발자 직업을 위한 면접 준비를 하고 계신가요? 면접 성공을 돕기 위해 자바 면접 질문과 답변을 준비했습니다.

제임스 고슬링은 1982년에 객체 지향 프로그래밍 원칙을 준수하는 고급 언어인 자바에 투자했습니다. 자바는 가장 유명하고 널리 사용되는 프로그래밍 언어 중 하나입니다. 소프트웨어 개발을 처음 시작하는 사람부터 숙련된 개발자까지, 자바는 매력적인 커리어 선택지로 여겨집니다.

자바는 클래스, 상속, JSON, 반복자, 열거형, 휘발성 변수, 일시적 변수, 하이버네이트, HTTP 터널링 및 추상 클래스와 관련된 많은 개념을 포함합니다. C++ 및 C 프로그래밍 언어에서 구문을 차용했지만, 면접관이 던질 수 있는 주요 질문들을 파악하는 것이 중요합니다.

자바 개발자분들을 위해, 면접에서 자주 등장하는 핵심 질문과 답변을 아래에 정리했습니다.

자바는 순수한 객체 지향 언어인가요? 이유를 설명해 주세요.

아니요, 자바는 순수한 객체 지향 언어라고 할 수 없습니다. 자바는 객체가 아닌 short, byte, double, float, long, char, boolean과 같은 기본 데이터 유형을 지원합니다. 하지만 객체 지향의 많은 측면을 만족시키는 언어입니다.

자바가 플랫폼 독립적인 언어로서 인기가 높은 이유는 무엇인가요?

자바 프로그래밍 언어는 런타임 환경(JRE)을 갖춘 컴파일러 덕분에 특정 소프트웨어나 하드웨어에 종속되지 않습니다. 자바 컴파일러는 코드를 즉시 컴파일하고 플랫폼 독립적인 바이트 코드로 변환합니다. 이 때문에 여러 시스템에서 코드를 실행할 수 있어 매우 인기가 있습니다.

JDK, JRE, JVM의 기본적인 차이점을 설명해 주세요.

JDK(Java Development Kit) JRE(Java Runtime Environment) JVM(Java Virtual Machine)
설명 자바 프로그램을 문서화, 컴파일, 패키징하는 데 필요한 도구 모음 자바 바이트 코드를 실행하는 데 사용되는 환경 자바 바이트 코드를 실행하기 위한 추상적인 기계
특징 개발 도구 및 JRE를 포함 JVM 구현을 위한 핵심 요소 실행, 검증, 로드 등을 수행

JDK는 자바 프로그램을 개발하는 데 필요한 모든 도구를 제공합니다. JRE는 컴파일된 자바 바이트 코드를 실행하는 데 필요한 환경을 제공합니다. JVM은 자바 바이트 코드를 실행하기 위한 추상 기계입니다. JDK는 개발 도구와 함께 JRE를 포함하고 있어, JVM 구현에 쉽게 접근할 수 있게 합니다. JVM은 여러 자바 플랫폼(Standard, Micro, Enterprise Edition)을 구현하며, 코드 실행, 검증 및 로드를 수행합니다.

자바 클래스의 접근 지정자에 대해 설명해 주세요.

클래스 이름 앞에 사용하는 키워드는 자바에서 접근 지정자입니다. 접근 지정자는 다양한 범위의 접근을 나타냅니다.

  • protected: 동일한 클래스, 동일한 패키지(하위 클래스 또는 해당 하위 클래스가 속하는 위치)의 필드 또는 메서드에 접근 가능, 다른 클래스에서는 접근 불가
  • private: 동일한 클래스의 필드 또는 메서드에만 접근 가능
  • public: 코드 전체에서 메서드, 클래스, 필드에 자유롭게 접근 가능
  • default: 기본 패키지 내부에서 클래스, 필드, 메서드에 접근 가능, 외부에서는 접근 불가

지역 변수와 인스턴스 변수의 의미는 무엇인가요?

지역 변수: 생성자, 함수, 또는 블록 내부에서만 사용할 수 있는 변수입니다. 블록 범위 규칙이 적용되어, 다른 클래스 메서드는 해당 메서드 내부에 선언된 지역 변수에 접근하거나 알 수 없습니다.

인스턴스 변수: 클래스 내부 및 외부의 모든 메서드에서 접근할 수 있는 변수입니다. 각 객체의 속성을 나타내며, 인스턴스 변수를 수정하면 해당 인스턴스에만 영향을 미치고 다른 인스턴스에는 영향을 주지 않습니다.

JIT 컴파일러란 무엇인가요?

JIT(Just In Time) 컴파일러는 바이트 코드를 컴파일하여 애플리케이션의 성능을 향상시키는 데 사용됩니다. 이는 시간 소모를 줄이고, JVM에서 CPU 명령 세트로 코드를 변환하는 데 도움을 줍니다.

싱글톤 클래스를 한 줄로 설명해 주세요.

싱글톤 클래스는 특정 시점에 단 하나의 인스턴스(객체)만 생성하도록 제한하는 클래스 유형입니다.

객체 복제란 무엇인가요?

객체 복제는 자바 객체의 복사본을 만드는 것을 의미합니다. 이를 통해 개발자는 필요에 따라 객체 복사본을 사용할 수 있습니다. 자바 개발자는 clone() 메서드를 사용하여 java.lang.Cloneable 인터페이스를 쉽게 구현할 수 있습니다.

생성자를 설명해 주세요.

생성자는 클래스와 이름이 같은 코드 블록으로, 객체를 초기화하는 데 사용됩니다. 객체 생성 시 자동으로 호출되며, 반환 유형이 없습니다. 두 가지 주요 생성자 유형이 있습니다.

  • 매개변수화된 생성자: 인수를 받아들여, 제공된 값으로 인스턴스 변수를 초기화하는 생성자입니다.
  • 기본 생성자: 인수를 받지 않으며, 인스턴스 변수를 초기화하고, 다른 생성자가 정의되어 있지 않은 경우 자동으로 생성되는 생성자입니다.

자바에서 ==equals()의 차이점은 무엇인가요?

등호 연산자(==)는 자바 프로그래밍 언어에서 객체와 기본 요소를 비교하는 이항 연산자입니다. Object 클래스는 public boolean equals(Object o) 메서드를 제공합니다. equals()는 두 객체의 동등성을 확인하고, 비즈니스 로직에 따라 정의된 Object 클래스의 메서드를 사용합니다.

TreeSetHashSet의 차이점을 설명해 주세요.

TreeSet HashSet
정렬 요소가 정렬된 순서로 유지됨 요소가 정렬되지 않은 순서로 유지됨
이종 객체 이종 객체 허용 이종 객체 허용하지 않음
구현 데이터 저장을 위해 트리를 사용하여 SortedSet 인터페이스 구현 해시 테이블을 통해 구현

이중 중괄호 초기화에 대해 설명해 주세요.

자바에서 이중 중괄호 초기화는 두 개의 독립적인 프로세스를 결합한 방식입니다. 두 개의 중괄호를 사용하여 익명 내부 클래스와 초기화 블록을 생성합니다. this 포인터를 통해 내부 클래스가 단일 명령문에서 초기화와 생성을 위해 외부 클래스를 참조할 수 있습니다.

자바 문자열 풀을 정의해 주세요.

자바 문자열 풀은 힙 메모리에 있는 문자열 객체들의 컬렉션입니다. 새 문자열 객체가 생성될 때, 문자열 풀은 동일한 문자열 객체가 있는지 확인하고, 있다면 해당 참조를 반환합니다. 그렇지 않으면 새 객체를 만들어 반환합니다.

자바에서 컬렉션 클래스는 무엇을 의미하나요?

컬렉션은 객체 그룹을 조작하고 정렬하는 데 사용되는 프레임워크를 나타내는 아키텍처입니다. 컬렉션은 메서드, 클래스, 인터페이스 등을 포함하여 삭제, 검색, 조작, 정렬, 편집, 삽입과 같은 작업을 수행하는 데 도움을 줍니다.

마지막으로

자바는 인상적인 표준 라이브러리와 강력한 도구를 갖춘 가장 인기 있는 고급 프로그래밍 언어 중 하나입니다. 동시성 기반 문제와 같은 여러 문제에 대한 스레딩 지원을 제공하며, 내장된 기능과 제품에 안정성을 결합한 사용하기 쉬운 구문을 제공합니다.

자바를 마스터하려면 온라인 자바 강의를 수강하는 것을 추천합니다.