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

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

Q1. Stream 중간 / 최종 연산

문제
차이? filter/map은? 실제 처리는 언제?

답

  • 중간 연산: filter, map, sorted — Stream 반환, lazy
  • 최종 연산: collect, forEach, count — 결과 확정, Stream 종료

실제 처리는 최종 연산 호출 시 시작. filter/map만 있으면 실행 안 함.

Q2. REQUIRES_NEW + 바깥 롤백

문제
바깥이 롤백되면 안쪽(REQUIRES_NEW)은?

답
REQUIRES_NEW는 별도 트랜잭션.
안쪽이 이미 커밋됐으면 바깥 롤백과 무관하게 남는다.

로그 저장 등 “본업무 실패해도 기록 유지”에 사용.

Q3. Using filesort

문제
EXPLAIN에 보이면? ORDER BY와 인덱스.

답
인덱스로 정렬을 못 해서 추가 정렬이 발생했다는 신호.
ORDER BY가 인덱스와 안 맞을 때 의심 → 정렬용 인덱스 검토.

Q4. CSRF 토큰

문제
동작 방식? 공격자 사이트 요청이 실패하는 이유.

답
서버가 예측 불가 토큰을 내려주고, 정상 요청만 토큰을 포함.
공격자 사이트는 토큰을 몰라 쿠키만으로는 통과 못 함.

CSRF 공격 = 로그인 사용자로 원치 않는 요청을 보냄.

Q5. key = index 위험

문제
정렬·삽입·삭제가 잦을 때.

답
index key면 순서 변경 시 다른 항목에 state가 잘못 재사용될 수 있다.
고유 id를 key로 쓴다.

Q6. Stream lazy (복습)

문제
filter/map만 하고 collect 없으면?

답
실제 처리 안 함. 최종 연산이 있어야 실행.

Q7. REQUIRES_NEW (복습)

문제
안쪽 커밋 후 바깥 롤백.

답
안쪽 데이터는 남는다.

오늘 한 줄 암기

  1. Stream = 중간 lazy / 최종에서 실행
  2. REQUIRES_NEW 커밋분 = 바깥 롤백과 분리
  3. Using filesort = 추가 정렬 (ORDER BY·인덱스)
  4. CSRF 토큰 = 쿠키만으로 부족
  5. 리스트 key = id (index 주의)

다음 목표

  • REQUIRES_NEW를 “새로 생성”만이 아니라 롤백 분리까지 말하기
  • Stream lazy를 한 줄로 설명하기