기술면접 준비 24

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

MVC 모델이란 무엇인지 설명해주실 수 있을까요?

MVC(Model-View-Controller) 모델은 애플리케이션의 구조를 세 가지 주요 컴포넌트로 분리하여 관리하는 소프트웨어 디자인 패턴입니다. 이는 애플리케이션의 유지보수성과 확장성을 높이는 데 중요한 역할을 합니다. Model: 모델은 애플리케이션의 데이터와 비즈니스 로직을 관리합니다. 데이터베이스와의 상호작용, 비즈니스 규칙 처리 등이 모델의 책임입니다. 모델은 데이터를 변환하거나 가공하여 뷰에 제공할 준비를 합니다. View: 뷰는 사용자 인터페이스를 담당합니다. 사용자가 볼 수 있는 화면을 구성하며, 모델에서 제공받은 데이터를 기반으로 시각적인 출력을 생성합니다. 뷰는 사용자에게 데이터를 표시하고, 사용자의 입력을 컨트롤러로 전달합니다. Controller: 컨트롤러는 모델과 뷰를 연결하는..

기술면접 준비 2024.08.13

DI와 IoC에 대해 아는 만큼 설명해주실 수 있을까요?

DI(Dependency Injection)와 IoC(Inversion of Control)는 객체 지향 프로그래밍에서 소프트웨어 컴포넌트 간의 결합도를 낮추기 위해 사용하는 개념들입니다.  IoC(Inversion of Control, 제어의 역전): 전통적인 절차 지향 프로그래밍에서는 프로그램의 흐름을 개발자가 직접 제어합니다. 그러나 IoC는 이 흐름의 제어권을 프레임워크나 컨테이너가 대신 가지도록 하여, 개발자가 신경 써야 할 부분을 줄여줍니다. 대표적으로 Spring 프레임워크에서 IoC 컨테이너가 객체의 생성과 생명 주기를 관리합니다.  DI(Dependency Injection, 의존성 주입): DI는 IoC의 구현 방법 중 하나로, 객체가 필요로 하는 의존성을 외부에서 주입하는 방식입니다...

기술면접 준비 2024.08.13

Java Map의 내부 구현은 어떻게 이루어져 있을지 추측해보실 수 있을까요?

Java 에는 Map 이라는 인터페이스 도구가 있다.대표적으로 Map, HashMap, TreeMap, LinkedHashMap이 있다. 각 Map 인터페이스들의 구조에 대해 정리해보자.  Map기본적으로 Map은 key-value 구조로 구성되어 데이터를 저장할 수 있다.key를 가지고 저장된 value를 찾을 수 있다. key를 이용하여 데이터 검색에 최적화되어있으나, 동일한 key 에 다른 데이터 value가 저장되어 있을 경우 기존에 저장된 데이터는 덮어씌워져 사라진다.따라서, 중복된 key는 존재할 수 없다.  HashMapHashMap은 Hash Table 을 이용하여 만들어졌다.Hash Table은 key 와 value를 저장하며, key를 이용하여 빠르게 데이터를 찾기 위한 자료구조를 가지..

기술면접 준비 2024.08.13

가비지 컬렉션 요약

Garbage Collection(GC) 이란?가비지 컬렉션(Garbage Collection, 이하 GC)은 자바의 메모리 관리 방법 중의 하나로 JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스를 말한다.  C / C++ 언어에서는 이러한 가비지 컬렉션이 없어 프로그래머가 수동으로 메모리 할당과 해제를 일일이 해줘야 했었다.반면 Java에서는 가비지 컬렉터가 메모리 관리를 대행해주기 때문에 Java 프로세스가 한정된 메모리를 효율적으로 사용할수 있게 하고, 개발자 입장에서 메모리 관리, 메모리 누수(Memory Leak) 문제에서 대해 관리하지 않아도 되어 오롯이 개발에만 집중할 수 있다는 장점이 있다.

기술면접 준비 2024.08.06

가비지 컬렉션 동작 원리 & GC 종류 총정리

Garbage Collection(GC) 이란?가비지 컬렉션(Garbage Collection, 이하 GC)은 자바의 메모리 관리 방법 중의 하나로 JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스를 말한다.  C / C++ 언어에서는 이러한 가비지 컬렉션이 없어 프로그래머가 수동으로 메모리 할당과 해제를 일일이 해줘야 했었다.반면 Java에서는 가비지 컬렉터가 메모리 관리를 대행해주기 때문에 Java 프로세스가 한정된 메모리를 효율적으로 사용할수 있게 하고, 개발자 입장에서 메모리 관리, 메모리 누수(Memory Leak) 문제에서 대해 관리하지 않아도 되어 오롯이 개발에만 집중할 수 있다는 장점이 있..

기술면접 준비 2024.08.06

클래스와 인스턴스의 차이

📖 클래스(Class)란?Java에서 객체를 생성하기 위한 일종의 설계도이다.흔히 붕어빵(객체)를 만들기 위한 붕어빵 틀(클래스)이라고 비유를 한다.객체가 가지는 속성(필드)와 동작(메서드)으로 이루어져 있다.이들은 생략될 수도 있고 하나 이상 작성될 수도 있다.Java를 실행 시 클래스는 JVM 메모리의 클래스 영역(Class Area)에 로드된다. 📖 인스턴스(Instance)란?클래스가 붕어빵 틀이라면, 그 틀을 통해 생성된 객체(붕어빵) 하나하나를 해당 클래스의 인스턴스라 한다.클래스를 사용하여 힙 영역(Heap Area)에 새로운 인스턴스(객체)를 생성할 수 있다.즉, 인스터스란 현실의 객체를 소프트웨어 내에서 구현한 실체라고 볼 수 있다.📖 요약객체(Object)란 자신 고유의 속성을 가..

기술면접 준비 2024.08.06

그림으로 보는 자바 코드의 메모리 영역(스택 & 힙)

자바의 메모리 영역이번 포스팅에선 자바(JAVA)를 사용하는 입장에서 알아야 할 메모리 구조 및 특징에 대해서 알아보려고 한다.자바 프로그램이 실행되면 JVM(자바 가상 머신)은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라서 여러 영역으로 나누어 관리를 한다.JVM의 메모리 공간(Runtime Data Area)은 크게 Method(Static) 영역, Stack 영역, Heap 영역으로 구분되고 데이터 타입(자료형)에 따라 각 영역에 나눠서 할당 되게 된다. https://blog.naver.com/chlwlstjd10/222239136195  컴퓨터의 메모리는 사용할 수 있는 공간이 한정되어 있기 때문에 어떻게 관리하느냐에 따라서 프로그램의 성능(속도 등)이 좌우된다.그래서 메모리 설계가 ..

기술면접 준비 2024.08.06