cs지식 정리하기/면접 대비

[5일차] 기술 면접 준비

젤리의it 2024. 3. 20. 22:36

스프링 핵심 3가지 프로그래밍 모델 - AOP, DI, IOC
aop -  로깅, 트랜잭션,보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리

 

1. DI에 대해 설명하고 객체지향과 연관해서 설명하세요
DI의존성 주입 기능으로 객체를 직접 생성하는 것이 아니라 외부에서 생성해 주입하는 방식입니다.
객체 지향 프로그램에서는 각 객체가, 모든 프로그램에 구속되어 유지 보수가 어려울 경우를 배제하기 위한 방법으로 프로그램을 구성한다.
즉, 인터페이스를 이용하거나 객체를 독립화시켜, 프로그램의 확장을 용이하게 한다.
DI를 통해서 모듈간의 결합도가 낮아지고 유연성이 높아지는 특징이 있습니다.

스프링에서 DI를 사용하는 3가지 방법이 있습니다.
1. 생성자 주입방식 -가장 많이 사용되는 방식으로 final 키워드를 사용, 값이 한번 할당되면 변경되지 않는 객체의 불변성을 보장, not null point 절대 불가능, spirng 4점대부터 autowired 생략가능

* 생성자 주입 방식 권장 이유 - 객체의 불변성(최초 1회만 호출하고 내용의 변경이 불가능), 테스트 용이,순환참조 방지

2. 필드 주입 방식 - 클래스에 필드를 선언 후 사용, autowired 사용, 코드를 간결하게 만듦, 단일책임원리 위반, 유닛테스트 어려움, final 사용 불가능, 불변성 보장 안됨

3. setter 주입방식 - setter 혹은 사용자가 정의한 메서드를 사용함. public으로 선언되서 누구나 접근 가능하다는 문제

꼬리 질문 1. 가장 많이 사용하는 방법과 특징에 대해서 더 자세하게 설명해주실 수 있나요?
2. 프로젝트에서 사용한 방식은 어떤 방식이 있는지 간단하게 설명해주실 수 있나요?
3. 단일 책임원칙에 대해서 설명 해주세요
하나의 클래스는 하나의 동작만의 책임을 가진다. 책임이 많을 수록 해당 객체의 변경에 따른 영향도의 양과 범위가 커집니다.  즉 단일 책임원칙을 특정 객체의 책임 의존성 과중을 지양하기 위한 방법
4. 결합도, 응집도
결합도 - 모듈 내부가 아닌 외부의 모듈과 연관도 또는 모듈간의 상호의존성을 나타내는 정도, 모듈간의 관련성을 측정하는 척도

응집도 - 모듈의 독립성을 나타내는 개념, 모듈 내부 구성요소간 연관 정도

'cs지식 정리하기 > 면접 대비' 카테고리의 다른 글

[7일차] 기술 면접 준비  (0) 2024.03.26
[6일차] 기술 면접 준비  (0) 2024.03.25
[4일차] 기술 면접 준비  (0) 2024.03.19
[3일차] 기술 면접 준비  (1) 2024.03.13
[2일차] 기술 면접 준비  (0) 2024.03.12