| 주제 |
개념 / 키워드 |
헷갈리기 쉬운 개념 |
차이·핵심 포인트 |
| JVM 메모리 구조 |
Method / Heap / Stack / Native / PC |
스택·힙 구분 |
스택: 함수 호출, 지역변수 / 힙: new객체 저장 / 메서드영역: static·클래스정보 |
| GC (Garbage Collection) |
Young(Eden↔Survivor), Old |
마이너 vs 메이저 GC |
Young은 자주, Mark-Copy / Old는 드물게, Mark-Sweep-Compact |
| String vs Builder/Buffer |
불변/가변 |
thread-safe 여부 |
String 불변(결과적으로 안전), Buffer 동기화O, Builder 단일스레드 빠름 |
| 컴포지션 vs 상속 |
has-a / is-a |
코드 재사용 방식 |
컴포지션: 유연성↑ / 상속: 재사용↑, 결합도↑ |
| 오버로딩 vs 오버라이딩 |
동일이름 다른형태 / 상속관계 재정의 |
매개변수/리턴타입 |
오버로딩: 파라미터 다름 / 오버라이딩: 시그니처 동일, 구현만 다름 |
| Checked vs Unchecked Exception |
컴파일/런타임 |
예외 처리 강제 여부 |
Checked: 반드시 try-catch / Unchecked: 선택적 |
| Servlet vs DispatcherServlet |
웹 요청 처리 핵심 |
Spring MVC 진입점 |
Servlet: 기본 HTTP 처리 / DispatcherServlet: Controller로 분배 |
| IoC / DI |
제어권 역전 / 의존성 주입 |
싱글톤과 혼동 |
IoC는 프레임워크가 제어, DI는 외부 객체 주입 |
| AOP |
공통관심사 분리 |
@Transactional 혼동 |
트랜잭션, 로깅 등 횡단 관심사 처리 |
| 트랜잭션 |
All or Nothing |
ACID 개념 |
Atomicity(전부/전무), Consistency, Isolation, Durability |
| 쿠키 vs 세션 |
클라이언트 / 서버 |
JWT와 혼동 |
쿠키는 클라 저장, 세션은 서버 저장 (보안·부담 트레이드오프) |
| Lazy vs Eager Loading (JPA) |
지연 / 즉시 로딩 |
Batch Fetch와 혼동 |
Lazy: 참조 시점 쿼리 / Eager: 즉시 JOIN |
| N+1 문제 |
연관 쿼리 반복 |
fetch join |
1:N 관계 조회 시 추가 쿼리 발생 → fetch join으로 해결 |
| Redis vs DB Cache |
인메모리 / 영속 |
영속성 컨텍스트 |
Redis는 외부 캐시, 속도 중심 / 영속성컨텍스트는 JPA 내부 캐시 |
| DB 인덱스 |
B-tree 구조 |
PK와 혼동 |
WHERE·JOIN 자주 쓰는 컬럼에 설정, 읽기↑ 쓰기↓ |
| JS Hoisting |
선언이 위로 끌려감 |
TDZ(Temporal Dead Zone) |
var는 선언+초기화, let/const는 선언만 호이스팅됨 |
| Lexical Scope |
선언위치 기준 스코프 |
this 바인딩 |
함수가 ‘어디서 선언됐는가’로 스코프 결정 |
| this 바인딩 |
호출한 주체 |
화살표함수 |
기본함수: 호출자 기준 / 화살표함수: 선언위치 기준(렉시컬 this) |
| Event Loop |
콜스택 + 큐 |
멀티스레드 착각 |
JS는 단일스레드, 비동기 처리를 큐로 관리 |
| 브라우저 렌더링 과정 |
파싱→DOM→CSSOM→Render Tree→Repaint |
SSR, CSR 혼동 |
DOM과 CSSOM 결합 후 그려짐, JS 실행이 블로킹됨 |
| HTTP vs HTTPS |
암호화 여부 |
REST와 혼동 |
HTTPS는 TLS로 암호화, REST는 설계 스타일 |
| REST API |
자원 중심 설계 |
단순한 HTTP 요청 |
자원(URL), 행위(Method), 표현(Body)의 조합 |
| React 렌더링 |
Virtual DOM diff |
CSR/SSR 혼동 |
변경된 부분만 비교(diff) 후 최소 렌더링 수행 |