-
기술 면접 스터디 - 2일차(DI, Index)[기술 면접 준비] 2023. 3. 28. 13:57
Q. DI(Dependency Injection)에 대한 설명과 해당 기술의 장점에 대해 설명해주세요.
A. 객체를 사용하기 위해서 의존성 또는 의존관계를 주입 받는다는 개념으로, 객체를 클래스 내부에서 직접 생성하는 방식이 아닌, 외부에서 생성 후 주입시키는 방법을 말합니다.
이때 의존관계란, A라는 객체가 B객체를 알고있고, 만약 B가 변경되면 A에도 영향을 미친다면 A와 B는 의존관계에 놓여있다 라고 표현합니다.
스프링에서는 Bean 정보를 바탕으로 컨테이너가 의존관계를 자동으로 연결해줍니다.
DI 기술의 장점으로는
- 특정 객체가 다른 객체에 의존하는 의존성으로부터 격리시켜 코드 테스트에 용이하다.
- 객체 끼리의 결합도가 줄어든다.
- 코드를 확장하거나 변경할 때 영향을 최소화 한다(추상화).
- 가독성이 높아진다.
Q. DB에서 인덱스를 잘 사용하면 어떤 장점이 있을까요?
A. 우선 인덱스란, 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터 베이스 테이블의 검색 속도를 향상시키는 자료구조 입니다. 책의 인덱스 처럼, 인덱스 자료구조에는 데이터의 값과 데이터의 물리적 위치가 함께 저장됩니다. 그로 인해 어떤 데이터가 필요할 때 데이터 베이스 전체를 조회해서 찾는 것이 아닌, 인덱스를 활용하여 데이터에 접근하게 됩니다.
이로 인한 장점으로는,
- 테이블을 조회하는 속도와 그에 따른 성능을 향상시킬 수 있다.
- 전반적인 시스템의 부하를 줄일 수 있다.
단점으로는,
- 인덱스를 관리하기 위해 DB의 약 10%에 해당하는 저장공간이 필요하다.
- 인덱스를 관리하기 위해 추가 작업이 필요하다.
- 인덱스를 잘못 사용할 경우 오히려 성능이 저하되는 역효과가 발생할 수 있다.
따라서,
- INSERT, UPDATE, DELETE가 빈번한 테이블 보다 검색을 위주로 하는 테이블에 인덱스를 생성하는 것이 좋음
- 인덱스는 항상 최신의 데이터를 정렬된 상태로 유지해야 한다.
- 인덱스는 테이블의 전체 데이터 중에서 10~15% 이하의 데이터를 처리하는 경우에만 효율적이고, 그 이상의 데이터를 처리할 땐 인덱스를 사용하지 않는 것이 더 낫다.
(참고:https://mangkyu.tistory.com/96)
'[기술 면접 준비]' 카테고리의 다른 글
기술 면접 스터디 - 6일차(트랜잭션, 웹서버, WAS) (0) 2023.04.13 기술 면접 스터디 - 5일차(프로세스, 쓰레드, TCP, UDP) (0) 2023.03.31 기술 면접 스터디 - 4일차(List, Set, Map, HashMap, Parameter와Argument) (0) 2023.03.30 기술 면접 스터디 - 3일차(MSA, 제네릭) (0) 2023.03.29 기술 면접 스터디 - 1일차(OOP, Rest API) (0) 2023.03.27