티스토리 뷰

etc/면접

면접 준비 - 스프링, 기타

hsm914 2023. 3. 11. 18:22
728x90

- 프레임워크 vs 라이브러리

프레임워크: 개발할 때 필수적인 코드나 알고리즘 등의 큰 틀을 제공하는 것. 프레임워크가 흐름을 제어함.

라이브러리: 특정 기능을 모아둔 코드들의 집합. 사용자가 흐름을 제어함.

 

 

- call by value vs call by reference

값에 의한 호출: 인자로 받은 값을 복사하여 처리

참조에 의한 호출: 인자로 받은 값의 주소를 참조하여 값에 직접 저장.

* 자바는 값에 의한 호출이다. 

배열, 클래스와 같은 참조형 타입은 그 자체로 주소를 갖고 있기 때문에 값을 복사하여 인자로 전달해도, 값이 변경되는 것.

 

 

- TDD

매우 짧은 개발 사이클의 반복에 의존하는 소프트웨어 개발 프로세스.

테스트가 코드 작성을 주도하는 개발방식.

새로운 기능에 대한 테스트케이스 작성 -> 테스트를 통과하는 코드 작성 -> 리팩토링

 

 

- WAS vs web server

WAS: DB 조회나 다양한 로직 처리의 동적 컨텐츠를 제공하는 애플리케이션 서버

web server: HTTP 프로토콜을 기반으로 클라이언트가 요청을 하면 정적 컨텐츠를 제공하는 서버

 

 

- 대용량 트래픽에서 장애 발생 시

스케일 업을 통해 하드웨어 스펙을 향상 / 스케일 아웃을 통해 서버를 여러대 추가해 시스템을 증가

  • 스케일 업: 기존 서버의 사양을 업그레이드
  • 스케일 아웃: 서버를 여러대 추가

 

 

- 어노테이션

사전적 의미로는 주석이라는 뜻.

프로그램에게 추가적인 정보를 제공해 특별한 의미, 기능을 수행하도록 하는 메타데이터.

 

 

 

-----

 

 

- spring framework

자바 개발을 편리하게 해주는 오픈소스 프레임워크.

  • 경량 컨테이너: 객체의 생명주기를 관리하고 스프링으로부터 필요한 객체를 얻음
  • 제어의 역전(IoC): 사용자가 아닌 프레임워크가 컨트롤을 제어.
  • 의존성 주입(DI): 계층이나 서비스 간에 의존성이 존재할 경우 프레임워크가 연결시켜줌
  • 관점 지향 프로그래밍(AOP): 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리

 

 

- @RequestBody vs @RequestParam vs @ModelAttribute

@RequestBody: 클라이언트로부터 전송되는 JSON 형태의 HTTP Body 내용을 MessageConverter를 통해 자바의 객체로 변환

@RequestParam: 한개의 HTTP 요청 파라미터를 받기 위해 사용

@ModelAttribute: HTTP Body 내용과 파라미터 값들을 생성자/getter/setter를 통해 객체 형태로 주입하기 위해 사용

 

 

- Spring boot vs Spring framework

Spring boot: 설정의 많은 부분을 자동화하여 사용자가 편하게 스프링을 사용할 수 있도록 도움. 내장된 톰캣으로 서버를 바로 실행 가능.

Spring framework: 사용자가 직접 환경설정을 해야함.

 

 

- Spring MVC

Model, View, Controller로 기능을 구분하여 개발하는 디자인 패턴.

Model: 데이터 관리나 비즈니스 로직을 처리

View: 비즈니스 로직의 처리 결과가 UI로 표현

Controller: 사용자의 요청을 처리하고 Model과 View를 중개

 

  1. 클라이언트는 URL을 통해 요청을 전송한다.
  2. 디스패처 서블릿은 핸들러 매핑을 통해 해당 요청이 어느 컨트롤러에게 온 요청인지 찾는다.
  3. 디스패처 서블릿은 핸들러 어댑터에게 요청의 전달을 맡긴다.
  4. 핸들러 어댑터는 해당 컨트롤러에 요청을 전달한다.
  5. 컨트롤러는 비즈니스 로직을 처리한 후에 반환할 뷰의 이름을 반환한다.
  6. 디스패처 서블릿은 뷰 리졸버를 통해 반환할 뷰를 찾는다.
  7. 디스패처 서블릿은 컨트롤러에서 뷰에 전달할 데이터를 추가한다.
  8. 데이터가 추가된 뷰를 반환한다.

 

 

- 제어의 역전

객체의 생성이나 라이프사이클 등 객체에 대한 제어권을 개발자가 아닌 IoC 컨테이너에게 넘기는 것.

IoC 컨테이너에 객체를 생성하면 객체끼리 의존성을 주입해줌.

컨테이너에 등록한 객체-> 빈

 

 

- 빈 등록 방법

  1. @Component 어노테이션 사용
    @Controller, @Service, @Repository 어노테이션 사용하는 것 모두 포함됨
  2. @Configuration 어노테이션을 붙인 설정 클래스를 따로 만들고, 그 클래스 안에 @Bean 어노테이션을 붙인 메소드를 생성함. 메소드 안에서 빈으로 등록할 객체를 생성

 

 

- 의존성 주입

필요한 객체를 직접 생성하는 것이 아닌 외부로부터 객체를 받아서 생성하는 것.

생성자 주입, 필드 주입, setter 주입을 통해 DI 가능.

생성자 주입 권장: 순환 참조 방지, 불변성, 테스트용이

 

 

- 관점지향 프로그래밍

핵심 비지니스 로직에 있는 공통 관심사항(ex: 로깅, 보안, 트랜잭션)을 분리.

중복 코드 제거, 재활용성, 변화수용 용이성

 

 

- 서블릿

자바를 사용해 웹 페이지를 동적으로 생성하는 프로그래밍 기술.

MVC에서 컨트롤러 역할을 함

 

 

- 싱글톤 패턴

스프링에서 빈 생성시 default로 싱글톤 패턴이 적용.

컨테이너를 통해 직접 싱글톤 객체를 생성하고 관리.

요청이 들어올 때마다 매번 객체를 생성하지 않고 이미 만들어진 객체를 공유하기 때문에 효율적.

 

 

- @Transactional

클래스나 메서드에 이 어노테이션이 추가되면 트랜잭션 기능이 적용된 프록시 객체가 생성되어 메소드 전후로 트랜잭션 처리 수행.

* 프록시: 원래 객체를 감싸고 있는 같은 타입의 객체.

 

 

* 참고

https://github.com/JaeYeopHan/Interview_Question_for_Beginner

https://dev-coco.tistory.com/category/%F0%9F%93%8CETC

https://velog.io/@kdhyo/JavaTransactional-Annotation-%EC%95%8C%EA%B3%A0-%EC%93%B0%EC%9E%90-26her30h

728x90

'etc > 면접' 카테고리의 다른 글

면접 준비 - 안드로이드  (0) 2023.03.12
면접 준비 - 데이터베이스  (0) 2023.03.11
면접 준비 - 네트워크  (0) 2023.03.11
면접 준비 - 운영체제  (0) 2023.03.10
면접 준비 - 자바  (0) 2023.03.10
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함