1. Java & Spring (동작 원리와 함정)
HashMap의 Key로 Member 객체를 사용하여 데이터를 넣었습니다. 이후 Member 객체의 필드 값을 변경했더니, map.get(member)로 조회해도 데이터가 null이 나옵니다.
Q1. 데이터가 삭제된 것도 아닌데 왜 조회가 안 되는 걸까요?
싱글톤인 OrderService 내부에서 @Scope("prototype")인 Cart 빈을 주입받아 사용 중입니다. 요청마다 새로운 장바구니가 생성되길 기대했으나, 실제로는 하나의 객체만 계속 공유되고 있습니다.
Q2. 프로토타입으로 설정했는데 왜 객체가 새로 생성되지 않을까요?
@Transactional 메서드 안에서 로직을 수행하다가 IOException(Checked Exception)이 발생했습니다. 그런데 DB 데이터는 롤백되지 않고 그대로 커밋되었습니다.
Q3. 예외가 터졌는데도 롤백되지 않은 기술적 이유는 무엇인가요?
Spring Security의 Filter 단계에서 인증 예외를 던졌는데, @RestControllerAdvice가 이 예외를 잡지 못하고 500 에러(혹은 톰캣 에러 페이지)가 떴습니다.
Q4. 전역 예외 처리기가 작동하지 않은 이유는 무엇인가요?
2. JPA & Database (성능 최적화)
JPA에서 @Modifying 쿼리로 '모든 회원의 나이를 +1' 업데이트했습니다. 직후 같은 트랜잭션에서 회원을 조회했더니 나이가 그대로였습니다.
Q5. DB는 업데이트되었는데 조회된 엔티티는 왜 그대로일까요?
대량의 데이터를 넣기 위해 JDBC Batch 설정을 켰습니다. 하지만 PK 전략이 IDENTITY(AU1TO_INCREMENT)인 엔티티는 배치가 작동하지 않고 한 건씩 INSERT 되었습니다.
Q6. IDENTITY 전략에서 Batch Insert가 안 되는 기술적 이유는 무엇인가요?
문자열(VARCHAR)로 된 phone_number 컬럼에 인덱스가 있습니다. 그런데 WHERE phone_number = 01012345678 (숫자)로 조회하니 풀 스캔(Full Scan)이 발생했습니다.
Q7. 인덱스를 타지 않은 결정적인 이유는 무엇인가요?
게시판 페이지가 뒤로 갈수록(10,000페이지) 조회 속도가 현저히 느려집니다. 쿼리는 LIMIT 100000, 10 입니다.
Q8. 속도 저하의 원인과 해결책인 'No-Offset' 방식의 원리는 무엇인가요?
3. 운영 & 아키텍처 (안정성)
디버깅을 위해 코드 곳곳에 System.out.println을 찍어서 배포했습니다. 트래픽이 몰리자 서버 CPU가 치솟고 멈춰버렸습니다.
Q9. 단순히 콘솔에 출력했을 뿐인데 왜 성능에 치명적인가요?
API 요청 로그를 남기기 위해 인터셉터에서 request.getInputStream()을 읽었습니다. 이후 컨트롤러에서 'Stream closed' 에러가 발생하며 본문을 읽을 수 없었습니다.
Q10. 이 문제를 해결하기 위해 어떤 처리가 필요한가요?
해당 댓글은 삭제되었습니다.
너 1번논리가 객체주소를 기반으로 해시키설정하는거명 객체의 필드값을 변경하능대 객체주소가 왜바뀡?
자바전혀모르는 프론트충인데 첫번째 답 궁금하다
걍 필드가 바뀌면 해시코드가 바껴서 그래
놀랍다..! 자바..!
프론트 문제도 내줘
알써한번내볼게나두 ㅎㅎ
문제 좋네요 개추
9번은 고려할게 너무많응대 만약에 print 출력을 담당하능 memory가 cache위에올려져있다면 저런상황은 발생하지않을거같공 그렇지않으명 sequential 하겡 프로그래밍언어코드를 실행하공 memory access time cache access에 비행 몇십배 길어서 그럴거같응 가장결정적인건 sequential하겡 실행되서그럴등
1.주소값2한번생성3.기본설정 예외내부동작으로 커밋은 실행 4.컨트롤러 도달전 체인에서 실패 인증인가 예외처리 5.캐시문제 똑같은 메모리주소값 6.인서트 즉시실행이랑 키 생성때문에 7.디비 암묵형변환시 인덱스 사용불가 8. 앞에서 읽고 버리는 비용이 증가9.시스템내부동기화로다중 스레드락경쟁10단방향이라 바디를 바이트처리 htypservlet
임마 뮨제 재밌노 - dc App