1. Java Map의 내부 구현은 어떻게 이루어져 있을지 추측해보실 수 있을까요?
1) Map 이란?
Key 와 Value로 구성되어있는 개념 이를 맵핑 한다고 이야기한다
Key와 Value가 하나의 쌍으로 연결되어 있어 Key를 통해 접근을 할수 있도록 만드러졌다 그러므로 Key는
중복되지 않는다
2) 종류
(1) HashMap
Key와 Value의 쌍으로만 구성이 될 뿐 자료구조 안에 묶인 쌍들에 대한 순서는 보장할 수 없다
즉 사용자는 Key와 Value값이 구성되는 위치를 결정 하거나 알 수 없다.
(2) TreeMap
Key 값을 이용해 순서대로 정렬하여 데이터를 저장하는 자료구조
Key 값을 통한 탐색 뿐 아니라 Key 값의 정렬을 통한 탐색 등을 하기에 요으이하다
(3) LinkedHashMap
데이터를 입력한 순서대로 쌓아지며 데이터를 저장하는 자료구조
배열, 리스트 처럼 인덱싱 접근을 하기에 용이하다
2. 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) 유지 보수 용이
3. MVC 모델이란 무엇인지 설명해주실 수 있을까요?
1) MVC 모델이란?
소프트웨어를 구성하는 요소들을 분리함으로써 코드의 재사용성과 유지보수성을 높이고 협업을 용이하게 하는
소프트웨이 디자인 패턴중 하나이다
2) 구성요소
(1) Model
데이터와 비즈니스 로직 담당 데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업을 수행
(a) 규칙
a) 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다
b) View 나 Controller에 대해서 어떠한 정보도 알지 말아야 한다
c) 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야 한다
(2) View
사용자 인터페이스를 담당 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현
(a) 규칙
a) Model이 가지고 있는 정보를 따로 저장해서는 안된다
b) Model 이나 Controller 와 같이 다른 구성 요소를 몰라야 한다
c) 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야 한다
(3) Controller
Model과 View 사이의 상호작용을 조정하고 제어 사용자의 입력을 받아 Model에 전달하고 결과를 바탕으로
View를 업데이트
(a) 규칙
a) Model 이나 View에 대해서 알고 있어야 한다
b) Model 이나 View의 변경을 모니터링 해야 한다
'항해99 기술면접 대비' 카테고리의 다른 글
23.10.18 항해 99 16기 기술면접 대비 (0) | 2023.10.18 |
---|---|
23.10.17 항해 99 16기 기술면접 대비 (0) | 2023.10.17 |
23.10.15 항해 99 16기 기술면접 대비 (1) | 2023.10.15 |
23.10.12 항해 99 16기 기술면접 대비 (0) | 2023.10.12 |
23.10.11 항해 99 16기 기술면접 대비 (0) | 2023.10.11 |