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

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

Q1. String.intern()

문제
뭐 하는 메서드? String pool과 연결.

답
문자열을 String pool에 등록/조회하고, 풀에 있는 참조를 반환한다.
리터럴은 자동으로 풀에 들어가고, new String은 intern()으로 풀 참조와 맞출 수 있다.

Q2. @Transactional 클래스 vs 메서드 / public

문제
우선순위? non-public이면?

답
메서드 설정이 클래스보다 우선.
Spring AOP 프록시는 보통 public만 가로채므로 private 등에 붙이면 안 먹을 수 있다.

Q3. UPDATE/DELETE 실수 방지

문제
LIMIT 없는 수정/삭제 위험? 습관 하나.

답
대량 변경·전체 삭제 위험.
같은 WHERE로 SELECT 먼저 확인 후 실행. WHERE 필수, 트랜잭션·safe updates 등.

Q4. Bearer Token

문제
뭔지? Authorization 헤더에서 Bearer 의미.

답
토큰을 가진 자(bearer) 를 인증하는 HTTP 방식.
Authorization: Bearer <token>으로 전달. JWT가 자주 쓰이지만 Bearer ≠ JWT만.

Q5. React 불변성

문제
push 말고 새 배열을 만드는 이유.

답
같은 배열을 변조하면 참조가 안 바뀌어 React가 변경을 못 보고 리렌더를 스킵할 수 있다.
새 배열/객체로 참조를 바꿔 상태를 갱신한다.

Q6. @Transactional 우선순위 (복습)

문제
클래스 vs 메서드? private?

답
메서드 우선. private는 안 먹을 수 있음.
(클래스 우선이라고 하면 오답)

Q7. 카디널리티 (복습)

문제
낮은 카디널리티 → 인덱스?

답
선택도가 낮아 인덱스로 걸러지는 행이 적음 → 인덱스 이득이 작다.

오늘 한 줄 암기

  1. intern = String pool 등록/조회
  2. @Transactional = 메서드 우선 + public
  3. 위험한 DML = SELECT로 먼저 확인
  4. Bearer = 토큰 소지자 인증 방식
  5. React state = 불변 업데이트 (참조 변경)

다음 목표

  • @Transactional 우선순위를 클래스 > 메서드로 뒤집지 않기
  • Bearer를 “JWT 그 자체”가 아니라 전달 방식으로 말하기