1. 스프링) 기술면접질문
1)DI와 IoC에 대해 아는 만큼 설명해주실 수 있을까요?
DI와 IoC는 소프트웨어 설계에서 중요한 개념으로, 코드의 결합도를 낮추고 유연성 및 확장성을 높이는 데 도움을 줍니다. 이 두 개념은 특히 스프링 프레임워크 같은 현대적인 애플리케이션 개발에서 중요한 역할을 합니다.
DI(의존성 주입)
정의: 객체 간의 의존 관계를 외부에서 결정하고 주입하는 방식입니다. 즉, 객체가 필요로 하는 의존 객체를 직접 생성하지 않고, 외부(예: 프레임워크)에서 생성된 객체를 주입(전달)받아 사용하는 것을 말합니다. 1장점: 객체 간의 결합도를 낮추어 코드의 재사용성을 높이고, 유닛 테스트를 용이하게 합니다. 또한, 코드의 변경에 따른 영향을 최소화할 수 있습니다.
IoC(제어의 역전)
정의: 프로그램의 제어 흐름을 사용자가 아닌 외부(프레임워크나 컨테이너 등)에서 관리하는 것을 말합니다. 즉, 객체의 생성부터 생명주기 관리까지 모든 제어 권한이 사용자에게 있지 않고, 외부에 있다는 개념입니다. 5장점: 개발자는 비즈니스 로직에만 집중할 수 있으며, 코드의 유지보수성과 확장성이 향상됩니다. 또한, 의존성 관리가 용이해집니다.
DI와 IoC는 객체 지향 프로그래밍에서 코드의 결합도를 낮추고, 유연하며 확장 가능한 애플리케이션을 만들기 위한 핵심 원칙입니다.
2)MVC 모델이란 무엇인지 설명해주실 수 있을까요?
MVC 모델은 소프트웨어 개발에서 널리 사용되는 디자인 패턴 중 하나로, 애플리케이션을 Model, View, Controller의 세 부분으로 구분하여 개발하는 방법론입니다. 이 구조는 애플리케이션의 데이터 처리(Model), 사용자 인터페이스(View), 그리고 입력 처리 및 로직 제어(Controller)를 분리하여 각각 독립적으로 개발할 수 있게 도와줍니다.
Model (모델)
정의: 애플리케이션의 데이터와 비즈니스 로직을 처리하는 부분입니다. 데이터베이스, 파일, 메모리 등에서 데이터를 가져오고, 저장하며, 데이터를 가공하는 로직을 포함합니다.
역할: 데이터의 저장, 검색, 수정 등 데이터 관련 로직을 캡슐화하여, View와 Controller로부터 독립적으로 작동합니다.
View (뷰)
정의: 사용자에게 정보를 표시하는 인터페이스(UI)를 담당하는 부분입니다. HTML, CSS, JavaScript 등을 사용하여 사용자가 볼 수 있는 화면을 구성합니다.
역할: Model로부터 받은 데이터를 사용자에게 보여주는 형태로 가공하여 표시합니다. 사용자의 입력을 받아 Controller에 전달하기도 합니다.
Controller (컨트롤러)
정의: 사용자의 입력을 받아 처리하는 부분입니다. 사용자의 액션에 따라 Model을 업데이트하고, 그 결과를 View에 반영하도록 지시합니다.
역할: 사용자의 입력(예: 마우스 클릭, 키보드 입력)을 받아 Model을 조작하고, 그 결과를 View에 전달하여 사용자에게 피드백을 제공합니다.
MVC 모델은 소프트웨어의 구조를 명확하게 분리함으로써, 유지보수성, 확장성 및 팀 작업의 효율성을 높여줍니다. 각 구성 요소가 독립적으로 작동하기 때문에, 한 부분을 수정하더라도 다른 부분에 미치는 영향을 최소화할 수 있습니다.
'개발일지' 카테고리의 다른 글
| 2024.03.29 TIL (0) | 2024.03.29 |
|---|---|
| 2024.03.28TIL (0) | 2024.03.28 |
| 2024.03.26 TIL (1) | 2024.03.26 |
| 2024.03.25 TIL (0) | 2024.03.25 |
| 2024.03.22 TIL (0) | 2024.03.22 |