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 메서드 사용 가능.
🔎 마무리
면접에서는 단순 정의보다 왜 그렇게 동작하는지를 묻는 경우가 많습니다.
즉, “원리 → 예시 → 적용 상황” 세 단계를 준비해야 합니다.
추천 학습 루트:
- 《이것이 자바다》 문법 정리
- Baeldung, GeeksforGeeks에서 심화 학습
- 실제 프로젝트 코드에 개념 적용
728x90
'백엔드 > Java' 카테고리의 다른 글
동시성(Concurrency)과의 싸움: 자바 멀티스레딩의 이해와 동기화 기법 (0) | 2025.10.11 |
---|---|
☕️ 자바 개발자의 필수 지식: JVM의 작동 원리 깊이 이해하기 - 메모리 구조와 가비지 컬렉션(GC) (0) | 2025.10.09 |
🔥 자바 8 이후 필수 문법: 람다(Lambda)와 스트림(Stream) API 활용법 (0) | 2025.10.08 |
🌟 예외(Exception) 처리, 깔끔하게 하는 법: try-catch-finally 실전 노하우 (0) | 2025.10.07 |
자바 컬렉션 프레임워크 뽀개기: List, Set, Map 언제 사용해야 할까? (0) | 2025.10.06 |