면접 CS 정리 Day 34 (풀스택 / Java·Spring·React)Q1. BigDecimal equals vs compareTo문제new BigDecimal("2.0").equals(new BigDecimal("2.00"))가 false일 수 있는 이유? 값 비교는?답BigDecimal.equals는 숫자 + 스케일(소수점 자릿수) 을 본다."2.0"(스케일 1)과 "2.00"(스케일 2)는 숫자는 같아도 equals는 false.숫자만 같으면 compareTo가 0인지 본다.==는 주소 비교다. 값 비교에 ==를 쓰지 않는다.Q2. @Cacheable문제뭐 하는 어노테이션? 같은 인자로 다시 호출하면 DB를 또 타나?답메서드 결과를 캐시한다. 같은 인자로 다시 호출하면 캐시 히트 시 본문(DB)..
면접 CS 정리 Day 33 (풀스택 / Java·Spring·React)Q1. Java record문제record가 뭔지? 불변 DTO에 쓰는 이유.답불변 데이터 운반용 타입. 생성자·접근자·equals/hashCode/toString 자동 생성.필드는 사실상 final. 어노테이션이 아니라 타입 선언. setter DTO보다 보일러플레이트↓.Q2. Request / Session 스코프문제@RequestScope / @SessionScope vs singleton.답singleton: 컨테이너당 1개request: HTTP 요청당 1개session: HTTP 세션당 1개Service는 거의 singleton. 요청별 상태를 singleton 필드에 넣지 말 것.Q3. DB 파티셔닝문제뭔지? 날짜별 나..
면접 CS 정리 Day 32 (풀스택 / Java·Spring·React)Q1. ThreadLocal문제뭔지? 요청 끝 remove() 이유.답스레드마다 따로 값을 담는 저장소.웹은 스레드 풀을 재사용하므로 remove() 안 하면 다음 요청이 같은 스레드를 받을 때 이전 사용자 정보가 남을 수 있다.“로컬에서 도는 스레드”가 아님.Q2. @SpringBootApplication문제합쳐진 어노테이션? 스캔 범위.답대략 @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan.스캔은 메인 클래스 패키지와 하위. 메인보다 위 패키지는 스캔 안 될 수 있음.Q3. SELECT * 피하기문제이유 2가지. 풀스캔인가?답불필요 컬럼 → 네트워크·메모..
면접 CS 정리 Day 31 (풀스택 / Java·Spring·React)Q1. String.intern()문제뭐 하는 메서드? String pool과 연결.답문자열을 String pool에 등록/조회하고, 풀에 있는 참조를 반환한다.리터럴은 자동으로 풀에 들어가고, new String은 intern()으로 풀 참조와 맞출 수 있다.Q2. @Transactional 클래스 vs 메서드 / public문제우선순위? non-public이면?답메서드 설정이 클래스보다 우선.Spring AOP 프록시는 보통 public만 가로채므로 private 등에 붙이면 안 먹을 수 있다.Q3. UPDATE/DELETE 실수 방지문제LIMIT 없는 수정/삭제 위험? 습관 하나.답대량 변경·전체 삭제 위험.같은 WHERE로 ..
면접 CS 정리 Day 30 (풀스택 / Java·Spring·React)Q1. ConcurrentModificationException문제언제 나나? 단일 스레드 for-each 중 remove도?답이터레이터(for-each) 순회 중 컬렉션 구조가 바뀌면 발생.한 스레드라도 ArrayList for-each 중 add/remove하면 날 수 있다 (fail-fast).삭제: Iterator.remove() / removeIf.Q2. @ControllerAdvice vs @RestControllerAdvice문제차이? API JSON 예외는?답@RestControllerAdvice = @ControllerAdvice + @ResponseBody→ 반환이 JSON 등 응답 본문. API는 보통 @Rest..
면접 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...