면접 CS 정리 Day 9 (풀스택 / Java·Spring·React)
Q1. equals + hashCode
문제HashMap에 커스텀 객체를 key로 쓸 때 equals와 hashCode를 같이 오버라이드해야 하는 이유는?
답HashMap은 hashCode로 버킷 위치를 찾고, 그 안에서 equals로 같은 key인지 판단한다.equals가 true면 hashCode도 같아야 하므로 둘 다 오버라이드한다.
Q2. Checked / Unchecked + 롤백
문제Checked / Unchecked Exception 차이? @Transactional 기본 롤백은?
답
- Checked:
IOException등 — 컴파일러가 처리 강제 - Unchecked:
RuntimeException계열 — 보통BusinessException도 여기
@Transactional 기본 롤백 = unchecked만.
checked도 롤백하려면 @Transactional(rollbackFor = Exception.class).
Q3. 복합 인덱스
문제
복합 인덱스 (user_id, created_at)에서 WHERE created_at = ?만 쓰면 왜 잘 못 타나?
답
복합 인덱스는 왼쪽 컬럼부터 의미가 있다.
앞 컬럼(user_id) 없이 뒤 컬럼만 쓰면 인덱스를 잘 못 탄다.
Q4. 401 vs 403
문제401 vs 403 한 줄씩.
답
401: 인증 실패 (로그인/토큰 없음·만료)403: 인증은 됐지만 권한 없음
Q5. N+1
문제
N+1 문제가 뭔지, MyBatis/JPA에서 줄이는 방법 하나?
답
목록 1번 조회 후 연관 데이터를 건마다 N번 추가 조회하는 문제.
- MyBatis:
JOIN또는IN일괄 조회 - JPA:
fetch join,@EntityGraph등
Q6. access / refresh Token
문제
JWT에서 accessToken을 짧게, refreshToken을 길게 두는 이유는?
답
access가 탈취돼도 짧은 만료로 피해 구간을 줄이고,
만료 시 refresh로 access를 재발급하기 위해서다.
Q7. Filter vs Interceptor
문제Filter vs Interceptor 인증은 어디에 두는지 + 이유 한 줄?
답
- Filter: 서블릿 단 (
DispatcherServlet앞) - Interceptor: Spring MVC (컨트롤러 전후)
- 인증: Spring Security가 Filter 체인에서 동작하므로 보통 Filter
css/js로 외우지 말고 서블릿 vs MVC로 구분한다.
오늘 한 줄 암기
- HashMap key =
hashCode(버킷) +equals(동일 판단) - 기본 롤백 = unchecked
- 복합 인덱스 = 좌측 접두어
- 401 인증 / 403 권한
- 인증 = Filter (Security)
다음 목표
- equals/hashCode를 “버킷 + 동일 키 판단” 두 단계로 말하기
- Filter를 css/js가 아니라 서블릿 단으로 설명하기
'기타 > CS 질문' 카테고리의 다른 글
| # 면접 CS 정리 Day 10 (풀스택 / Java·Spring·React) (0) | 2026.08.14 |
|---|---|
| # 면접 CS 정리 Day 8 (풀스택 / Java·Spring·React) (0) | 2026.08.12 |
| # 면접 CS 정리 Day 7 (풀스택 / Java·Spring·React) (0) | 2026.08.12 |
| # 면접 CS 정리 Day 6 (풀스택 / Java·Spring·React) (0) | 2026.08.10 |
| # 면접 CS 정리 Day 5 (풀스택 / Java·Spring·React) (1) | 2026.08.05 |
