Q. DI(Dependency Injection)에 대한 설명과 해당 기술의 장점에 대해 설명해주세요.
A. 의존성 주입은 객체 지향 프로그래밍에서 사용되는 디자인 패턴 중 하나로, 객체 간의 결합도를 낮추어 유지보수성과 확장성을 높일 수 있습니다. 의존성 주입은 크게 3가지 방식으로 구현할 수 있습니다. 첫 번째는 생성자를 이용한 방식으로, 생성자를 통해 의존하는 객체를 주입하는 방식입니다. 두 번째는 setter 메소드를 이용한 방식으로, setter 메소드를 통해 의존하는 객체를 주입하는 방식입니다. 마지막으로는 인터페이스를 이용한 방식으로, 인터페이스를 구현한 클래스를 주입하여 객체 간의 결합도를 낮추는 방식입니다.
Q. DB에서 인덱스를 잘 사용하면 어떤 장점이 있을까요?
A. 첫번째 이점은 검색 속도가 빨라진다는 것 입니다. 검색 대상 레코드를 한번에 찾을 수 있기 때문에 검색 속도가 빨라진다는 장점이 있습니다. 두번째로는 데이터의 정렬이 가능해진다는 점이 있으며, 인덱스를 사용하면 검색 대상 레코드를 한번에 찾을 수 있기 대문에 테이블의 접근 횟수가 줄어든다는 장점이 있습니다. 세번째로는 쿼리 최적화가 가능한 점이 있습니다. 인텍스를 사용하면 쿼리 실행 계획을 최적화 할 수 있습니다. 인덱스를 사용하여 쿼리가 최적화되면 DBMS가 더 빠르게 쿼리를 실행할 수 있으며 시스템 성능을 향상 시킬 수 있습니다.
Q. 반대로 DB에서 인덱스를 잘 사용하면 어떤 단점이 있을까요?
A. 인덱스 생성하고 유지하는 데에는 시스템 자원을 소모하는 오버헤드가 발생하기 대문에 인덱스를 사용하게 된다면 시스템 자원의 소모가 늘어나고 데이터 저장 공간도 늘어날 수 있습니다. 또한 인덱스가 많아질 수록 업데이트 속도가 저하됩니다. 인덱스는 데이터의 변경 사항에 대한 반영이 필요하기 때문에 업데이트 작업이 자주 일어나는 테이블의 경우에는 인덱스의 수가 많아지면 시스템 성능에 부정적인 영향을 미칠 수 있습니다. 또한 인덱스는 검색 대상 컬럼의 데이터를 별도의 저장 공간에 저장하기 때문에, 인덱스의 크기가 테이블의 데이터 크기보다 더 커질 수 있습니다. 이와 같은 이유로 인덱스를 설계할 때는 데이터의 분산 정도와 인덱스의 크기 등을 고려해야 합니다.
'개발자 면접준비' 카테고리의 다른 글
[Daily] 4월 3일 데일리 과제 (0) | 2023.04.03 |
---|---|
[Daily] 3월 31일 데일리 과제 (0) | 2023.04.03 |
[Daily] 3월 30일 데일리 과제 (0) | 2023.03.30 |
[Daily] 3월 29일 데일리 과제 (0) | 2023.03.30 |
[Daily] 3월 27일 데일리 과제 (0) | 2023.03.27 |