백엔드/Java

🧠 자바 면접 질문 정리 및 답변 예시

hawon6691 2025. 10. 12. 16:43
728x90

1. 자바의 특징

질문: 자바의 주요 특징은 무엇인가요?
답변 예시:

  • 객체지향 언어: 캡슐화, 상속, 다형성을 지원합니다.
  • 플랫폼 독립성: JVM 위에서 실행되어 OS에 종속되지 않습니다.
  • 메모리 관리 자동화: 가비지 컬렉션을 통해 메모리를 자동으로 관리합니다.
  • 멀티스레드 지원: Thread 클래스를 통해 손쉽게 멀티스레드를 구현할 수 있습니다.

추가 Tip: “Write Once, Run Anywhere(WORA)” 개념을 강조하면 좋습니다.


2. JVM, JRE, JDK의 차이

질문: JVM, JRE, JDK의 차이는 무엇인가요?
답변 예시:

  • JVM (Java Virtual Machine): 자바 바이트코드를 실행하는 가상 머신입니다.
  • JRE (Java Runtime Environment): JVM + 실행에 필요한 라이브러리 모음입니다.
  • JDK (Java Development Kit): JRE + 컴파일러(javac) + 개발 도구입니다.

핵심 정리:
JDK > JRE > JVM
(즉, JDK 안에 JRE가, JRE 안에 JVM이 포함됩니다.)


3. 오버로딩과 오버라이딩의 차이

질문: 오버로딩과 오버라이딩의 차이는?
답변 예시:

  • 오버로딩 (Overloading): 같은 이름의 메서드를 매개변수 형태만 다르게 정의하는 것 (컴파일 시 결정).
  • 오버라이딩 (Overriding): 상속받은 메서드를 재정의하는 것 (런타임 시 결정).

예시 코드:

class A {
    void print(String msg) { System.out.println(msg); } // 오버로딩
}
class B extends A {
    @Override
    void print(String msg) { System.out.println("B: " + msg); } // 오버라이딩
}

4. equals()와 ==의 차이

질문: equals()와 ==의 차이는 무엇인가요?
답변 예시:

  • == : 참조(주소) 비교
  • equals() : 값(내용) 비교
    문자열 비교 시 equals()를 사용하는 이유는 같은 내용이라도 서로 다른 객체일 수 있기 때문입니다.
String a = new String("test");
String b = new String("test");
System.out.println(a == b); // false
System.out.println(a.equals(b)); // true

5. 컬렉션 프레임워크

질문: 자바 컬렉션 프레임워크의 주요 인터페이스는?
답변 예시:

  • List: 순서 유지, 중복 허용 (ArrayList, LinkedList)
  • Set: 중복 허용 안 함 (HashSet, TreeSet)
  • Map: 키-값 쌍 저장 (HashMap, TreeMap)

면접 팁: HashMap의 내부 구조(배열 + 연결 리스트 + 트리)까지 알고 있으면 가산점입니다.


6. 스레드(Thread)와 프로세스(Process)의 차이

질문: 스레드와 프로세스의 차이는 무엇인가요?
답변 예시:

  • 프로세스: 실행 중인 프로그램의 독립된 메모리 공간 단위
  • 스레드: 프로세스 내에서 실행되는 작은 단위, 자원 공유

추가 질문 대비:
Thread 클래스 상속 vs Runnable 인터페이스 구현의 차이도 알아두면 좋습니다.


7. 예외 처리(Exception Handling)

질문: 예외 처리 방식은 무엇이 있나요?
답변 예시:

  • try-catch-finally 블록 사용
  • throws 키워드로 호출자에게 예외 전달

Checked vs Unchecked 예외 구분

  • Checked: 컴파일 시점 확인 (IOException 등)
  • Unchecked: 런타임 시점 확인 (NullPointerException 등)

8. GC(Garbage Collection)의 원리

질문: 자바의 가비지 컬렉션은 어떻게 동작하나요?
답변 예시:

  • 사용되지 않는 객체(참조 해제된 객체)를 자동으로 메모리에서 제거합니다.
  • 대표 알고리즘: Mark and Sweep
  • 명시적 호출은 불가능하지만 System.gc()로 힌트를 줄 수 있습니다.

9. static 키워드의 의미

질문: static의 의미와 사용 예시는?
답변 예시:

  • 클래스 로드 시 메모리에 올라가며, 인스턴스 생성 없이 접근 가능
  • 주로 공통 변수, 유틸 메서드 정의에 사용
class MathUtil {
    static int add(int a, int b) { return a + b; }
}

10. 인터페이스 vs 추상 클래스

질문: 차이점은 무엇인가요?
답변 예시:

  • 인터페이스: 모든 메서드는 기본적으로 추상. 다중 구현 가능.
  • 추상 클래스: 일부 구현 포함 가능. 단일 상속만 가능.
  • JDK 8 이후 인터페이스에서도 default, static 메서드 사용 가능.

🔎 마무리

면접에서는 단순 정의보다 왜 그렇게 동작하는지를 묻는 경우가 많습니다.
즉, “원리 → 예시 → 적용 상황” 세 단계를 준비해야 합니다.

추천 학습 루트:

  1. 《이것이 자바다》 문법 정리
  2. Baeldung, GeeksforGeeks에서 심화 학습
  3. 실제 프로젝트 코드에 개념 적용
728x90