2024/08/20 3

N+1 문제의 발생 이유와 해결 방법에 대해 설명해주실 수 있을까요? 해결 방법은 3가지 이상

N+1 문제는 ORM(Object-Relational Mapping) 프레임워크에서 자주 발생하는 성능 문제 중 하나로, 주로 여러 개의 연관된 엔터티를 로드할 때 발생합니다.발생 이유:예를 들어, 하나의 엔티티(예: Order)를 조회할 때, 이 엔티티와 연관된 다른 엔티티(예: OrderItem)를 조회하기 위해 추가적인 쿼리가 발생합니다.만약 Order 1개에 대해 OrderItem을 N개 가져와야 하는 상황이라면, 첫 번째 Order를 가져오는 1번의 쿼리 외에 각 OrderItem을 가져오기 위한 N번의 쿼리가 추가로 발생하게 됩니다.즉, 총 N+1번의 쿼리가 실행되므로 데이터베이스 부하가 증가하고 성능이 저하됩니다. 해결 방법:즉시 로딩 (Eager Fetching) 또는 지연 로딩 (Lazy..

기술면접 준비 2024.08.20

Spring Security의 구조와 JWT 발급 과정에 대해 설명해주실 수 있을까요?

Spring Security는 Spring 애플리케이션에서 인증과 권한 부여를 담당하는 프레임워크입니다. Spring Security의 주요 구조와 JWT 발급 과정은 다음과 같습니다:  Spring Security의 구조:SecurityContext:현재 사용자(Principal)에 대한 보안 정보를 저장합니다.SecurityContextHolder를 통해 어디서나 접근할 수 있습니다.Authentication:사용자의 인증 정보를 나타내며, Principal, Credentials, Authorities 등을 포함합니다.AuthenticationManager:사용자 인증을 처리하는 인터페이스입니다.일반적으로 ProviderManager가 구현체로 사용되며, 여러 AuthenticationProvide..

기술면접 준비 2024.08.20

Annotation이란 무엇이고 구체적으로 어떤 것이 있는지 예시를 들어 설명해주실 수 있을까요?

Annotation은 메타데이터의 일종으로, 주로 소스 코드에서 클래스, 메서드, 필드 등에 추가적인 정보를 제공하기 위해 사용됩니다. 주석처럼 코드 실행에 직접적인 영향을 주지 않지만, 컴파일러나 런타임에 의해 해석되어 특정 동작을 수행할 수 있게 합니다.Annotation은 주로 다음과 같은 역할을 합니다:컴파일러 지시: 코드 작성 시 컴파일러에게 특정 경고를 무시하게 하거나, 코드에 오류가 있는지 검사하도록 지시할 수 있습니다.런타임 처리: 런타임에 리플렉션을 통해 Annotation 정보를 읽어 동작을 제어할 수 있습니다.코드 문서화: 코드에 대한 메타정보를 추가하여, 코드가 어떤 역할을 하는지 명확히 할 수 있습니다.주요 Annotation 예시:@Override:메서드 위에 사용되며, 부모 클..

기술면접 준비 2024.08.20