신입 개발자 기술면접 질문 모음

한눈에 보기

자료구조, 알고리즘, 운영체제, 네트워크, 데이터베이스, 웹, 소프트웨어 공학까지 신입 개발자 CS 면접 단골 질문 80여 개를 영역별로 정리했다. 출제 경향과 답변 연습 방법도 함께 담았다.

최종 업데이트 2026.09.17

신입 개발자 기술 면접에서 반복적으로 출제되는 컴퓨터 과학(Computer Science) 공통 질문을 일곱 개 영역으로 정리한 문서다. 각 질문은 실제 면접에서 나오는 구어체 그대로 실었으므로, 소리 내어 답변을 연습하면서 자신이 설명하지 못하는 부분을 찾아내는 체크리스트로 쓸 수 있다. 정답을 외우기보다 각 질문에 대해 정의, 동작 원리, 트레이드오프 순으로 답하는 훈련을 하는 것이 중요하다.

자료구조

자료구조는 거의 모든 회사에서 첫 질문으로 나오는 영역이다. 특히 배열과 연결 리스트의 비교, 해시 테이블의 내부 동작은 꼬리 질문까지 이어지는 경우가 많다.

  • 배열(Array)과 연결 리스트(Linked List)의 차이는 무엇이고, 각각 어떤 상황에서 유리한가요?
  • 스택(Stack)과 큐(Queue)를 설명하고, 각각이 실제로 쓰이는 사례를 들어 주세요.
  • 스택 두 개로 큐를 구현하는 방법을 설명해 주세요.
  • 해시 테이블(Hash Table)의 동작 원리를 설명해 주세요.
  • 해시 충돌(Hash Collision)이 발생하는 이유와 해결 방법에는 어떤 것들이 있나요?
  • 해시 테이블의 탐색이 평균적으로 O(1)인데, 최악의 경우에는 왜 O(n)이 되나요?
  • 이진 탐색 트리(Binary Search Tree)의 특징과 한계를 설명해 주세요.
  • 균형 이진 트리가 왜 필요한가요? 레드 블랙 트리(Red-Black Tree)는 어떤 방식으로 균형을 유지하나요?
  • 힙(Heap)은 어떤 자료구조이고, 우선순위 큐(Priority Queue)와는 어떤 관계인가요?
  • 트리(Tree)와 그래프(Graph)의 차이는 무엇인가요?
  • 그래프를 인접 행렬과 인접 리스트로 표현할 때 각각의 장단점을 설명해 주세요.
  • B-트리(B-Tree)가 데이터베이스 인덱스에 쓰이는 이유는 무엇인가요?
  • 동적 배열(Dynamic Array)이 내부적으로 크기를 늘리는 방식과, 삽입 연산이 상환 분석(Amortized Analysis) 관점에서 O(1)인 이유를 설명해 주세요.

알고리즘

알고리즘 영역은 코딩 테스트와 별개로 구두 면접에서도 나온다. 정렬 알고리즘의 비교와 시간 복잡도 분석은 기본 소양으로 간주된다.

  • 시간 복잡도와 공간 복잡도가 무엇인지, 빅오(Big-O) 표기법과 함께 설명해 주세요.
  • O(n log n) 정렬 알고리즘에는 어떤 것들이 있고, 서로 어떤 차이가 있나요?
  • 퀵 정렬(Quick Sort)의 동작 원리와 최악의 경우가 발생하는 조건을 설명해 주세요.
  • 병합 정렬(Merge Sort)과 퀵 정렬 중 어느 것을 언제 선택하시겠어요?
  • 안정 정렬(Stable Sort)이란 무엇이고, 안정성이 중요한 상황의 예를 들어 주세요.
  • 이진 탐색(Binary Search)의 전제 조건과 시간 복잡도를 설명해 주세요.
  • 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)의 차이와 각각 적합한 문제 유형을 설명해 주세요.
  • 다익스트라(Dijkstra) 알고리즘은 어떤 문제를 풀고, 음수 가중치가 있으면 왜 쓸 수 없나요?
  • 동적 계획법(Dynamic Programming)이란 무엇이고, 분할 정복과는 어떤 차이가 있나요?
  • 재귀 함수의 장단점과, 재귀를 반복문으로 바꿔야 하는 경우를 설명해 주세요.
  • 그리디(Greedy) 알고리즘이 항상 최적해를 보장하지 않는 이유를 예를 들어 설명해 주세요.
  • 위상 정렬(Topological Sort)은 어떤 상황에서 사용하나요?

운영체제

운영체제 영역에서는 프로세스와 스레드의 비교가 가장 자주 나오고, 백엔드 직군이라면 컨텍스트 스위칭과 동기화 문제까지 깊게 물어본다.

  • 프로세스(Process)와 스레드(Thread)의 차이를 설명해 주세요.
  • 멀티 프로세스 대신 멀티 스레드를 쓰는 이유는 무엇이고, 반대로 멀티 프로세스가 유리한 경우는 언제인가요?
  • 컨텍스트 스위칭(Context Switching)이란 무엇이고, 왜 비용이 발생하나요?
  • 프로세스의 메모리 구조(코드, 데이터, 힙, 스택 영역)를 설명해 주세요.
  • 교착 상태(Deadlock)의 네 가지 발생 조건과 해결 방법을 설명해 주세요.
  • 경쟁 상태(Race Condition)란 무엇이고, 이를 막기 위한 동기화 기법에는 어떤 것들이 있나요?
  • 뮤텍스(Mutex)와 세마포어(Semaphore)의 차이는 무엇인가요?
  • 가상 메모리(Virtual Memory)가 무엇이고 왜 필요한가요?
  • 페이지 폴트(Page Fault)가 발생하면 어떤 일이 일어나나요?
  • 페이지 교체 알고리즘 중 LRU(Least Recently Used)의 동작 방식을 설명해 주세요.
  • CPU 스케줄링 알고리즘에는 어떤 것들이 있고, 선점형과 비선점형의 차이는 무엇인가요?
  • 인터럽트(Interrupt)와 시스템 콜(System Call)을 각각 설명해 주세요.
  • 동기와 비동기, 블로킹(Blocking)과 논블로킹(Non-blocking)의 차이를 설명해 주세요.

네트워크

네트워크는 "브라우저에 주소를 입력하면 무슨 일이 일어나나요"라는 종합 질문으로 시작해서 각 계층으로 파고드는 패턴이 흔하다.

  • 브라우저 주소창에 URL을 입력하고 엔터를 누르면 화면이 뜨기까지 어떤 과정을 거치는지 설명해 주세요.
  • OSI 7계층과 TCP/IP 4계층 모델을 비교해서 설명해 주세요.
  • TCP와 UDP의 차이는 무엇이고, 각각 어떤 서비스에 적합한가요?
  • TCP의 3-way handshake 과정을 설명해 주세요.
  • 연결을 끊을 때는 왜 4-way handshake가 필요한가요? TIME_WAIT 상태는 왜 존재하나요?
  • TCP가 신뢰성을 보장하는 방법(흐름 제어, 혼잡 제어, 재전송)을 설명해 주세요.
  • DNS(Domain Name System)의 동작 과정을 설명해 주세요.
  • HTTP와 HTTPS의 차이와, TLS 핸드셰이크 과정을 설명해 주세요.
  • 대칭키 암호화와 공개키 암호화의 차이는 무엇이고, HTTPS에서는 두 방식을 어떻게 함께 쓰나요?
  • HTTP/1.1과 HTTP/2의 차이는 무엇인가요?
  • 쿠키(Cookie)와 세션(Session)의 차이를 설명해 주세요.
  • 로드 밸런서(Load Balancer)의 역할과 L4, L7 로드 밸런싱의 차이를 설명해 주세요.
  • 웹소켓(WebSocket)은 HTTP와 어떻게 다르고, 어떤 경우에 사용하나요?

데이터베이스

데이터베이스 영역에서는 인덱스와 트랜잭션이 양대 축이다. 특히 인덱스를 걸었는데도 느린 경우를 설명할 수 있는지로 이해 깊이를 확인한다.

  • 관계형 데이터베이스(RDBMS)와 NoSQL의 차이와 각각의 선택 기준을 설명해 주세요.
  • 인덱스(Index)란 무엇이고, 어떤 원리로 조회를 빠르게 만드나요?
  • 인덱스가 많을수록 좋지 않은 이유는 무엇인가요?
  • 인덱스를 걸었는데도 인덱스를 타지 않는 경우에는 어떤 것들이 있나요?
  • 트랜잭션(Transaction)의 ACID 성질을 각각 설명해 주세요.
  • 트랜잭션 격리 수준(Isolation Level) 네 가지와 각 수준에서 발생할 수 있는 현상을 설명해 주세요.
  • 낙관적 락(Optimistic Lock)과 비관적 락(Pessimistic Lock)의 차이는 무엇인가요?
  • 정규화(Normalization)의 목적과, 반대로 역정규화를 하는 이유를 설명해 주세요.
  • JOIN의 종류(INNER, LEFT OUTER 등)를 설명하고 결과가 어떻게 달라지는지 예를 들어 주세요.
  • 기본 키(Primary Key)와 유니크 키(Unique Key)의 차이는 무엇인가요?
  • 클러스터형 인덱스와 비클러스터형 인덱스의 차이를 설명해 주세요.
  • 레플리케이션(Replication)과 샤딩(Sharding)은 각각 어떤 문제를 해결하나요?
  • SQL 인젝션(SQL Injection)이란 무엇이고 어떻게 방어하나요?

웹

웹 영역은 프론트엔드와 백엔드 공통으로 출제된다. REST와 인증 방식은 프로젝트 경험과 엮어서 물어보는 경우가 많으니 자신의 프로젝트에 적용한 방식과 함께 답할 준비를 하자.

  • REST(Representational State Transfer)란 무엇이고, RESTful한 API 설계란 어떤 것인가요?
  • HTTP 메서드 GET, POST, PUT, PATCH, DELETE의 차이와 멱등성(Idempotency) 개념을 설명해 주세요.
  • HTTP 상태 코드 중 401과 403의 차이는 무엇인가요?
  • 세션 기반 인증과 토큰 기반 인증의 차이를 설명해 주세요.
  • JWT(JSON Web Token)의 구조와 장단점을 설명해 주세요.
  • CORS(Cross-Origin Resource Sharing)는 왜 필요하고, 어떻게 동작하나요?
  • XSS(Cross-Site Scripting)와 CSRF(Cross-Site Request Forgery) 공격을 설명하고 각각의 방어 방법을 말해 주세요.
  • 브라우저 렌더링 과정(파싱부터 페인트까지)을 설명해 주세요.
  • HTTP 캐시는 어떻게 동작하나요? Cache-Control 헤더와 ETag의 역할을 설명해 주세요.
  • CDN(Content Delivery Network)은 어떤 원리로 응답 속도를 개선하나요?
  • 서버 사이드 렌더링(SSR)과 클라이언트 사이드 렌더링(CSR)의 차이와 선택 기준을 설명해 주세요.
  • 웹 서버(Web Server)와 WAS(Web Application Server)의 차이는 무엇인가요?

소프트웨어 공학

소프트웨어 공학 영역은 지식 자체보다 실무 감각을 본다. 테스트와 협업 도구에 대한 질문은 프로젝트 경험담으로 이어지는 발판이 되므로 구체적인 사례를 준비해 두자.

  • 객체지향 프로그래밍(Object-Oriented Programming)의 네 가지 특징을 설명해 주세요.
  • SOLID 원칙 다섯 가지를 각각 설명해 주세요.
  • 객체지향에서 상속보다 조합(Composition)을 권장하는 이유는 무엇인가요?
  • 디자인 패턴 중 싱글턴(Singleton) 패턴의 구현 방법과 단점을 설명해 주세요.
  • 결합도(Coupling)와 응집도(Cohesion)란 무엇이고, 좋은 설계는 어느 방향을 지향하나요?
  • 단위 테스트(Unit Test)와 통합 테스트(Integration Test)의 차이는 무엇인가요?
  • 테스트 주도 개발(TDD)의 진행 과정과 장단점을 설명해 주세요.
  • Git에서 merge와 rebase의 차이는 무엇이고, 각각 언제 사용하나요?
  • CI/CD(Continuous Integration/Continuous Deployment)란 무엇이고 왜 필요한가요?
  • 리팩터링(Refactoring)이란 무엇이고, 언제 해야 한다고 생각하시나요?
  • 기술 부채(Technical Debt)란 무엇이고, 실무에서는 어떻게 관리해야 할까요?
  • 모놀리식 아키텍처와 마이크로서비스 아키텍처(Microservice Architecture)의 장단점을 비교해 주세요.
  • 코드 리뷰를 할 때 어떤 점을 중점적으로 보시나요?

답변 연습 팁

질문 목록을 다 훑었다면 다음 방식으로 연습의 밀도를 높일 수 있다.

  • 각 질문에 대해 30초 요약 답변과 2분 상세 답변을 따로 준비한다. 면접관은 짧은 답을 듣고 파고들 지점을 고른다.
  • 정의만 말하고 끝내지 말고 "왜 그렇게 설계되었는가"와 "어떤 트레이드오프가 있는가"까지 이어서 말하는 습관을 들인다.
  • 자신의 프로젝트에서 해당 개념을 실제로 쓴 지점을 한 가지씩 연결해 둔다. 경험과 붙은 답변이 가장 설득력 있다.
면접 질문 모음 문서 전체 보기

이 개념, 내 코드에서는 어떻게 물어볼까요

데브핏(DevFit)에 채용공고 URL을 붙여 넣고 레포지토리를 연결하면, 내가 쓴 커밋에서 예상 질문과 어필 포인트를 만듭니다. 하루 10회까지 무료입니다. 합불 판정이나 지원자 랭킹은 만들지 않고, 최종 판단은 사람이 합니다.

공고 넣고 시작하기