hayu's 개발 일지

99클럽 코테 스터디 22일차 TIL + 면접(JAVA, CS 공부)준비 본문

IT 개념 정리 & ETC

99클럽 코테 스터디 22일차 TIL + 면접(JAVA, CS 공부)준비

hayu00 2024. 6. 11. 20:16

학습 키워드

- 면접(JAVA, CS 공부)준비

 

공부한 내용

N+1 문제의 발생 이유와 해결 방법에 대해 설명해주실 수 있을까요? 해결 방법은 3가지 이상 말씀해주시면 좋습니다.

→ N+1 쿼리는 jpa의 프록시로 인한 지연 로딩때문에 발생합니다. N+1 의 의미는 1개의 쿼리를 실행했을 때, 내부에 존재하는 컬렉션들을 조회해오면서 생기는 문제입니다. 이 문제를 해결하기 위한 방법은 첫 번째, Join Fetch를 사용하는 방법 두 번째, @EntityGraph을 사용하는 방법 세 번째, FetchType을 지연로딩에서 즉시 로딩으로 바꾸는 방법이 있습니다.

 

Primary Key, Foreign Key에 대해 설명해주세요.

→ Primary Key는 관계형 데이터 베이스 테이블에서 각 레코드를 고유하게 식별하기 위한 고유의 필드 또는 필드값의 집합입니다. 테이블 내에서 각 레코드는 하나의 pk를 가져야 합니다. 그리고 이 pk를 사용해 빠른 검색과 레코드간의 식별이 가능합니다. Foreign Key는 관계형 데이터 베이스에서 한 테이블의 필드로 다른 테이블의 pk값을 가리키는데 사용되는 필드입니다. 이를 통해 한 테이블의 데이터가 다른 테이블과 관련되어 있는 관계를 맺을 수 있습니다. 외래키를 사용하면 데이터 간의 관계를 정의하고 데이터의 무결성을 유지하며 참조 무결성을 강제하여 데이터 일관성을 유지할 수 있습니다.

 

DI, IoC에 대해 설명해주세요.

→ DI는 스프링이 다른 프레임워크와 차별화 되어 제공하는 의존 관계 주입 기능으로, 객체를 직접 생성하는 게 아닌 외부에서 생성한 후 주입시켜주는 방식입니다. DI를 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아 집니다. IoC는 제어의 역전이라는 의미로 메소드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는 것을 의미합니다. IoC는 제어의 흐름을 바꾼다는 의미인데 객채의 의존성을 역전 시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 하여 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 합니다.

회고

발생한 문제

- 자바에 대한 공부를 진행하면서 면접관련 질문에 맞는 답을 함께 공부해보았다. 

 

해결 방법

- 질문에 맞는 개념을 공부하고 정리하여 답변을 준비했다.