[면접정리] 신입 백엔드 개발자 기술면접 정리 (Spring)

2024. 4. 3. 16:50· 취뽀여정

 

- 신입 백엔드 개발자 면접에서 자주 나오는 질문을 모아 정리한 포스트입니다.
- 모든 질문들을 정리할 수는 없지만 최대한 자주 나오는 질문들과 중요한 질문을 정리하고 있습니다. 질문들은 계속 추가할 예정입니다. 
- 이 포스트에 꼭 중요한 질문이 빠져있다면 댓글로 남겨주시면 반영하도록 하겠습니다.
- 필자는 Java,Spring Framework를 중점으로 한 백엔드 개발자를 목표로 하고 있습니다. 따라서 글 내부에 Java 혹은 백엔드 관련 용어가 나올 수 있습니다. 

 

 

📍 Spring 프레임워크가 무엇인지 설명해주세요.

스프링 프레임워크는 자바 플랫폼을 위한 오픈 소스 어플리케이션 프레임워크로 POJO 기반을 바탕으로, DI와 AOP,PSA를 지원하는 경량의 컨테이너를 제공하는 프레임워크를 의미합니다.

 

📍 POJO란 무엇인가요?

Plain Old Java Object의 약자로서, 프레임워크 인터페이스나 클래스를 구현하거나 확장하지 않은 단순한 클래스를 의미하는 것으로, 타 프레임워크에 종속되지 않아 코드가 간결하고 테스트 자동화에 유리합니다.

 

📍 AOP란 무엇인가요?

관점 지향 프로그래밍의 약어로, 공통 관심사항과 핵심 관심사항을 분리하는 것을 의미합니다. 각 소스코드에서 여러 번 반복해서 사용하는 코드를 흩어진 관심사라고 부르고, 이것을 Aspect로 모듈화해 핵심 로직에서 분리해 재사용하는 것이라고 볼 수 있습니다.

 

+) AOP = 관심사의 분리

말 그대로 프로그램을 두 가지 관점으로 바라보겠다는 뜻!

  • 공통 관심사항(cross-cutting concern)
    : 중복되는 공통 코드(보안,로그,트랜잭션 등)
  • 핵심 관심사항(core concern)
    : 비즈니스 로직

공통 관심사항은 코드가 중복된다. 프록시 패턴을 사용해서 비즈니스 로직과 분리한다. 이렇게 두 가지 고나심사로 분리하게 되면 개발자는 비즈니스 로직에 더욱 집중할 수 있게 된다.

 

📍 PSA란 무엇인가요?

환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하는 추상화 구조를 말한다.

 

📍 DI(Dependency Injection, 의존관계 주입)가 무엇인지 설명해주세요.

특정 객체에 필요한 객체를 외부에서 결정해서 연결하는 것을 의미한다. 직접 객체를 생성하지 않고 스프링에서 객체를 생성한 뒤에사용할객체에 주입시켜서 사용하게 하는 것

  • 생성자 주입 : 생성자 호출시점에딱 1번만호출되는 것을 보장하며 불변, 필수 의존관계에 사용한다.
  • Setter 주입 : 선택,변경 가능성이있는 의존관계에 사용되며 스프링빈을 선택적으로 등록이 가능하다.
  • 필드 주입 : 코드가 간결해서 좋지만 외부에서 변경이 불가능해서 테스트하기 힘들다는 단점이 있다.    

 

📍 IoC(Inversion of Control, 제어의 역전)이 무엇인지 설명해주세요.

객체의 생성부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀐 것을 의미합니다.

정확히 설명하면, 디자인 원칙 중 하나로 클래스 간의 결합도를 줄이기 위해 다양한 종류의 제어를 반전시킬 것을 권장하는 것을 의미합니다.

 

📍 DAO,DTO,BO,VO의 차이에 대해 설명해주세요.

DAO(Data Access Object)

  • DB 데이터를 조회하거나 조작하는 기능을 전담하는 객체
  • DB 접근 로직과 비즈니스 로직을 분리하기 위해서 사용

DTO(Data Transfer Object)

  • 계층간의 데이터 교한을 위한 객체
  • 로직을 갖지 않는 순수 데이터 객체로 getter,setter만 포함

VO(Value Object)

  • DTO와 동일한 개념
  • Read Only로 수정 불가
  • getter,setter 이외의 추가 로직 포함 가능

BO(Business Object)

  • 비즈니스 로직을 포함하는 오브젝트로, 여러 DAO를 사용해 데이터를 처리

 

📍 MVC란 무엇인가요?

애플리케이션의 구성요소를 Model,View,Controller 세가지 역할로 구분하는 디자인 패턴입니다.

  • Model : 데이터
  • View : jsp 파일들과 같이 사용자들에게 실제로 보여지는 페이지
  • Controller : 사용자들의 요청을 받고 응답을 주는 로직 담당. 사용자가 접근한 url에 따라서 요청사항을 파악하고 요청에 맞는 데이터를 model에 의뢰하고 데이터를 view에 반영해서 사용자에게 보여줌  

 

📍 스프링 Bean 객체와 Bean 생명주기에 대해 설명해주세요.

Bean 객체는 DI 컨테이너 내부에 존재하며 관리를 받고 있는 객체를 의미합니다. @Bean 어노테이션을 등록해 사용하거나, xml을통해 등록할 수 있습니다.

 

Bean의 생명 주기는다음과 같습니다.

  스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존 관계 주입 -> 초기화 콜백 -> 사용 -> 소멸 전 콜백 -> 스프링 종료
  • 스프링컨테이너에 의해 생명주기 관리
  • 스프링 컨테이너 초기화 시 빈 객체 생성, 의존 객체 주입 및초기화
  • 생성과 의존관계 주입과 초기화 분리
    • 의존관계주입(생성자 주입)은 필수정보를 받고 메모리 할당을통해 객체 생성 책임
    • 초기화는 생성된 값들을활용해 외부 커넥션을 연결하는등 무거운 작업 수행
    • 명확하게 분리하는 것이 유지보수 관점에서 좋다. 
  • 싱글톤 빈들은 컨테이너가 종료되기 직전에소멸전 콜백에 발생  

 

📍 Annotation에 대해 설명해주세요.

프로그램에게 추가적인 정보를 제공하는메타데이터입니다. annotation을 정의하고, 원하는 위치에 배치하고, 코드가 실행되는 도중 자바리플렉션을 이용해 추가 정보를 획득해 기능을 실시하는 방식으로 동작됩니다.  

 

📍 Spring에서 제공하는 대표적인 Annotation 몇 가지만 예를 들어주세요

  • @Controller : 특정 클래스를 Controller로 등록하는 어노테이션  
  • @Autowired : Spring에서 자동으로 의존성 주입을 하기 위한 어노테이션
  • @RequestMapping : 컨트롤러로 등록된 클래스 내에 특정메서드를 요청되는 URL과 매칭시키는 어노테이션

 

  

 

 

 

'취뽀여정' 카테고리의 다른 글

신입 백엔드 개발자 취뽀여정 1탄 - 중소(si)기업 면접 후  (5) 2024.02.26
'취뽀여정' 카테고리의 다른 글
  • 신입 백엔드 개발자 취뽀여정 1탄 - 중소(si)기업 면접 후
noeul.log
noeul.log
새싹 개발자의 개발일지
noeul.log
한 페이지가 될 수 있게🍀
noeul.log
전체
오늘
어제
  • 전체보기 (53)
    • Back-end (21)
      • Spring Web Project (16)
      • Spring (2)
      • Java (2)
    • DB (1)
      • Oracle (1)
    • CS (2)
      • 🛠️ 컴퓨터 구조 (0)
      • 🛠️ 운영체제(OS) (1)
      • 🛠️ 시스템 소프트웨어 (0)
      • 🛠️ 네트워크 (1)
      • 🛠️ 소프트웨어 공학과 협업 프로세스 (0)
    • AWS (4)
    • GitHub & Git (6)
    • 프로그래머스 (11)
    • 취뽀여정 (2)
    • IT 알쓸신잡 (2)
    • Tistory 튜토리얼 (2)
    • IT 도서 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

최근 글

hELLO · Designed By 정상우.v4.2.1
noeul.log
[면접정리] 신입 백엔드 개발자 기술면접 정리 (Spring)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.