본문 바로가기
IT일반

백엔드 면접 자주 나오는 질문 10가지와 답변 모음

by 토크미 2025. 4. 25.

백엔드 면접 자주 나오는 질문 10가지와 답변 모음

안녕하세요, 백엔드 면접을 준비하는 분들을 위해 실제 면접에서 자주 등장하는 10가지 질문과 함께, 각 질문에 대한 구체적인 상황별 해결 방법을 정리해봤어요. 실무에서 바로 써먹을 수 있는 팁도 함께 담았으니, 편하게 읽어주세요!


1. REST API란? RESTful하게 만든다는 건 뭐야?

REST API는 HTTP 프로토콜을 기반으로 자원을 URI로 구분하고, HTTP 메서드(GET, POST, PUT, DELETE 등)를 활용해 자원을 조작하는 방식이에요. RESTful하게 만든다는 건, 이 원칙들을 잘 지켜서 일관성 있고 예측 가능한 API를 만드는 걸 의미해요.

실전 해결법:
API를 설계할 때는 URI를 명확하게 자원 중심으로 설계하고, 불필요한 상태 정보를 서버에 저장하지 않도록 신경 써야 해요. 예를 들어, /users/123처럼 자원을 명확히 표현하고, 상태 변화는 HTTP 메서드로 구분하는 식이죠.


2. HTTP 상태 코드 중 자주 쓰는 거 설명해봐 (200, 400, 401, 403, 500 등)

  • 200 OK: 요청이 정상적으로 처리됨
  • 400 Bad Request: 잘못된 요청(클라이언트의 입력 오류)
  • 401 Unauthorized: 인증 필요, 토큰 등 인증 정보가 없거나 잘못됨
  • 403 Forbidden: 권한 없음(인증은 했지만 접근 권한이 없음)
  • 500 Internal Server Error: 서버 내부 오류

실전 해결법:
API 응답 시 상황에 맞는 상태 코드를 꼭 사용하세요. 예를 들어, 로그인 실패 시 401, 권한 없는 접근 시 403을 명확히 구분해서 클라이언트가 원인을 쉽게 파악할 수 있도록 해주는 게 중요해요.


3. 데이터베이스 정규화가 뭐야? 왜 필요해?

정규화는 데이터베이스에서 중복을 제거하고, 데이터의 일관성과 무결성을 보장하기 위해 테이블을 구조화하는 과정이에요. 예를 들어, 1NF는 한 컬럼에 하나의 값만 저장하도록 하는 거죠.

실전 해결법:
정규화를 통해 데이터 중복을 줄이고, 데이터 삽입/수정/삭제 시 이상현상(Anomaly)을 방지할 수 있어요. 하지만 너무 지나치면 성능 저하가 발생할 수 있으니, 상황에 따라 비정규화도 고려하세요.


4. RDB vs NoSQL 차이점은?

  • RDB(관계형 DB): 테이블 구조, SQL 사용, 데이터 무결성 보장, 복잡한 쿼리 처리에 강점
  • NoSQL: 다양한 데이터 모델(문서, 키-값 등), 대용량/분산 처리에 유리, 유연한 스키마

실전 해결법:
정형 데이터, 트랜잭션이 중요한 경우 RDB를, 대용량 데이터 처리나 유연한 스키마가 필요한 경우 NoSQL을 선택하면 좋아요. 프로젝트 요구사항에 따라 적절히 선택하세요.


5. 트랜잭션이 뭔데? ACID 원칙은?

트랜잭션은 데이터베이스에서 하나의 작업 단위로, 모두 성공하거나 모두 실패해야 해요.
ACID 원칙은 다음과 같아요:

  • Atomicity(원자성): 모두 성공 또는 모두 실패
  • Consistency(일관성): 트랜잭션 전후 데이터 일관성 유지
  • Isolation(고립성): 동시에 여러 트랜잭션이 실행돼도 서로 간섭 없음
  • Durability(지속성): 트랜잭션 완료 후 결과는 영구적으로 보존

실전 해결법:
중요한 데이터 변경 작업(예: 송금, 주문 등)은 반드시 트랜잭션을 적용해서 데이터 무결성을 보장하세요. 프레임워크의 트랜잭션 기능을 적극 활용하면 실수도 줄일 수 있어요.


6. JWT 토큰은 어떻게 동작해?

JWT는 인증 정보를 JSON 형태로 담아 서명한 토큰이에요.
구조는 헤더.페이로드.서명 세 부분으로 나뉘고, 서버는 토큰의 서명을 검증해서 신뢰성을 확인해요.

실전 해결법:
로그인 성공 시 서버가 JWT를 발급하고, 클라이언트는 이후 요청마다 JWT를 헤더에 담아 보내요. 서버는 토큰을 검증해서 사용자를 식별하죠. 세션 저장이 필요 없어 확장성이 좋아요.


7. 클라이언트-서버 통신 흐름 설명해줘

  1. 클라이언트가 서버에 요청(HTTP Request) 전송
  2. 서버가 요청을 처리하고, 결과(HTTP Response) 반환
  3. 클라이언트가 응답을 받아 화면에 표시하거나 후속 작업 진행

실전 해결법:
API 설계 시 요청과 응답의 데이터 구조를 명확히 정의하고, 예외 상황에 대한 응답도 꼼꼼히 설계하세요. 클라이언트와 서버 간의 명확한 약속이 중요해요.


8. 서버에서 인증/인가 차이 설명해줘

  • 인증(Authentication): "너 누구야?" → 사용자의 신원 확인(로그인)
  • 인가(Authorization): "너 이거 해도 돼?" → 권한 확인(접근/수정/삭제 등)

실전 해결법:
로그인(인증)과 권한 체크(인가)를 분리해서 처리하면 보안에 더 유리해요. 예를 들어, JWT로 인증 후, 각 API별로 인가 로직을 추가하는 식이죠.


9. 웹 서버와 WAS 차이 아는지?

  • 웹 서버: 정적 파일(HTML, CSS, JS 등) 제공, 요청을 WAS로 전달
  • WAS(Web Application Server): 동적 로직 처리, 비즈니스 로직 실행

실전 해결법:
Nginx/Apache 같은 웹 서버와 Tomcat 같은 WAS를 조합해서 사용하면, 정적/동적 리소스 처리를 효율적으로 분리할 수 있어요. 성능과 보안 모두 챙길 수 있는 구조죠.


10. 배포할 때 고려해야 할 점은?

  • 무중단 배포(서비스 중단 최소화)
  • 롤백 전략(문제 발생 시 빠른 복구)
  • 환경 변수/설정 분리
  • 로그/모니터링 체계 구축
  • 보안(민감 정보 노출 방지)
  • 버전 관리 및 호환성

실전 해결법:
CI/CD 파이프라인을 구축해서 자동화 배포를 적용하면 배포 실수를 줄일 수 있어요. 배포 전후로 헬스 체크, 모니터링, 알림 시스템을 갖추면 장애 대응도 빨라져요.