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

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

Q1. Integer 캐시

문제
Integer 100은 == true, 200은 false일 수 있는 이유?

답
자바는 Integer -128~127을 캐시해 재사용한다.
캐시 안이면 같은 객체 → == true, 밖이면 새 객체 → == false.

값 비교는 항상 equals. ==는 참조 비교.

Q2. 순환 참조 (circular dependency)

문제
순환 참조가 뭔지? 생성자 주입이면 왜 실패하나?

답
A↔B처럼 Bean이 서로 주입받는 구조.
생성자 주입은 생성 시점에 의존성이 이미 있어야 해서 서로 기다리며 기동 실패.

실행 중 무한 루프라기보다 Bean 생성 순서 문제.
해결: 의존 분리, 이벤트/인터페이스. @Lazy는 우회일 뿐.

Q3. NULL 비교

문제
WHERE col = NULL이 안 되는 이유? 대신?

답
NULL은 = 비교가 true가 되지 않는다 (unknown).
WHERE col IS NULL / IS NOT NULL을 쓴다.

Q4. HTTP/1.1 vs HTTP/2

문제
차이? 같은 연결에서 요청을 동시에 보내는 쪽은?

답
HTTP/2. 한 연결에서 스트림으로 멀티플렉싱.
HTTP/1.1은 한 연결에서 요청을 보통 순차로 처리해 앞 요청이 뒤를 막을 수 있다.

Q5. useEffect vs useLayoutEffect

문제
페인트 전/후 기준 차이.

답

  • useEffect: 화면 그린 뒤 (API 등)
  • useLayoutEffect: DOM 반영 후, 그리기 전 (측정·동기 DOM 보정)

Q6. 커버링 인덱스 (복습)

문제
테이블 전체 컬럼 인덱스인가?

답
아님. 그 쿼리에 필요한 컬럼이 인덱스에 있으면 테이블 본문 없이 조회.

Q7. REQUIRES_NEW (복습)

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

답
안쪽은 별도 트랜잭션이라 커밋분 유지. 바깥 롤백에 같이 안 풀림.

오늘 한 줄 암기

  1. Integer -128~127 캐시 → == 함정 / 비교는 equals
  2. 순환 참조 = Bean 생성 서로 대기 → 기동 실패
  3. NULL = IS NULL (= 아님)
  4. HTTP/2 = 멀티플렉싱
  5. 커버링 = 쿼리 필요 컬럼이 인덱스에 (전체 테이블 X)

다음 목표

  • 커버링 인덱스를 또 “전체 컬럼”으로 말하지 않기
  • Integer ==를 equals/주소만으로 뭉개지 말고 캐시 범위로 말하기