1. DI, IoC에 대해 설명해주세요.
1) DI
(1) DI란?
Dependency Injection의 줄임말로 객체가 의존하는 또다른 객체를 외부에서 선언하고 이를 주입받아
사용하는 것으로 의존관계 주입이라고 불린다
예) 햄버거 가게 요리사는 햄버거 레시피에 의존한다 라고 가정할때
햄버거 레시피가 변화되었을때 요리사는 이에 맞추어 햄버거 만드는 방법을 수정해야한다
레시피의 변화가 요리사의 행위에 영향을 미쳤기 때문에 요치사는 레시피에 의존한다 라고할 수 있다
(2) DI 장점
(a) 주입받는 대상이 변하더라도 구현 자체를 수정할 일이 없거나 줄어들게 되므로 의존성이 줄어든다
(b) 별도로 구현하게 되면 다른 클래스에서 재사용이 가능하므로 재사용성이 높은 코드가 된다
(c) 테스트 하기 좋은 코드가 되며 가독성도 높아진다
2) IoC
(1) Ioc란?
Inversion Of Control 제어의 역전은 간단히 이야기하면 프로그램의 제어 흐름 구조가 뒤바뀌는 것이라고 할 수 있다
오브젝트가 자신이 사용 할 오브젝트를 스스로 선택하지도 생성하지도 않으며 어떻게 만들어지고
어떻게 사용될지 알 수 없다. 모든 제어 권한을 자신이 아닌 다른 대상에게 위임하기 때문이다
Ioc가 적용된 대표적인 기술은 프레임 워키이며 내가 작성한 코드를 제어하고 대신 실행한다, 만약 작성한 코드가
직접 제어의 흐름을 담당한다면 그건 라이브러리라고 불린다
스프링 프레임워크에서는 Controller와 Service 같은 객체들의 동작을 우리가 직접 구현하기는 하지만,
해당 객체들이 어느 시점에 호출할지는 개발자가 제어하지 않는다 스프링 프레임워크가 요구하는대로 객체를
생성하면, 프레임워크가 해당 객체들을 가져다 생성하고 호출하고 소멸시키는 과정을 개발자의 제어권이
역전되었다고 볼 수 있다.
(2) Ioc 장점
(a) 객체 간 낮은 결합도
(b) 유연한 코드 작성가능
(c) 가독성 증가
(d) 코드 중복 방지
(e) 유지 보수 용이
2. 객체 지향 프로그래밍이란 무엇이고 어떻게 활용할 수 있나요?
1) 객체 지향 프로그래밍이란?
프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고 그 객체들 간의 유기적인
상호작용을 통해 로직을 구성하는 방법
2) 활용방법
(1) 추상화
a) 객체에서 공통된 속성과 행위를 추출하는 것
b) 공통의 속성과 행위를 찾아서 타입을 정의하는 과정
c) 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만듬
(2) 캡슐화
a) 데이터 구조와 데이터를 다루는 방법들을 결합 시켜 묶는 것 (변수와 함수를 하나로 묶는 것을 뜻함)
b) 낮은 결합도를 유지할 수 있도록 설계하는 것
c) 접근제어자의 활용으로 정보은닉으로 활용할 수도 있다.
(3) 상속
a) 클래스의 속성과 행위를 하위 클래스에 물려주거나 하위 클래스가 상위 클래스의 속성과 행위를 물려받는
것을 말한다
b) 새로운 클래스가 기존의 클래스의 데이터와 연산을 이용할 수 있게 하는 기능
(4) 다형성
a) 하나의 변수명, 함수명이 상황에 따라 다른 의미로 해석될 수 있는 것
b) 어떠한 요소에 여러 개념을 넣어 두는 것
'항해99 기술면접 대비' 카테고리의 다른 글
23.11.03 항해 99 16기 기술면접 대비 (0) | 2023.11.03 |
---|---|
23.11.01 항해 99 16기 기술면접 대비 (1) | 2023.11.01 |
23.10.25 항해 99 16기 기술면접 대비 (1) | 2023.10.25 |
23.10.24 항해 99 16기 기술면접 대비 (1) | 2023.10.24 |
23.10.23 항해 99 16기 기술면접 대비 (0) | 2023.10.23 |