면접 CS 정리 Day 2 (풀스택 / Java·Spring·React)
Q1. Spring Bean 스코프
문제
Spring Bean 기본 스코프는 뭐고, singleton이랑 prototype 차이는?
답
- 기본 스코프는
singleton singleton: 컨테이너당 Bean 1개 공유prototype: 가져올 때마다 새 객체 생성
singleton Service에 요청별 상태(currentUserId 필드 등)를 넣으면
여러 요청이 같은 인스턴스를 공유해서 위험하다.
Q2. Checked vs Unchecked Exception
문제Checked Exception이랑 Unchecked Exception 차이?@Transactional 기본 롤백이랑 어떻게 연결되는지?
답
- Checked:
IOException,SQLException등 — 컴파일러가 처리 강제 - Unchecked:
RuntimeException계열 —IllegalArgumentException,NPE, 보통의BusinessException
@Transactional 기본:
- unchecked → 롤백
- checked → 롤백 안 함
checked도 롤백하려면@Transactional(rollbackFor = Exception.class)
(@Rollback 아님)
Q3. MyBatis #{} vs ${}
문제
MyBatis에서 #{}이랑 ${} 차이? 왜 기본은 #{}를 쓰는지?
답
#{}: PreparedStatement 파라미터 바인딩 → SQL Injection 방어에 유리${}: 문자열 그대로 치환 → 위험
기본은 #{}.${}는 테이블명·컬럼명·ORDER BY처럼 바인딩이 안 될 때만,
사용자 입력을 직접 넣지 말고 화이트리스트로 제한한다.
Q4. INNER JOIN vs LEFT JOIN
문제INNER JOIN이랑 LEFT JOIN 차이? 매칭 안 되는 행 기준으로.
답
INNER JOIN: 양쪽 테이블에서 매칭되는 행만 (교집합)LEFT JOIN: 왼쪽 테이블 전부 + 오른쪽이 없으면NULL
Q5. accessToken / refreshToken
문제
JWT 로그인에서 accessToken이랑 refreshToken을 왜 나누는지?
access는 짧게, refresh는 길게 두는 이유는?
답
JWT는 탈취되면 만료 전까지 쓰일 수 있다.
그래서 API에 쓰는 accessToken은 짧게 두어 피해 구간을 줄이고,
만료 시 refreshToken으로 access를 재발급한다.
Q6. useEffect 의존성 배열
문제
React useEffect 의존성 배열이 [] / 없음 / [id]일 때 각각 언제 실행되나?
답
[]→ 마운트 시 1번- 없음 → 매 렌더마다
[id]→ 마운트 +id변경 시
Q7. DB 중복 신청 방지
문제
같은 휴가/출퇴근이 동시에 두 번 신청되는 걸 막으려면
앱 클릭 방지 말고 DB에서 쓸 수 있는 방법은?
답(user_id, 날짜) 같은 컬럼 조합에 UNIQUE 제약을 건다.
동시 요청이 와도 하나는 중복 키 에러로 막힌다.
(프론트 연속클릭 방지만으론 부족 — DB가 최종 방어선)
오늘 한 줄 암기
- Bean 기본 스코프 =
singleton/prototype= 매번 새로 @Transactional기본 롤백 = unchecked만- MyBatis
#{}바인딩 /${}치환 - access 짧게 + refresh로 재발급
- 중복 방지 = UNIQUE 제약
'기타 > CS 질문' 카테고리의 다른 글
| # 면접 CS 정리 Day 6 (풀스택 / Java·Spring·React) (0) | 2026.08.10 |
|---|---|
| # 면접 CS 정리 Day 5 (풀스택 / Java·Spring·React) (1) | 2026.08.05 |
| # 면접 CS 정리 Day 4 (풀스택 / Java·Spring·React) (0) | 2026.08.03 |
| # 면접 CS 정리 Day 3 (풀스택 / Java·Spring·React) (0) | 2026.07.31 |
| # 면접 CS 정리 Day 1 (풀스택 / Java·Spring·React) (0) | 2026.07.29 |
