📘 Table of Contents Java JVM 정의 GC 동작 방식 Autoboxing / Unboxing abstract class & interface ArrayList vs LinkedList == 연산과 equals() 차이 static 키워드 동작 방식 Spring Spring 사용 이유 Dependency Injection Inversion of Control AOP 사용 이유 @Transactional Spring Security 작동 방식 JPA 영속성 컨텍스트 Entity 생명주기 N+1 Select 문제 SQL과 JPQL에서의 DISTINCT 차이점 Node.js 비동기 로직들의 순차 실행 방법 NestJS @Injectable 작동 원리 OOP OOP 핵심 4원칙 SOLID 원칙 Overloading과 Overriding의 차이 응집도와 결합도 Database Connection Pool Transaction 정의 트랜잭션 격리 수준 Index SQL 명령어의 실행 순서 관계형 데이터베이스 vs NoSQL Offset 기반 페이지네이션의 성능 문제 Redis 싱글 스레드로 만들어진 이유 Network OSI 7 Layer TCP & UDP 주소창에 URL을 입력하면 벌어지는 일들 Web HTTP와 HTTPS의 차이 HTTPS 작동 방식 Cookie & Session RESTful API Web Server & WAS JWT OAuth 동작 흐름 AWS Lambda의 장단점 Cold Start 해결 방법 Lambda에서 DB 커넥션 풀 관리 방법 DynamoDB LSI vs GSI System Design 로드밸런싱 캐싱 종류 캐싱 전략 캐시 스탬피드 현상 Rate Limiter MQ를 직접 설계할 때 폴링을 어떻게 구현할 것인가 MSA 2PC CDC Inbox / OutBox 패턴 Transactional Outbox 패턴 MDC Computer Science 멀티 프로세스와 멀티 스레드 동기와 비동기의 차이 유저 모드와 커널 모드 CI/CD Blue-Green 배포 전략 Canary 배포 전략 Git reset과 revert의 차이