BLOG

개발자 면접 질문 & 해설

매일 업데이트되는 기술 면접 질문과 현직 개발자들의 해설

System Design미드

분산 트랜잭션: Saga와 2PC 중 무엇을 선택할까요?

강한 일관성이 필수인 금융 결제 등에는 2PC를 고려하되, 가용성과 확장성이 중요한 일반적인 MSA 환경에서는 보상 트랜잭션을 활용하는 Saga 패턴을 우선적으로 검토해야 합니다.

2026-06-1942명 참여
MSADistributed TransactionSaga Pattern
CS 기초주니어

스택(Stack)과 힙(Heap) 메모리 영역의 차이는 무엇인가요?

스택은 정적 할당으로 속도가 빠르고 자동으로 메모리가 해제되나 크기가 제한적이며, 힙은 동적 할당으로 큰 데이터를 자유롭게 다루지만 관리가 필요하고 속도가 상대적으로 느립니다.

2026-06-1738명 참여
MemoryManagementOperatingSystemStack
Frontend시니어

마이크로 프론트엔드: Module Federation vs Iframe

독립적인 배포와 개발을 위해 마이크로 프론트엔드를 도입하며, 런타임 통합의 유연성을 제공하는 Module Federation과 완전한 격리를 보장하는 Iframe의 트레이드오프를 이해하는 것이 핵심입니다.

2026-06-1542명 참여
Micro-FrontendsModule FederationWeb Performance
Backend미드

Spring Security의 인증 흐름을 설명해주세요

인증 필터가 요청을 가로채 토큰화하고, AuthenticationManager가 적절한 Provider에게 검증을 위임하여 최종 인증 객체를 SecurityContext에 저장하는 전략적 흐름입니다.

2026-06-1342명 참여
Spring SecurityAuthenticationSpring Boot
DevOps주니어

Docker 레이어 캐싱의 원리와 최적화 전략은?

도커는 Dockerfile의 각 명령어를 레이어로 저장하며, 변경이 없는 이전 단계의 레이어를 재사용해 빌드 속도를 높입니다. 캐시 효율을 위해 변동이 적은 의존성 설치를 상단에 배치하는 것이 핵심입니다.

2026-06-1142명 참여
DockerDevOpsCI-CD
Network시니어

DNS 조회 과정과 재귀적/반복적 쿼리 차이

DNS 조회는 브라우저 캐시부터 리졸버가 루트, TLD, 권한 네임서버를 거쳐 IP를 찾는 과정입니다. 성능 최적화를 위한 TTL 설정과 보안을 위한 DNSSEC, GSLB 활용 능력이 핵심입니다.

2026-06-0742명 참여
DNSNetworkingSystemDesign
Database미드

데이터베이스 정규화와 비정규화의 차이점

정규화는 중복을 최소화해 무결성을 높이는 과정이며, 비정규화는 조회 성능 향상을 위해 의도적으로 중복을 허용하는 최적화 기법입니다. 데이터 일관성과 응답 속도 사이의 균형을 맞추는 것이 핵심입니다.

2026-06-0342명 참여
NormalizationDenormalizationDatabaseDesign
System Design주니어

로드밸런싱 알고리즘 종류와 선택 기준은?

로드밸런싱은 여러 서버에 트래픽을 분산하여 가용성을 높이는 기술입니다. 서버 성능이 동일하면 라운드 로빈, 요청 처리 시간이 가변적이라면 최소 연결(Least Connection) 방식을 선택하는 것이 핵심입니다.

2026-06-0142명 참여
LoadBalancingSystemDesignHighAvailability
CS 기초시니어

뮤텍스(Mutex)와 세마포어(Semaphore)의 차이

뮤텍스는 단일 스레드의 상호 배제를 보장하며 락 소유권이 있습니다. 반면 세마포어는 카운터를 통해 다중 스레드의 자원 접근 및 실행 순서를 제어합니다.

2026-05-3142명 참여
ConcurrencyOSMutex
Frontend미드

브라우저 렌더링 과정 (CRP)

브라우저 렌더링은 HTML, CSS, JavaScript를 파싱하여 화면에 그리는 과정입니다. DOM/CSSOM 트리 생성, 렌더 트리 구축, 레이아웃(Reflow), 페인트(Repaint) 단계를 거치며, 성능 최적화를 위해 Reflow를 최소화하는 것이 핵심입니다.

2026-05-2932명 참여
BrowserRenderingOptimization
Backend주니어

스프링 빈(Bean)의 생명주기 과정

스프링 빈은 '객체 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸 전 콜백 -> 종료'의 생명주기를 가집니다. 주로 @PostConstruct를 통해 초기화 작업을 수행합니다.

2026-05-1942명 참여
SpringBean LifecycleIoC
DevOps시니어

Kubernetes Pod 스케줄링 메커니즘

Kubernetes 스케줄러는 Filtering과 Scoring 단계를 거쳐 최적의 노드를 선택합니다. 실무에서는 Taints/Tolerations로 노드 접근을 제어하고, Node Affinity로 특정 노드 선호를 설정하여 자원 효율성과 고가용성을 극대화합니다.

2026-05-1342명 참여
KubernetesSchedulingTaints
Network미드

HTTP/1.1, HTTP/2, HTTP/3 차이점은?

HTTP/1.1은 텍스트 기반으로 HOL Blocking 문제가 있었고, HTTP/2는 멀티플렉싱을 통해 이를 개선했으며, HTTP/3는 UDP 기반의 QUIC을 도입해 TCP의 태생적 한계를 극복했습니다.

2026-05-1142명 참여
HTTPNetworkQUIC
Database주니어

데이터베이스 트랜잭션 격리 수준 4가지와 특징

트랜잭션 격리 수준은 여러 트랜잭션이 동시에 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 결정하는 설정으로, 일관성과 성능 사이의 균형을 조절합니다.

2026-05-0942명 참여
DatabaseTransactionIsolationLevel
System Design시니어

MSA 통신 방식: Sync와 Async의 차이와 선택 기준

동기 통신(REST/gRPC)은 즉각적인 응답이 필요한 비즈니스 로직에 적합하나 서비스 간 강한 결합도를 유발합니다. 비동기 통신(Kafka/RabbitMQ)은 시스템 간 결합도를 낮추고 트래픽 급증에 유연하게 대응할 수 있어 최종적 일관성이 허용되는 이벤트 기반 처리에 권장됩니다.

2026-05-0742명 참여
MSAMicroservicesSystem Design
CS 기초미드

데드락(교착 상태) 발생 조건과 해결 방법은?

데드락은 두 개 이상의 프로세스가 서로의 자원을 기다리며 무한 대기에 빠지는 상태입니다. 상호 배제, 점유 대기, 비선점, 순환 대기라는 4가지 조건이 동시에 충족될 때 발생하며, 예방(Prevention)이나 회피(Avoidance)를 통해 해결합니다.

2026-05-0542명 참여
OSDeadlockConcurrency
Frontend주니어

React useEffect 클린업 함수는 왜 필요한가요?

useEffect의 클린업 함수는 컴포넌트 언마운트 또는 다음 효과 실행 직전에 이전 부수 효과를 정리하여 메모리 누수, 중복 이벤트 등록, 비동기 상태 업데이트 오류를 방지하는 필수 메커니즘입니다.

2026-05-0338명 참여
ReactuseEffectJavaScript
Backend시니어

Spring 트랜잭션 전파 속성의 동작 원리

트랜잭션 전파는 진행 중인 트랜잭션이 있을 때 새로운 트랜잭션 경계가 어떻게 반응할지를 정의하는 설정입니다. 기본값인 REQUIRED는 부모 트랜잭션에 참여하고, REQUIRES_NEW는 별도의 독립적인 트랜잭션을 생성하여 각각의 커밋/롤백 범위를 격리합니다.

2026-05-0142명 참여
SpringTransactionPropagation
DevOps미드

블루-그린과 카나리 배포의 차이는?

블루-그린은 동일 환경을 두 개 구성해 트래픽을 일시에 전환하며, 카나리는 점진적으로 비중을 높여 안정성을 검증합니다. 무중단 배포와 리스크 관리가 핵심 목표입니다.

2026-04-2942명 참여
Blue-GreenCanaryDeployment
Network주니어

CORS의 동작 원리와 해결 방법은 무엇인가요?

CORS는 브라우저가 출처가 다른 리소스에 접근할 수 있도록 허용하는 보안 체계입니다. SOP 정책을 따르되 서버의 Access-Control-Allow-Origin 헤더로 안전한 예외를 허용합니다.

2026-04-2742명 참여
CORSWeb SecurityHTTP Headers
Database시니어

데이터베이스 샤딩 전략: 수직 vs 수평 샤딩

샤딩은 대량의 데이터를 여러 노드에 분산 저장하는 기술로, 수직 샤딩은 테이블별로 분리하고 수평 샤딩은 행 단위로 분리합니다. 시니어 면접에서는 데이터 일관성 유지와 조인 제약 해결 능력을 보여주는 것이 핵심입니다.

2026-04-2542명 참여
DatabaseScalabilitySharding
System Design미드

Kafka와 RabbitMQ의 차이와 선택 기준은?

Kafka는 로그 기반의 고성능 스트리밍에 최적화된 플랫폼이며, RabbitMQ는 유연한 라우팅과 즉각적인 메시지 전달이 강점인 전통적 브로커입니다. 데이터의 양과 처리 방식에 따라 선택합니다.

2026-04-2134명 참여
Message QueueKafkaRabbitMQ
System Design미드

캐싱 전략(Cache-Aside vs Write-Through)의 차이는 무엇인가요?

캐싱 전략은 읽기/쓰기 비중에 따라 선택하며, 보통 읽기 위주에는 Cache-Aside를, 데이터 일관성이 중요하다면 Write-Through를 사용하여 DB 부하를 줄이고 응답 속도를 향상시킵니다.

2026-04-1942명 참여
CachingRedisSystem Design
System Design미드

API Rate Limiting의 개념과 주요 전략은 무엇인가요?

Rate Limiting은 정해진 시간 내 요청 횟수를 제한해 시스템 과부하를 방지합니다. 주로 Redis와 Token Bucket을 활용해 버스트 트래픽에 대응하며 서비스 가용성을 안정적으로 유지합니다.

2026-04-1742명 참여
RateLimitingSystemDesignScalability
CS 기초주니어

컴파일러와 인터프리터의 차이는 무엇인가요?

컴파일러는 전체 코드를 기계어로 번역해 실행 파일을 만들며 실행 속도가 빠릅니다. 반면 인터프리터는 한 줄씩 읽어 즉시 실행하므로 수정과 디버깅이 용이하지만 반복 작업 시 성능이 낮을 수 있습니다.

2026-04-1538명 참여
CompilerInterpreterJIT
Frontend시니어

Next.js의 CSR, SSR, SSG, ISR 차이와 최적화 전략

Next.js 렌더링 핵심은 '데이터 업데이트 빈도'와 'SEO 필요성'에 따른 선택입니다. 정적 데이터는 SSG/ISR로 빌드 타임에, 동적 데이터는 CSR/SSR로 처리하여 성능과 경험을 동시에 확보해야 합니다.

2026-04-1342명 참여
Next.jsRenderingSEO
Backend미드

JPA N+1 문제의 발생 원인과 해결 방법

N+1 문제는 연관 관계가 설정된 엔티티 조회 시 조회된 데이터 개수(N)만큼 추가 쿼리가 발생하는 성능 문제입니다. JPQL의 동작 방식 때문에 발생하며, Fetch Join이나 Batch Size 설정을 통해 쿼리를 최적화하여 해결할 수 있습니다.

2026-04-1142명 참여
JPAHibernateSpring Boot
Backend주니어

REST API에서 GET과 POST의 차이점은 무엇인가요?

GET은 서버에서 데이터를 조회할 때 사용하며 요청 본문이 없고 멱등성을 보장합니다. POST는 서버에 데이터를 전송하여 리소스를 생성할 때 사용하며, 멱등하지 않습니다.

2026-04-0747명 참여
REST APIHTTPBackend
Backend주니어

데이터베이스 인덱스란 무엇이고, 왜 사용하나요?

인덱스는 데이터베이스 테이블의 검색 속도를 향상시키는 자료구조입니다. 책의 목차처럼 특정 컬럼의 값과 해당 레코드의 위치를 매핑하여, 전체 테이블을 스캔하지 않고도 원하는 데이터를 빠르게 찾을 수 있게 합니다.

2026-04-0638명 참여
DatabaseIndexSQL
Frontend주니어

React의 Virtual DOM은 무엇이고, 왜 사용하나요?

Virtual DOM은 실제 DOM의 가벼운 복사본으로, 상태 변경 시 새 Virtual DOM을 생성하고 이전 것과 비교(Diffing)하여 실제 DOM에는 변경된 부분만 최소한으로 반영합니다.

2026-04-0552명 참여
ReactVirtual DOMFrontend
Network주니어

TCP와 UDP의 차이점은 무엇인가요?

TCP는 연결 지향형 프로토콜로 3-way handshake를 통해 연결을 수립하고, 데이터의 순서와 무결성을 보장합니다. UDP는 비연결형 프로토콜로 연결 없이 데이터를 전송하며, 신뢰성보다 속도를 우선합니다.

2026-04-0444명 참여
TCPUDPNetwork
CS 기초주니어

프로세스와 스레드의 차이점은 무엇인가요?

프로세스는 운영체제로부터 독립된 메모리 공간을 할당받는 실행 단위이며, 스레드는 프로세스 내에서 코드/데이터/힙 영역을 공유하면서 독립적인 스택만 가지는 실행 단위입니다.

2026-04-0356명 참여
OSProcessThread

앱에서 직접 답변을 작성해보세요

매일 3개의 면접 질문에 답변하고, 다른 개발자들의 답변을 비교해보세요.

무료로 시작하기