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

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

Q1. enum

문제
enum을 상수 문자열 대신 쓰는 이유 2가지.

  1. 타입 안전 — 잘못된 값·오타를 컴파일에서 잡기 쉬움
  2. 허용 값 고정 — 정해진 목록만 쓰게 강제

보너스: static import로 명확하게 쓰기, 메서드·필드 추가 가능.

Q2. CORS preflight

문제
CORS preflight가 뭔지, OPTIONS가 언제 먼저 나가나?


본 요청 전에 브라우저가 서버 허용 여부를 먼저 확인하는 OPTIONS 요청.

단순 요청이 아닐 때 — 예: POST + Content-Type: application/json, 커스텀 헤더, PUT/DELETE.

Q3. COUNT(*) vs COUNT(컬럼)

문제
차이? NULL 행은?

  • COUNT(*): 행 전체 개수 (컬럼 NULL이어도 행은 셈)
  • COUNT(컬럼명): 그 컬럼이 NULL이 아닌 행만

Q4. @PostConstruct

문제
언제 실행되나?


Bean 생성 + 의존성 주입 끝난 직후, 처음 쓰이기 전 1번.

singleton은 보통 앱 기동 시, prototype은 생성될 때마다.
반대: @PreDestroy = Bean 종료 직전.

Q5. Lifting State Up

문제
뭔지 한 줄 + 형제끼리 state 공유하려면?


여러 자식이 쓰는 state를 공통 부모로 올리는 패턴.
부모가 state를 들고 props + 콜백으로 자식에 내려준다.

Q6. Monolith vs Microservice

문제
장점 / 단점 한 줄씩.

  • Monolith: 개발·배포 단순 / 한 부분 장애가 전체로 퍼질 수 있음
  • Microservice: 독립 배포·확장, 장애 격리 / 서비스·네트워크 복잡도↑

Q7. UNION vs UNION ALL (복습)

문제
중복 행 처리.

  • UNION: 중복 제거 후 합침
  • UNION ALL: 중복 그대로 합침

(Day 17과 동일 실수 — 반대로 외우지 말 것)

오늘 한 줄 암기

  1. enum = 타입 안전 + 허용 값 고정
  2. preflight = OPTIONS로 먼저 허용 확인
  3. COUNT(*) = 행 / COUNT(컬럼) = NULL 제외
  4. @PostConstruct = 생성·주입 후, 사용 전
  5. UNION = 중복 제거 / UNION ALL = 중복 유지

다음 목표

  • UNION / UNION ALL 반복 오답 — “ALL = 전부(중복 포함)”로 외우기
  • Lifting State Up = 공통 부모로 state 올리기