2025/04 10

[1분 면접] 해시 충돌에 대해서 설명해주세요.

📌 해시 충돌해시 key-value 쌍으로 이뤄진 자료 구조로, Key 값을 사용하여 조회 O(1) 시작 복잡도로 찾을 수 있다.해시 자료 구조는 키를 해시 함수에 넣어서 나오는 결과를 기반으로 값을 관리는데,서로 다른 키가 동일한 결과가 나오는 경우를 해시 충돌이라고 한다. 해시 충돌 완화1. 개방 주소법 (Open Addressing)특정 값이 들어가야 하는 버킷이 이미 사용되고 있는 경우, 다른 해시 버킷에 데이터 삽입 2. 분리 연결법 (Separate Chaining)버킷을 연결 리스트나 트리 형태로 관리하여 버킷에 들어갈 값의 수에 제한을 두지 않음 해시 테이블 만들어지는 로직 Key 값을 Hash Function에 넣으면 Hash code가 생성된다. 적적한 로직으로 Hash code를..

[1분 면접] JVM에서 GC 대상 객체를 판단하는 기준 (+ JVM 구조)

📌 면접 답변GC(Garbage Collection)은 자바의 메모리 관리 방법의 하나JVM의 힙 영역에서 동적으로 할당했던 메모리 중 필요없어진 객체를 주기적으로 제거GC는 특정 객체가 사용 중인지 아닌지를 판단하기 위해 (Reachability) 개념 사용특정 객체에 대한 참조가 존재하면 도달 할 수 있으며, 참조가 존재하지 않는 경우 도달 할 수 없는 상태로 간주이때 도달할 수 없다는 결론을 내린다면 해당 객체는 GC의 대상이 된다. Reachability 판단 기준힙 영역에 있는 객체에 대한 참조는 4가지 케이스가 존재한다. 1. 힙 내의 다른 객체에 의한 참조class Engine { String type = "V6";}class Car { Engine engine; // 힙 내의 ..

[1분 면접] CAP 정리에 대해서 설명해주세요.

📌 면접 답변CAP 정리는 분산 데이터베이스 시스템이 CAP 중 2개의 속성만 제공할 수 있다는 이론이다.C(일관성, Consistency), A(가용성, Availability), P(분할 내성, Partition Tolerance)3가지 속성을 모두 만족하는 분산 데이터 베이스 시스템은 존재하지 않는다.분산 시스템에서 Partition은 언젠가 반드시 발생한다. 따라서 P의 관점으로 바라보면 좋다.네트워크 분할 상태에 Consistency와 Availablity 모두 보장할 수 없음  각 속성에 대한 설명C (일관성) : 모든 클라이언트 요청은 어느 노드에 연결되어도 같은 데이터를 볼 수 있다.A (가용성) : 노드 일부에 문제가 발생하더라도, 시스템은 클라이언트의 모든 요청에 유효한 응답을 전해줘..

[1분 면접] 교착 상태에 대해서 설명해주세요.

📌 면접 답변교착상태는 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있어 결과적으로 아무것도 완료되지 못하는 상태를 의미한다. 예를들어 프로세스 A는 자원 A를 갖고 자원 B를 원하고, 프로세스 B는 자원 B를 갖고 자원 A를 원할때 , 두개의 프로세스는 교착 상태에 빠져 어느 작업도 진행 할 수 없는 상황이 된다.     교착 상태 발생하는 조건상호 배제 : 자원에 대해 독자적 제어권 을 주장점유 대기 : 자원을 할당 받은 상태에서, 다른 자원을 할당 받기를 기다리는 상태비선점 : 자원을 강제로 뺏을 수 없음순환(원형) 대기 : 사이클 형태로 자원 대기  교착 상태  해결 방법1. 락 획득 순서 고정synchronized (lock1) { synchronized (lock2) ..

[1분 면접] 시스템 간 비동기 연동 방식에는 무엇이 있나요 ?

📌 면접 답변분리된 시스템 간의 비동기 연동은 시스템의 결합도를 낮출 수 있다.호출된 시스템의 응답을 기다리지 않으므로 더욱 빨리 사용자의 요청에 응답할 수 있다.비동기 연동 방식으로 메시징 시스템 활용, 데이베이스 활용, CDC, Webhook 방식 등이 있다.  메시징 시스템(메세지 큐) 활용두 시스템 사이에 메시징 시스템을 두어 비동기로 연동한 시스템에서 메시지를 생성해서 메시징 시스템에 송신다른 시스템에서 메시징 시스템으로부터 메시지를 읽어와 메시지 처리주로 Kafka, RabbitMQ가 주로 메시징 시스템으로 활용처리량이 높은 것이 장점이지만, 메시지 유실, 메시지 소비 순서, 트랙잭션에 대한 고민이 필요  데이터베이스 활용데이터베이스를 메시징 시스템처럼 사용하는 방법시스템 A가 DB에 메시지..

[1분 면접] 관계형 데이터베이스와 비 관계형 데이터베이스의 차이점은 무엇인가요?

📌 면접 답변관계형 데이터 베이스고정된 row와 column으로 구성된 테이블에 데이터 저장여러 테이블에 존재하는 데이터와 관계에 따라서 테이블 조인 가능테이터 중복 없이 한번만 저장 (무결성 보장)일반적으로 관계형 데이터베이스는 스케일 업 사용하여 확장관계형 데이터 베이스는 스키마를 유연하게 바꾸기 어렵다는 한계 존재 비관계형 데이터 베이스NoSQL이라고 불림정해진 스키마가 존재하지 않으며, 자유롭게 데이터 저장 및 조회 가능문서, Key-Value, 와이드 컬럼, 그래프 유형 존재대량의 데이터와 높은 사용자 부하에도 손쉽게 확장 가능 (일반적으로 스케일 아웃 중심)중복을 혀용하기 때문에 일관성이 저하되고 용량이 증가  📌 내 답변관계형 DB는 테이블 구조로 정형화되어있고, 튜플들로 테이블이 구성된..

[1분 면접] HTTP/1.1과 HTTP/2.0에 대해서 설명

📌 면접 답변  HTTP/1.0 (1996)요청 하나당 새로운 연결을 만든다.요청과 응답마다 TCP 커넥션 생성으로 오버헤드 발생 매번 TCP 연결 생성 필요 HTTP/1.1 (1997)Persistent Connection 지원 (지속 커넥션)연결 재사용파이프라이닝 지원으로 요청의 응답 지연 감소여기서 말하는 파이프라이닝은 TCP 연결에서 여러 요청을 순차적으로 보내고, 응답은 순서대로 받는 방식요청 A → B → C 인 경우, 응답 A → B → C 순서대로 처리저런 파이프라이닝 방식에는 항상 떠오르는 문제가 맨 앞에 끝 없이 지연되는 문제이다 ....이러한 문제를 Head-of-Line Blocking (HOL Blocking) 문제라고 한다. HTTP/2 (2015)HTTP/1.1은 메시지를 일..

[1분 면접] 프로세스보다 스레드의 컨텍스트 스위칭이 더 빠른 이유

📌 면접 답변 프로세스 컨텍스트 스위칭 같은 경우 새로운 프로세스의 가상 메모리 주소를 설정 해야한다. 따라서 MMU에 새로운 주소 체계 설정, TLB와 메모리 저장된 캐시를 비우는 등의 메모리 작업을 해야한다.  하지만 스레드 컨텍스트 스위칭 같은 경우 위의 과정들이 한 프로세스 내에서 공유되기 때문에, CPU의 상태와 메모리 상태만 변경해주면 된다.   컨텍스트 스위칭CPU가 실행 중이던 프로세스나 스레드가 다른 프로세 스나 스레드로 교체되는 과정을 말한다.멀티태스킹 시스템에서 여러 작업을 효율적으로 관리하기 위해 필수적인 매커니즘이다. Context프로세스나 스레드의 현재 상태를 의미하고, CPU의 레지스터 상태(PC, SP 등)와 메모리 상태가 포함된다. 즉, Context는 프로세스나 스레드가..

[1분 면접] Redis가 싱글 스레드로 만들어진 이유

📌 면접 답변Redis는 싱글 스레드 기반으로 설계되어 구조를 단순화하고 성능을 극대화 할 수 있다. 1. Lock이나 동기화 처리를 하지 않아도 되므로, 경쟁 조건 없이 안정적이고 빠르게 작동 2. Redis의 대부분의 연산이 O(1) 또는 O(logN)처럼 매우 빠르기 때문에, 멀티스레드가 꼭 필요하지는 않음 3. IO Multiplexing을 통해 여러 클라이언트 요청을 비동기적으로 감지하고, 싱글 스레드 이벤트 루프로 빠르게 순차 처리하여 단순하지만 성능이 뛰어난 구조를 만들 수 있음  Redis는 Remote Dictionary Server를 의미캐싱, 세션 저장소, 실시간 데이터 저장소 등 다향한 용도로 사용 IO MultiPlexing IO MultiPlexing은 하나의 스레드가 여러개의..

SQL 개념 및 실제 쿼리 정리

SQLD 공부했다고 SQL의 쿼리를 잘 짤수는 없다.최근에 면접을 보았고 DB 관련된 내용 질문이 많았지만 한마디도 못했다. 내가 생각했던거 이상으로 백엔드에서 DB는 중요했다.  SQLD 공부가 무의미한 것은 아니다.단지 내가 이론적으로만 학습했기 때문에,외우기에만 급급했고 정말 실제 SQL 사용측면에서의 학습이 부족했다.   SQLD 필수 개념 요약 정리 / 벼락치기, 독학, 요약본SQL은 비절차적 언어로, 절차적 언어 (JAVE,C 등등)과는 다르다. SQLD에서 나오는 핵심 개념들은 요약정리 해보자 🐸(최소한 이것만은 외우고 가자는 마인드 !) 처음보는 용어이면, 익숙해지고한jerry-k.site 그래서 이번에 지난번에 SQLD 시험을 위해 정리했던 내용들을, 좀 더 실용성을 바탕으로 보충해보려..

⚙️ Backend/DB 2025.04.01