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

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

Q1. HTTP 멱등성

문제
HTTP에서 멱등(idempotent)이 뭔지?
GET / PUT / POST / DELETE 중 멱등인 것과 아닌 것은?


멱등 = 같은 요청을 여러 번 해도 결과가 한 번 한 것과 같음.

  • GET: 멱등 O (조회만)
  • PUT: 멱등 O (같은 내용으로 덮어쓰기)
  • DELETE: 멱등 O (보통, 지웠으면 또 지워도 없는 상태)
  • POST: 멱등 X (호출할 때마다 새로 생성될 수 있음)

Q2. 쿠키 HttpOnly / Secure

문제
쿠키의 HttpOnlySecure 옵션이 각각 뭐 하는 건지?

  • HttpOnly: JS에서 쿠키 읽기 불가 → XSS로 세션 탈취 어렵게
  • Secure: HTTPS에서만 쿠키 전송 → 평문 HTTP 도청 방지

인증/세션 쿠키에 자주 같이 붙인다.
(보너스: SameSite는 CSRF 완화)

Q3. Filter vs Interceptor

문제
Filter vs Interceptor 한 줄씩 차이 + 인증은 보통 어디에?

  • Filter: 서블릿 단 (DispatcherServlet )
  • Interceptor: Spring MVC (컨트롤러 전후)
  • 인증: Spring Security → Filter

css/js로 외우지 말고 서블릿 vs MVC로 구분한다.

Q4. @Transactional + this 호출

문제
@Transactional 메서드를 같은 클래스에서 this.xxx()로 호출하면
왜 트랜잭션이 안 먹을 수 있나?


트랜잭션은 프록시가 호출을 가로챌 때 적용된다.
this.xxx()는 프록시를 안 지나서 @Transactional이 적용되지 않을 수 있다.

해결: 트랜잭션 메서드를 다른 Bean으로 나눠 주입받아 호출.

Q5. ArrayList vs LinkedList

문제
ArrayList vs LinkedList 언제 뭘 쓰고,
실무에서 LinkedList를 잘 안 쓰는 이유는?

  • ArrayList: 배열 기반, 인덱스 접근 빠름. 실무 기본
  • LinkedList: 노드 연결, 중간 삽입/삭제 자체는 싸 보여도
    위치 찾기가 O(n)이고 캐시 지역성도 불리해서 잘 안 씀

둘 다 순서는 보장한다. 순서가 없어서 LinkedList를 안 쓰는 게 아니다.

Q6. SSR vs CSR

문제
SSR이랑 CSR 차이 한 줄, 각각 장점 한 줄.

  • SSR (Server-Side Rendering): 서버에서 HTML 생성
    → 첫 화면·SEO에 유리
  • CSR (Client-Side Rendering): 브라우저에서 JS로 렌더링
    → 화면 전환이 부드러움

SSR = 무조건 새로고침은 아니다. Next.js는 SSR과 CSR을 섞어 쓸 수 있다.

Q7. Connection Pool

문제
Connection Pool이 뭔지, 왜 요청마다 DB Connection을 새로 안 만드는지?


미리 DB 연결을 여러 개 만들어 두고, 요청 때 빌려 쓰고 반납하는 방식.
Connection 생성(TCP·인증) 비용이 커서 매번 만들면 느리고 DB 부하가 크다.

요청이 끝날 때 DB를 끊는 게 아니라 풀에 반납한다.
예: HikariCP (Spring Boot 기본)

오늘 한 줄 암기

  1. 멱등: GET·PUT·DELETE O / POST X
  2. HttpOnly = JS 차단 / Secure = HTTPS만
  3. 인증 = Filter, this 호출 = 트랜잭션 프록시 우회
  4. 실무 List 기본 = ArrayList
  5. Connection Pool = 빌려 쓰고 반납

다음 목표

  • 멱등성 + POST 재시도(중복) 방지까지 연결해서 말하기
  • LinkedList “순서 없음” 오해 교정 복습