Database & JPA
인덱스(Index)의 자료구조로 B-Tree를 사용하는 이유는 무엇인가요? 해시 테이블보다 어떤 장점이 있나요?
클러스터형 인덱스(Clustered Index)와 비클러스터형 인덱스(Non-clustered Index)의 차이점을 설명해주세요.
쿼리 실행 계획(Query Execution Plan)이란 무엇이며, 옵티마이저가 인덱스를 사용하지 않는 경우는 어떤 경우일까요?
트랜잭션의 4가지 격리 수준(Isolation Level)에 대해 설명하고, 각 수준에서 발생할 수 있는 문제점(Dirty Read, Phantom Read 등)을 설명해주세요.
JPA의 N+1 문제란 무엇이며, 이를 해결하기 위한 3가지 방법(Fetch Join, @EntityGraph, Batch Size)을 설명해주세요.
데이터베이스 정규화(Normalization)의 목적은 무엇이며, 제1, 제2, 제3 정규형에 대해 설명해주세요.
반정규화(Denormalization)는 언제 필요한가요? 정규화와의 트레이드오프 관계를 설명해주세요.
DB 복제(Replication)의 목적은 무엇이며, Master-Slave 구조에서 복제 지연(Replication Lag)이 발생했을 때 어떤 문제가 생길 수 있나요?
JPA의 즉시 로딩(EAGER)과 지연 로딩(LAZY)의 차이점은 무엇이며, 왜 지연 로딩 사용이 권장되나요?
JPA의 양방향 연관관계에서 '연관관계의 주인'은 왜 필요한가요?
SELECT * 사용을 지양해야 하는 이유는 무엇인가요? (성능, 네트워크, 애플리케이션 관점에서)
UNION과 UNION ALL의 차이점은 무엇인가요?
TRUNCATE, DELETE, DROP 명령어의 차이점을 설명해주세요.
NoSQL이 관계형 데이터베이스(RDBMS)에 비해 갖는 장단점은 무엇인가요?
Redis와 같은 In-Memory DB가 일반적인 디스크 기반 DB보다 빠른 이유는 무엇인가요?
Redis의 자료구조(String, List, Set, Sorted Set, Hash)에 대해 설명하고, 각각 어떤 용도로 사용하기에 적합한가요?
캐시(Cache) 전략 중 Look Aside, Write Through, Write Back 방식의 차이점을 설명해주세요.
JPA의 save() 메서드는 INSERT 쿼리를 즉시 실행하나요? 그렇지 않다면 언제 실행되나요?
데이터베이스 커넥션 풀(DBCP)을 사용하는 이유는 무엇인가요?
exists와 count 쿼리 중 어느 것이 더 효율적이며, 그 이유는 무엇인가요?
인덱스를 설계할 때 고려해야 할 사항은 무엇인가요? (예: 카디널리티, 조회/수정 비율, 복합 인덱스 순서)
Covering Index란 무엇이며, 쿼리 성능에 어떤 이점을 주나요?
MVCC(Multi-Version Concurrency Control)란 무엇이며, 데이터베이스가 어떻게 동시성을 처리하는지 설명해주세요.
데이터베이스 샤딩(Sharding)과 파티셔닝(Partitioning)의 차이점은 무엇인가요?
JPA의 @OneToMany 관계에서 orphanRemoval = true 옵션과 CascadeType.REMOVE의 차이점은 무엇인가요?
JPA의 프록시(Proxy) 객체란 무엇이며, == 비교 대신 instanceof를 사용해야 하는 이유는 무엇인가요?
JPA에서 값 타입(Embeddable Class)을 사용하는 이유는 무엇이며, 값 타입 컬렉션의 단점은 무엇인가요?
데이터베이스 락(Lock)에는 어떤 종류가 있으며(공유 락, 배타 락), 비관적 락(Pessimistic Lock)과 낙관적 락(Optimistic Lock)의 차이점을 설명해주세요.
Redis의 pub/sub 기능은 어떻게 동작하며, Kafka와 같은 전문 메시지 큐와 비교했을 때 어떤 차이점이 있나요?
Redis의 트랜잭션(MULTI/EXEC)은 RDBMS의 트랜잭션과 어떻게 다른가요? 롤백(Rollback)을 지원하나요?
대용량 테이블에서 DELETE 쿼리를 직접 실행하는 대신 다른 방식을 사용한다면 어떤 방법이 있을까요?
EXPLAIN 결과에서 type 컬럼이 의미하는 바는 무엇이며, ALL, index, range, ref, eq_ref, const 순으로 성능을 비교 설명해주세요.
VARCHAR와 CHAR 타입의 차이점은 무엇이며, 어떤 경우에 각각을 사용하는 것이 좋을까요?
TIMESTAMP와 DATETIME 타입의 차이점은 무엇인가요?
Collation이란 무엇이며, 왜 중요한가요?
JPA의 Auditing 기능(@CreatedDate, @LastModifiedDate)을 활성화하는 방법에 대해 설명해주세요.
JPA의 @Formula 어노테이션은 어떤 경우에 유용하게 사용할 수 있나요?
JDBC(Java Database Connectivity)의 동작 원리에 대해 설명해주세요.
데이터베이스 이중화(Replication) 구성에서, Master DB에 장애가 발생했을 때 어떻게 대처해야 할까요? (Failover)
HAVING 절과 WHERE 절의 차이점은 무엇인가요?
JOIN의 종류(Inner, Left Outer, Right Outer, Full Outer)에 대해 설명하고, 언제 사용해야 하는지 설명해주세요.
JPA의 영속성 컨텍스트(Persistence Context)가 제공하는 4가지 이점(1차 캐시, 동일성 보장, 쓰기 지연, 변경 감지)에 대해 설명해주세요.
JPA에서 @ManyToOne 관계의 기본 Fetch 전략이 EAGER인 이유는 무엇이라고 생각하시나요?
AUTO_INCREMENT와 SEQUENCE의 차이점은 무엇인가요?
데이터베이스 뷰(View)를 사용하는 이유와 장단점에 대해 설명해주세요.
스토어드 프로시저(Stored Procedure)의 장단점에 대해 설명해주세요.
JPA에서 상속 관계 매핑 전략 3가지(조인, 단일 테이블, 테이블별 클래스)의 장단점을 비교 설명해주세요.
BETWEEN 연산자와 IN 연산자 중 인덱스를 더 효율적으로 활용할 수 있는 것은 무엇이며, 그 이유는 무엇인가요?
GROUP BY의 동작 원리에 대해 설명해주세요.
Last updated