2025/09/02 5

[Interview Question] TCP와 UDP의 차이를 설명해보세요.

애플리케이션에서 데이터를 생성한 후 TCP 소켓을 통해 TCP 계층에 데이터를 넘깁니다. 그 후 TCP는 데이터를 세그먼트 단위로 쪼개서 헤더를 붙인 다음 IP계층에 넘깁니다. 또 다른 컴퓨터의 IP 계층이 세그먼트를 받으면 TCP로 넘기고 그 후 순서대로 TCP는 재조립, 손실된 데이터는 재전송 요청, 중복을 제거합니다. 그 후 복구한 데이터를 해당 포트의 애플리케이션에 넘깁니다. UDP의 경우 애플리케이션에서 데이터를 UDP 소켓을 통해 UDP 계층에 전달을 받게되면 UDP는 메시지에 간단한 헤더(길이, 포트)정도만 붙여 데이터그램을 만들어 IP계층으로 넘깁니다. 또 다른 컴퓨터의 IP 계층이 그 데이터그램을 받게되면 UDP로 넘기고 헤더에 써있는 포트로 그대로 애플리케이션으로 전송하게 됩니다. 만약..

Interview Question 2025.09.02

[Interview Question] N+1 문제란 무엇이며, 어떻게 해결할 수 있나요?

N+1 문제는 JPA같은 ORM에서 자주 발생하는 문제입니다. 한 번의 쿼리를 실행해서 엔티티 리스트를 가져온 다음 그 엔티티와 연관된 데이터를 조회하려고 접근할 때 엔티티 개수만큼 추가로 쿼리가 실행되는 문제입니다. 원래는 쿼리 한 번이면 충분한 작업이 N+1번의 쿼리로 나누어 실행되어 불필요한 DB 부하가 발생하는 것이 N+1 문제입니다. ORM은 성능 이슈로 인해 기본원칙이 지연 로딩(lazy loading)입니다. 즉시 연관 엔티티를 가지고 오지 않고, 실제로 접근하는 시점에 쿼리를 날려 데이터를 조회합니다. 데이터 수가 많아질수록 조회 횟수가 늘어나므로 네트워크 왕복 비용, DB 부하, 메모리 사용량 등이 커져서 성능 병목이 발생합니다. N+1 문제 해결방법은JPQL에서 JOIN FETCH를 사..

Interview Question 2025.09.02

[Interview Question] 트랜잭션의 ACID 특성을 설명해보세요.

데이터베이스에서 하나의 논리적 작업 단위를 트랜잭션이라고 합니다.이 트랜잭션이 안전하게 동작하기 위해 보장해야 하는 성질을 ACID라고 합니다. 1. Atomicity(원자성)트랜잭션은 모두 수행되거나 전혀 수행되지 않아야 합니다. 중간단계에서 오류가 발생하면 지금까지 수행된 작업들이 모두 취소(ROLLBACK)되고 이전 상태로 되돌아 가야 합니다. 2. Consistency(일관성)트랜잭션 실행 전과 실행 후에 데이터베이스는 일관된 상태를 유지해야 합니다.제약 조건, 규칙 등 을 항상 만족해야 합니다.(Unique, pk, fk 등) 3. Isolation(격리성)동시에 여러 트랜잭션이 실행되더라도 작업끼리 서로 간섭하지 않아야 합니다. 4. Durability(지속성)트랜잭션이 성공적으로 commit..

Interview Question 2025.09.02

[Interview Question] INNER JOIN, LEFT JOIN 차이는 무엇인가요?

INNER JOIN의 경우 조인 조건을 만족한 행만 반환합니다. 교집합 개념이라고 할 수 있습니다.예를들면 어떤 상품을 구매한 유저를 찾기 위해 상품주문 테이블과 유저 테이블을 조인했다고 가정하면,INNER JOIN을 했을 때, 상품 주문을 한 유저들만 반환합니다. LEFT JOIN의 경우 왼쪽 테이블의 모든 행을 반환하고 오른쪽 테이블 행 중 조인 조건을 만족한 행도 가져옵니다.매칭되는 값이 없다면 NULL값으로 반환합니다.LEFT JOIN을 했을 때, 모든 유저를 반환하고 상품 주문을 한 유저는 상품주문 id를 반환하며 상품주문을 하지 않는 유저는 NULL을 반환합니다.

Interview Question 2025.09.02

[Interview Question] Index에 대해서 설명해보세요

데이터베이스에서 index는 데이터를 빠르게 찾을 수 있게 도와주는 자료구조입니다. 테이블에 index를 만약에 설정하지 않는다면 최악의 경우 모든 데이터를 다 조회해야하는 O(n)의 시간복잡도가 나올 수 있다. 하지만 인덱스를 도입하게 되면 O(log n)까지 줄일 수 있습니다. 그 이유는 index가 B-tree 자료구조로 형성되어 있기 때문입니다. B-tree 는 Balanced Tree라고 하며, 균형 다진 탐색 트리라고 한다. 모든 리프 노드의 차수가 동일하므로, 트리 높이가 일정하게 유지됩니다. 또한, B-Tree는 각 노드가 여러 개의 키(key)와 자식 포인터를 가질 수 있는 트리 구조입니다. 검색할 때는 루트 노드부터 시작하여 현재 노드의 키와 비교하면서 범위를 좁혀가며 탐색합니다. 이러..

Interview Question 2025.09.02