728x90

분류 전체보기 564

@Transactional의 동작

@Transactional(rollbackFor = Exception.class)🔹 기본 동작@Transactional은 기본적으로 RuntimeException과 Error가 발생하면 롤백합니다.즉, 체크 예외(Exception의 하위 클래스지만 RuntimeException이 아닌 것들)는 기본적으로 롤백 대상이 아닙니다.🔹 rollbackFor 옵션의 의미rollbackFor = Exception.class라고 지정하면, 체크 예외까지 포함해서 모든 예외가 발생하면 롤백하도록 강제합니다.기본값이 "모든 예외 롤백"이 아니라 "런타임 예외만 롤백"이기 때문에, 위처럼 명시적으로 지정하는 경우가 많습니다.🔹 왜 이렇게 쓰는가?비즈니스 로직에서 IOException, SQLException 같은 체..

IT/프로그래밍 2025.12.13

대규모 트래픽을 효율적으로 처리하기 위해 어떤 접근과 기술을 사용할 수 있나요?

📝 면접 질문"Java 웹 애플리케이션에서 대규모 트래픽을 효율적으로 처리하기 위해 어떤 아키텍처적 접근과 기술을 사용할 수 있나요?"💡 모범 답변스케일 아웃(Scale-out) 구조단일 서버 성능 향상보다 로드 밸런싱을 통한 서버 확장 방식을 선호합니다.Nginx, HAProxy 같은 로드 밸런서를 활용해 트래픽을 분산합니다.비동기 처리와 메시지 큐대량 요청을 동기적으로 처리하면 병목이 발생합니다.Kafka, RabbitMQ 같은 메시지 큐를 사용해 비동기 이벤트 기반 아키텍처를 구축합니다.캐싱 전략DB 부하를 줄이기 위해 Redis, Memcached 같은 인메모리 캐시를 적극 활용합니다.정적 리소스는 CDN을 통해 제공하여 서버 부담을 줄입니다.데이터베이스 최적화읽기/쓰기 분리(Replicati..

IT/개발자 면접 2025.12.10

SLOW SQL 수정할 때 고려사항

SLOW SQL 튜닝 시 가장 중요한 고려사항은 실행계획 분석, 인덱스 활용, SELECT 범위 최소화입니다. 이 세 가지가 성능 개선의 핵심이며, 그 외에도 조인 방식, 정렬/집계 처리, 통계 정보 최신화 등이 중요합니다.🚀 SLOW SQL 튜닝 핵심 고려사항 (중요도 순)1️⃣ 실행계획(Execution Plan) 분석가장 중요한 첫 단계: DB가 쿼리를 어떻게 수행하는지 확인확인 항목: 인덱스 사용 여부, 테이블 스캔 방식, 조인 순서, 예상 비용(Cost)도구: EXPLAIN, AUTOTRACE, SQL PLAN 등2️⃣ 인덱스 활용 여부WHERE 절, JOIN 조건에 인덱스 컬럼 사용 여부 확인주의: 함수 사용, 형 변환, OR 조건 등은 인덱스를 무효화할 수 있음대응: 인덱스 설계 최적화, ..

IT/개발자 면접 2025.11.22

java Call by Value와 Call by Reference

자바에서 Call by Value(값에 의한 호출)와 Call by Reference(참조에 의한 호출)의 차이는 '무엇이 전달되는가'에 있습니다. 자바는 기본적으로 Call by Value만 지원합니다.🔍 핵심 차이 요약항목 Call by Value (값에 의한 호출) Call by Reference (참조에 의한 호출)전달 방식변수의 값을 복사해서 전달변수의 *주소(참조)*를 전달원본 데이터 영향메서드 내에서 변경해도 원본에 영향 없음메서드 내에서 변경 시 원본 데이터도 변경됨자바에서의 지원✅ 기본형(primitive type)에 적용됨❌ 자바는 엄밀히 말해 Call by Reference를 지원하지 않음객체 전달 시객체의 참조값이 복사되어 전달됨 → 객체 내부는 변경 가능참조 자체를 바꾸는 건 불..

IT/개발자 면접 2025.11.21

웹 서버 취약점 목록 및 요약

웹 서버 취약점은 해커가 시스템을 침해하거나 정보를 탈취할 수 있는 보안상의 약점입니다. 주요 취약점은 OWASP Top 10과 일반적인 서버 취약점으로 나뉘며, 각각에 대한 이해와 대응이 필수입니다.🔐 대표적인 웹 서버 취약점 목록 및 요약✅ OWASP Top 10 기반 주요 취약점OWASP(Open Web Application Security Project)는 웹 보안의 표준 가이드라인을 제공합니다:Broken Access Control (접근 제어 실패)권한 없는 사용자가 관리자 기능에 접근 가능대응: 역할 기반 접근 제어(RBAC), 서버 측 권한 검증Cryptographic Failures (암호화 실패)민감 정보가 평문으로 저장되거나 전송됨대응: HTTPS 사용, 강력한 암호화 알고리즘 적용..

IT/개발자 면접 2025.11.21

java Overloading과 Overriding

자바에서 오버로딩과 오버라이딩은 모두 메서드를 다형적으로 사용하는 방식이지만, 목적과 사용 방식이 다릅니다.🔁 오버로딩 (Overloading)같은 이름의 메서드를 매개변수만 다르게 정의하는 것정의 위치: 같은 클래스 내에서 사용조건:메서드 이름은 같음매개변수의 개수, 타입, 순서 중 하나 이상이 달라야 함리턴 타입만 다르면 오버로딩 불가능예시:void print() {} void print(String s) {} void print(int x, int y) {}용도: 다양한 입력에 대해 같은 기능을 수행하고 싶을 때🔄 오버라이딩 (Overriding)상위 클래스의 메서드를 하위 클래스에서 재정의하는 것정의 위치: 상속 관계에서 하위 클래스에서 사용조건:메서드 이름, 매개변수, 리턴 타입 모두 동일해..

IT/개발자 면접 2025.11.20

DB 복합 인덱스

복합 인덱스를 설계할 때는 컬럼 순서와 사용 패턴을 고려하는 것이 핵심입니다. 잘못 설계하면 오히려 성능 저하를 초래할 수 있습니다.다음은 복합 인덱스 설계 시 반드시 유의해야 할 주요 사항들입니다:✅ 1. 컬럼 순서: 왼쪽 우선 원칙복합 인덱스는 왼쪽부터 순차적으로만 활용됩니다.예: (A, B, C) 인덱스는 A, (A, B), (A, B, C) 조건에서만 효율적입니다.B나 C만 사용하는 조건에서는 인덱스가 무시될 수 있습니다.✅ 2. 조회 패턴 기반 설계WHERE, JOIN, ORDER BY, GROUP BY 절에서 자주 사용되는 컬럼을 기준으로 인덱스를 설계합니다.자주 함께 조회되는 컬럼은 하나의 복합 인덱스로 묶는 것이 효율적입니다.✅ 3. 카디널리티 고려**고유 값이 많은 컬럼(높은 카디널리티)..

IT/개발자 면접 2025.11.20

단일 서버에서 JWT를 피해야 하는 이유

단일 서버 기반의 간단한 웹 서비스에서는 JWT(Json Web Token) 사용이 오히려 불필요하거나 비효율적일 수 있습니다. 그 이유를 아래와 같이 설명드릴게요:❌ 단일 서버에서 JWT를 피해야 하는 이유1. 토큰 무효화가 어렵다JWT는 Stateless 인증 방식이라 서버가 토큰 상태를 저장하지 않습니다.로그아웃, 권한 변경, 계정 정지 등 상황에서 즉시 토큰을 무효화할 수 없습니다.단일 서버에서는 세션 기반 인증이 더 적합하며, 세션 삭제만으로 인증을 종료할 수 있습니다.2. 보안 리스크 증가JWT는 클라이언트에 저장되며, 탈취되면 유효 기간 동안 악용될 수 있습니다.단일 서버에서는 세션 쿠키를 HttpOnly로 설정하면 XSS 공격에 더 안전합니다.3. 복잡도 증가JWT는 서명 키 관리, 토큰 ..

IT/개발자 면접 2025.11.19

JWT 장점과 단점

JWT의 장점은 확장성과 자체 검증 가능성이고, 단점은 보안 취약성과 토큰 무효화 어려움입니다. 사용 목적에 따라 신중한 선택이 필요합니다.✅ JWT의 장점자체 검증 가능 (Stateless)서버가 토큰을 직접 검증할 수 있어 세션 저장소가 필요 없음. 분산 시스템에서 유리함.빠른 인증 처리토큰에 사용자 정보가 포함되어 있어 별도 DB 조회 없이 인증 가능. 성능 향상에 기여.다양한 전달 방식JWT는 HTTP 헤더, URL, 쿠키 등 다양한 방식으로 전달 가능. 유연한 구조.표준화된 포맷JSON 기반으로 구조가 명확하고, 다양한 언어/플랫폼에서 쉽게 사용 가능.확장성여러 서비스 간 인증 정보 공유가 쉬워 마이크로서비스 아키텍처에 적합.⚠️ JWT의 단점토큰 무효화 어려움서버가 상태를 저장하지 않기 때문에..

IT/개발자 면접 2025.11.18

Controller 와 RestController 차이

@RestController는 @Controller + @ResponseBody의 조합으로, 주로 JSON 형태의 데이터를 반환할 때 사용됩니다. 반면 @Controller는 주로 HTML 뷰를 반환하는 데 사용됩니다.🧩 @Controller vs @RestController 차이점항목 @Controller @RestController주 용도웹 페이지(HTML) 반환JSON, XML 등 데이터 반환반환값 처리뷰 리졸버(ViewResolver)가 처리@ResponseBody로 직접 HTTP 응답 본문에 출력사용 예return "home"; → home.html 렌더링return user; → JSON 형태로 반환주로 사용하는 곳MVC 기반 웹 애플리케이션RESTful API 서버✅ 예시 코드 비교1. @..

IT/개발자 면접 2025.11.17
728x90
반응형