# 면접 CS 정리 Day 17 (풀스택 / Java·Spring·React)

면접 CS 정리 Day 17 (풀스택 / Java·Spring·React)

Q1. Comparable vs Comparator

문제
Comparable이랑 Comparator 차이? 정렬 기준을 어디에 두는지.

  • Comparable: 클래스 안 compareTo()기본 정렬 1개
  • Comparator: 바깥 compare(a, b)정렬 기준 여러 개 (람다 가능)

Comparable = 자연 순서 / Comparator = 외부에서 다른 기준.

Q2. @Valid + Bean Validation

문제
@NotNull / @Size / @Valid가 뭐 하는지? 어디서 검증되나?

  • @NotNull, @Size 등 = DTO 필드에 입력값 규칙 선언
  • @Valid = 그 규칙으로 검증 실행 트리거

컨트롤러에서 @RequestBody 바인딩 시점에 검증.
실패 시 보통 400 Bad Request (MethodArgumentNotValidException).

Q3. 502 vs 504

문제
502 Bad Gateway / 504 Gateway Timeout 차이.

  • 502: 게이트웨이가 뒤 서버에서 정상 응답을 못 받음
  • 504: 뒤 서버가 시간 내에 응답을 안 줌 (타임아웃)

둘 다 앞단 프록시는 살아 있고 뒤 서버가 문제.

Q4. UNION vs UNION ALL

문제
중복 행 처리 기준 차이.

  • UNION: 중복 제거 후 합침
  • UNION ALL: 중복 그대로 합침 (더 빠름)

중복 허용·없으면 UNION ALL 선호.

Q5. Reverse Proxy

문제
역방향 프록시가 뭔지, nginx가 Spring Boot 앞에 있을 때 역할 2개.


클라이언트는 nginx만 보고, nginx가 뒤 서버로 요청을 넘김.

역할 예:

  1. 리버스 프록시/라우팅 — URL에 맞는 백엔드로 전달
  2. 정적 파일(css/js) — WAS 안 거치고 nginx가 직접 서빙

보너스: SSL 종료, 로드밸런싱.

Q6. pass by value (복습)

문제
객체 넘길 때 실제로 넘어가는 것 + setName vs new User() 중 원본이 바뀌는 것.


참조(주소) 값이 복사된다.

  • param.setName("x")원본 객체 내용 바뀜
  • param = new User() → 원본 변수는 그대로

Q7. ACID (복습)

문제
A / C / I / D 각각 한 글자 의미.

  • A Atomicity: 원자성
  • C Consistency: 일관성
  • I Isolation: 격리성
  • D Durability: 영속성 (의존성 아님)

오늘 한 줄 암기

  1. Comparable = 클래스 안 / Comparator = 바깥
  2. @Valid = DTO 바인딩 시 자동 검증
  3. 502 = 뒤 응답 실패 / 504 = 뒤 타임아웃
  4. UNION = 중복 제거 / UNION ALL = 중복 유지
  5. setName = 원본 바뀜 / new = 참조만 바뀜

다음 목표

  • UNION / UNION ALL 중복 처리 방향 헷갈리지 않기
  • pass by value에서 setName vs new 구분 말하기