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

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

Q1. ThreadLocal

문제
뭔지? 요청 끝 remove() 이유.

답
스레드마다 따로 값을 담는 저장소.
웹은 스레드 풀을 재사용하므로 remove() 안 하면 다음 요청이 같은 스레드를 받을 때 이전 사용자 정보가 남을 수 있다.

“로컬에서 도는 스레드”가 아님.

Q2. @SpringBootApplication

문제
합쳐진 어노테이션? 스캔 범위.

답
대략 @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan.
스캔은 메인 클래스 패키지와 하위. 메인보다 위 패키지는 스캔 안 될 수 있음.

Q3. SELECT * 피하기

문제
이유 2가지. 풀스캔인가?

답

  1. 불필요 컬럼 → 네트워크·메모리 낭비
  2. 커버링 인덱스가 깨져 테이블 재접근

SELECT * ≠ 바로 풀스캔. 풀스캔은 WHERE/인덱스 이슈에 가깝다.

Q4. HTTPS 인증서 만료 / 검증

문제
만료 시? 인증서 검증 이유.

답
브라우저 경고/차단. HTTP로만 열린다는 뜻은 아님.
검증 = 서버가 진짜인지 확인 → 중간자(MITM) 방지.

Q5. useId

문제
뭔지? SSR에서 id를 맞추는 이유.

답
컴포넌트용 고유 id 훅 (label/input 연결 등).
SSR hydration 때 서버·클라이언트 HTML id가 같아야 해서, 일관된 id를 제공한다.
라우팅 인덱스와 무관.

Q6. ThreadLocal (복습)

문제
remove 안 하면?

답
같은 스레드 재사용 시 이전 요청 정보가 남을 수 있음.

Q7. @Transactional (복습)

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

답
메서드 우선. private는 프록시 미적용 → 트랜잭션 안 먹을 수 있음.

오늘 한 줄 암기

  1. ThreadLocal = 스레드별 저장소 → 끝이면 remove
  2. Boot 스캔 = 메인 패키지 이하
  3. SELECT * ≠ 풀스캔, 불필요 I/O·커버링 깨짐
  4. 인증서 = MITM 방지 / 만료 = 경고
  5. useId = SSR용 안정적 고유 id

다음 목표

  • SELECT *를 풀스캔 원인으로 단정하지 않기
  • ThreadLocal을 “로컬 스레드”로 말하지 않기