티스토리 뷰

개인공부/Spring

면접 준비 - spring framework

날따라해봐요요롷게 2022. 5. 11. 14:33

Spring Framework

  • Spring Core 인 Bean과 Container의 관계를 알고 있습니다.

 

  • 스프링의 특징인 IoC/DI 를 관계를 알고 있습니다.

 

  • Spring AOP를 관계를 알고 있습니다.

 

  • Spring MVC 를 이용해 프로젝트를 진행하였습니다.

 


  • MVC 패턴에 대해 설명해주세요

 

 


 

- jwt

JWT는 JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 웹 토큰입니다.

<Cliam>
토큰에서 사용할 정보

<JWT 구조>
JWT는 헤더, 페이로드, 시그니쳐 3 부분으로 이루어지며 각 부분은 Base64Url로 인코딩 됩니다.
토큰의 헤더는 시그니쳐를 해싱하기 위한 알고리즘이 지정되어있고 페이로드는 토큰에서 사용할 정보가 담겨있습니다.

시그니쳐는 토큰을 인코딩 혹은 유효성 검증을 할 때 사용하는 고유한 암호화 코드입니다.

<장단점>
세션과는 달리 토큰은 클라이언트에 저장되기 때문에 서버의 자원을 사용하지 않아 효율적이며 규격이 정해져 있기 때문에 다양한 클라이언트에서 호환성이 뛰어납니다.

하지만 JWT토큰 자체가 가지는 정보, Payload 가 많아질수록 점점 부담이 켜지며 세션과는 달리 한번 발급되면 서버측에서 관리하지 못한다는 단점이 있습니다.

 


JVM은 Java Byte Code 를 운영체제에 맞게 해석해주는 역할을 합니다.
또한 가비지 컬렉터를 통해 메모리 관리도 담당하고 있습니다.

<중요성>
• 동일한 기능을 하는 프로그램이더라도 메모리 관리에 따라 성능이 좌우될 수 있습니다.
• 메모리가 관리 되지 않을 경우 속도 저하나 프로그램의 중단 및 시스템의 부하 및 장애 등으로 발생할 가능성이 있습니다. → 당연히 서비스에도 장애가 발생할 수밖에 없습니다.
• 한정된 메모리를 효율적으로 사용하여 최고의 성능을 끌어낼 수 있습니다.

 

<가비지 컬렉터 내용 공부하기>
더이상 참조되지 않는 메모리 객체를 모아 제거하는 역할을 수행합니다.

앞으로 사용되지 않는 객체의 메모리를 Garbage 라고 부르며 
이런 Garbage를 정해진 스케쥴에 의해 정리하는것을 Garbage Collection 이라고 합니다.

GC는 자바의 메모리 관리 기법이며, 애플리케이션이 동적으로 할당했던 메모리 영역중 더이상 사용하지 않는 영역을 정리하는 기능입니다.
GC는 Heap 메모리에서 동작하며, JVM에서 GC의 스케쥴링을 담당하며 개발자가 관여하지 않아도 사용하지 않는 메모리를 제거합니다.

 

<운영체제에 맞게 해석해주는 과정 서술하기>
프로그램이 실행되면 JVM은 OS로부터 이 프로그램이 필요로 하는 메모리를 할당받으며, JVM은 이 메모리를 용도에 따라
여러 영역으로 나누어 관리합니다.

자바 컴파일러(javac)가 자바 소스코드(.java)를 읽어들여 자바 바이트코드(.class)로 변환한 뒤,
Class Loader를 통해 class 파일들을 JVM으로 로딩합니다.

로딩된 class 파일들은 Excuetion engine을 통해 해석되며
해석된 바이트코드는 Runtime Data Areas에 배치되어 실질적인 수행이 이루어집니다.  

 


스프링에서 싱글톤 패턴에 대해 설명해보세요

싱글톤 패턴은 처음 생성자로 객체를 생성한 뒤, 그 다음 생성자부터는 객체 생성이 아닌 처음에 생성한 객체를 리턴하는 것입니다.
스프링에선 스프링 컨테이너를 통해 싱글톤 패턴을 적용하지 않고도 객체 인스턴스를 싱글톤으로 관리합니다.

이러한 기능 덕분에 유연성이 떨어지게되는 싱글톤 패턴의 문제를 해결함과 동시에
객체를 싱글톤으로 유지할 수 있습니다.

<싱글톤 패턴의 단점>
1. 싱글톤 패턴을 구현하는 코드 자체가 많다
2. 의존관계상 클라이언트가 구체 클래스에 의존한다.
3. 테스트하기 어렵다.
4. 내부 속성을 변경하거나 초기화하기 어렵다.
5. private 생성자로 자식 클래스를 만들기 어렵다.
6. 싱글톤 컨테이너

 

<스프링 컨테이너>
스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공하는 역할을 합니다.

개발자는 new 연산자, 인터페이스 호출, 팩토리 호출 방식으로 객체를 생성하고 소멸시킬 수 있는데, 스프링 컨테이너가 이 역할을 대신해 줍니다.

 

 

 


데이터베이스 옵티마이저

 

옵티마이저는 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진입니다. 컴퓨터의 두뇌가 CPU인 것처럼 DBMS의 두뇌는 옵티마이저라고 할 수 있습니다. 개발자가 SQL을 작성하고 실행하면 소프트웨어 실행파일처럼 즉시 실행되는 것이 아니라 옵티마이저(Optimizer)라는 곳에서 "이 쿼리문을 어떻게 실행시키겠다!"라는 여러 가지 실행계획을 세우게 됩니다. 이렇게 실행계획을 세운 뒤 시스템 통계정보를 활용하여 각 실행계획의 예상 비용을 산정한 후 각 실행계획을 비교해서 최고의 효율을 가지고 있는 실행계획을 판별한 후 그 실행계획에 따라 쿼리를 수행하게 되는 것입니다.

 

옵티마이저는 실행 계획을 세우는 방식에 따라 규칙 기반 옵티마이저와 비용 기반 옵티마이저로 나뉩니다.

항목  규칙 기반 옵티마이저  비용 기반 옵티마이저
개념  사전에 정의된 규칙 기반  최소비용 계산 실행계획 수립
기준  실행우선 순위(Ranking)  액세스 비용(Cost)
인덱스  인덱스 존재 시 가장 우선시 사용  Cost에 의한 결정
성능  사용자 SQL작성 숙련도  옵티마이저 예측 성능
장점  판단이 매우 규칙적 실행 예상 가능  통계 정보를 통한 현실 요소 적용
단점  예측 통계정보 요소 무시  최소 성능 보장 계획의 예측 제어 어려움
사례  AND 중심 양쪽 ‘=’ 시 Index Merge 사용  AND 중심 양쪽 ‘=’ 시 분포도별 Index 선택

 

실행 속도가 빠른 순으로 규칙을 먼저 세워두고 우선순위가 앞서는 방법을 채택하는 것입니다. 

 


 

stateless
통신이 끝나면 상태를 유지하지 않는 특징
연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성이 있다.
쿠키와 세션은 위의 두 가지 특징을 해결하기 위해 사용합니다.
예를 들어, 쿠키와 세션을 사용하지 않으면 쇼핑몰에서 옷을 구매하려고 로그인을 했음에도, 페이지를 이동할 때 마다 계속 로그인을 해야 합니다.
쿠키와 세션을 사용했을 경우, 한 번 로그인을 하면 어떠한 방식에 의해서 그 사용자에 대한 인증을 유지하게 됩니다.

 

 

 

 

 

 

'개인공부 > Spring' 카테고리의 다른 글

Spring Security - WebSecurity, HttpSecurity  (0) 2022.05.12
스프링2  (0) 2022.05.12
스프링1  (0) 2022.05.09
CRUD 구현  (0) 2021.11.02
설정 - ORACLE DB  (0) 2021.09.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함