- JVM의 구조와 동작 원리는? → 자바 바이트코드를 OS에 맞게 실행하면서 클래스 로딩, 메모리 관리, 코드 실행, GC를 담당하는 가상 머신입니다.
- GC란? → 더 이상 참조되지 않는 객체를 찾아 자동으로 메모리를 회수하는 JVM의 메모리 관리 기능입니다.
==와 equals()의 차이는? → ==는 참조값을 비교하고, equals()는 객체의 논리적 동등성을 비교합니다.
- String, StringBuilder, StringBuffer 차이는? → String은 불변이고, StringBuilder는 빠른 가변 문자열, StringBuffer는 동기화를 지원하는 가변 문자열입니다.
- 직렬화란? → 객체를 저장이나 전송 가능한 바이트 스트림으로 변환하고 다시 객체로 복원하는 과정입니다.
- OOP의 4대 특성은? → 캡슐화, 상속, 다형성, 추상화를 통해 변경에 유연하고 재사용 가능한 객체 구조를 만드는 것입니다. 붙여넣은 텍스트(1)
- 인터페이스와 추상 클래스의 차이는? → 인터페이스는 기능 계약에, 추상 클래스는 공통 상태와 구현을 공유하는 데 사용합니다.
- SOLID란? → 단일 책임, 개방-폐쇄, 리스코프 치환, 인터페이스 분리, 의존성 역전을 통해 유지보수성과 확장성을 높이는 설계 원칙입니다.
- ArrayList와 LinkedList 차이는? → ArrayList는 조회에 유리하고, LinkedList는 연결 구조를 이용해 특정 위치를 확보한 뒤 삽입·삭제할 때 유리합니다.
- HashMap의 동작 원리는? → key의 hashCode로 버킷을 찾고, 충돌 시 equals를 이용해 동일 키를 판별하여 데이터를 저장합니다.
- Set이 중복을 막는 원리는? → HashSet 기준으로 hashCode와 equals를 이용해 동일 객체 여부를 판단하여 중복 저장을 막습니다. 붙여넣은 텍스트(1)
- synchronized와 volatile 차이는? → synchronized는 가시성과 원자성을 보장하고, volatile은 변수의 가시성만 보장합니다.
- Callable과 Runnable 차이는? → Runnable은 반환값이 없고, Callable은 결과 반환과 checked exception 처리가 가능합니다.
- Deadlock이란? → 여러 스레드가 서로 상대방의 락을 기다리며 영원히 진행하지 못하는 상태입니다.
- Stream API란? → 컬렉션 데이터를 선언형 파이프라인 방식으로 처리할 수 있게 해주는 API입니다.
- Optional이란? → null 가능성을 명시적으로 표현하고 안전하게 처리하기 위한 컨테이너 클래스입니다.
- Lambda와 Functional Interface란? → 람다는 함수를 간결하게 표현하는 문법이고, 함수형 인터페이스는 추상 메서드가 하나인 인터페이스입니다. 붙여넣은 텍스트(1) 붙여넣은 텍스트(1)
- IoC와 DI란? → IoC는 객체 관리 권한을 Spring에 넘기는 것이고, DI는 필요한 의존 객체를 외부에서 주입받는 방식입니다.
- Spring AOP란? → 로깅, 트랜잭션, 보안 같은 공통 기능을 핵심 비즈니스 로직과 분리하는 기법입니다.
@Transactional은 어떻게 동작하나요? → Spring AOP 프록시가 메서드 호출 전후로 트랜잭션 시작, 커밋, 롤백을 처리합니다.