면접 CS 정리 Day 8 (풀스택 / Java·Spring·React)
Q1. String / StringBuilder / StringBuffer
문제String / StringBuilder / StringBuffer 차이?
루프에서 문자열을 +로 이어 붙이면 왜 안 좋은지?
답
String: 불변. 더하면 새 객체 생성StringBuilder: 가변, 동기화 없음 → 일반 추천StringBuffer: 가변, 동기화 있음 → 멀티스레드용
루프에서 str = str + "x"는 매번 새 String이 생겨 느리고 GC 부담이 크다.
반복 연결은 StringBuilder를 쓴다.
Q2. Bean 스코프 + singleton 위험
문제
Bean 기본 스코프는? singleton에 요청별 상태 필드를 두면 왜 위험한지?
답
기본 스코프는 singleton (컨테이너당 1개 공유).
모든 요청이 같은 인스턴스를 쓰므로 currentUserId 같은
요청별 상태를 필드에 두면 사용자 정보가 섞일 수 있다.
Q3. 생성자 주입
문제
생성자 주입을 필드 주입보다 선호하는 이유 2가지?
답
- 테스트 시 mock을 생성자로 넣기 쉬움
final로 필수 의존성을 명시·불변 유지
의존성 누락 시 객체 생성이 실패해 문제를 빨리 발견한다.
Q4. EXPLAIN
문제EXPLAIN에서 슬로우 쿼리일 때 먼저 볼 키워드 2개?
답
type:ALL이면 full scan 의심key: 사용한 인덱스 (NULL이면 인덱스를 못 탐)
보너스: rows (예상 행 수)
Q5. XSS / CSRF
문제
XSS / CSRF 차이 한 줄씩 + 각각 막는 방법 하나씩?
답
- XSS: 페이지에 악의적 스크립트 삽입·실행
→ 출력 Escape, Lucy 필터, 쿠키HttpOnly - CSRF: 로그인된 사용자에게 원치 않는 요청을 보냄
→ CSRF 토큰, 쿠키SameSite, Spring Security CSRF
Q6. useEffect 의존성
문제useEffect 의존성 [] / 없음 / [id] 각각 언제 실행?
답
[]: 마운트 시 1번- 없음: 매 렌더마다
[id]: 마운트 +id변경 시
Q7. GET으로 상태 변경 금지
문제GET으로 서버 상태를 바꾸면 안 되는 이유?
답GET은 safe해야 한다 → 조회만, 상태 변경 X.
브라우저 프리페치·크롤러·캐시가 GET을 자동 호출할 수 있고,
URL/로그에 남아 의도치 않은 변경이 생길 수 있다.
변경은 POST/PUT/PATCH/DELETE.POST가 무조건 더 보안인 것은 아니고, 메서드 의미가 다르다.
오늘 한 줄 암기
- 반복 문자열 =
StringBuilder - singleton + 요청별 필드 = 위험
- EXPLAIN:
type,key - CSRF = 토큰 / SameSite
- GET = safe (조회만)
다음 목표
- GET 금지 이유를 “POST가 더 보안”이 아니라 safe/프리페치로 말하기
- StringBuilder vs StringBuffer (동기화 유무) 구분
'기타 > CS 질문' 카테고리의 다른 글
| # 면접 CS 정리 Day 10 (풀스택 / Java·Spring·React) (0) | 2026.08.14 |
|---|---|
| # 면접 CS 정리 Day 9 (풀스택 / Java·Spring·React) (0) | 2026.08.13 |
| # 면접 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 |
