기술면접 10

세션과 토큰 인증 방식 중 각각의 장단점을 말씀해 주세요

Session 인증 방식의 장단점 장점 : - 서버 측에서 유저의 인증 정보를 관리하기 때문에, 보안성이 높습니다. - 유저의 인증 정보를 서버 측에서 유지하기 때문에, 클라이언트 측에서 인증 정보를 저장하고 관리하는 토큰 방식과 달리 쉽게 탈취될 가능성이 적습니다. -클라이언트 측에서 인증 정보를 저장하고 관리하는 토큰 방식과 달리, 새로고침이나 브라우저 종료 등으로 인한 세션 만료 기간 설정이 가능합니다. 단점: -클라이언트가 요청할 때마다 서버에서 세션 정보를 확인해야 하기 때문에, 서버의 부하가 증가할 수 있습니다. -서버의 메모리나 데이터베이스에 세션 정보를 저장하기 때문에, 확장성이 떨어질 수 있습니다. Token 인증 방식의 장단점 장점: - 클라이언트 측에서 인증 정보를 저장하고 관리하기 ..

기술면접 2023.04.09

세션과 쿠키 그리고 토큰 인증 방식에 대해 설명해 주세요.

Session 세션은 서버 측에서 유저의 상태를 유지하기 위한 방식입니다. 클라이언트가 서버에 로그인 요청을 보내면, 서버는 유저의 인증 정보를 검증하고, 유효한 경우 세션 ID를 발급합니다. 이후 클라이언트가 요청을 보낼 때마다 세션 ID를 함께 전달하여 서버에서는 이를 통해 유저의 인증 상태를 파악하고 요청을 처리합니다. 세션 ID는 어떤 방법으로 전달되냐면, 보통 쿠키 또는 URL Rewriting 방식을 사용하여 전달됩니다. 쿠키 방식은 서버에서 생성한 세션 ID를 클라이언트의 웹 브라우저에 저장하고, 클라이언트가 다시 요청을 보낼 때마다 해당 쿠키를 함께 전송하는 방식이고, URL Rewriting 방식은 세션 ID를 URL 끝에 붙여서 전달하는 방식으로, 클라이언트가 요청을 보낼 때마다 URL..

기술면접 2023.04.09

Session(세션)에 대해 모르는 사람한테 설명하듯 간단하게 설명하시오

세션이란 인터넷 서버에서 인터넷 브라우저(클라이언트)와 상호작용할 때 생성되는 일시적인 상태 정보를 말하는데, 인터넷 서버에서 인터넷 브라우저로부터 요청을 받으면, 서버는 해당 인터넷 브라우저에 대한 세션을 생성합니다. 클라이언트 -> 웹 서버 (요청) 웹 서버 -> 클라이언트 (세션 생성) 이 세션은, 웹 브라우저가 아닌 서버 측에서 유저의 인증 정보와 같은 상태 정보를 저장하고 관리합니다. 처음 요청을 보낼 때 웹 브라우저와 웹 서버 각각에 고유의 세션 ID가 생성이 되고, 클라이언트는 이후 요청을 보낼 때, 이전에 생성한 세션 ID를 서버로 전송하여 자신이 어떤 세션에 대한 요청을 보내는지 서버가 인식할 수 있도록 합니다. 세션 ID는 클라이언트와 웹 서버 간의 통신이 종료되면 사라지게 됩니다. 따..

기술면접 2023.04.09

Spring에서 제공하는 HTTP 클라이언트 라이브러리에 대해 말하시

RestTemplate와 WebClient는 Spring에서 제공하는 HTTP 클라이언트 라이브러리입니다. RestTemplate : RestTemplate은 Spring의 대표적인 HTTP 클라이언트 라이브러리 중 하나입니다. 간단한 RESTful 웹 서비스와의 통신에 적합하며, 기본적인 HTTP 요청과 응답을 처리할 수 있습니다. RestTemplate은 간단한 사용법과 높은 호환성으로 인해 다양한 프로젝트에서 사용되고 있습니다. WebClient : WebClient는 Spring 5에서 추가된 비동기 및 리액티브 프로그래밍을 지원하는 HTTP 클라이언트 라이브러리입니다. RestTemplate보다 더욱 유연하게 사용할 수 있으며, 리액티브 스트림 프로그래밍을 지원합니다. (리액티브 스트림 프로그래..

기술면접 2023.03.13

Rest Client 가 무엇인지 설명해 주세요

Rest Client는 *RESTful 웹 서비스를 사용하기 위한 클라이언트 애플리케이션이고. (1) 여러 가지 HTTP 클라이언트 라이브러리를 사용하여 RESTful 웹 서비스와 통신할 수 있는데, (2) 대표적으로 HttpClient, OkHttp, RestTemplate와 WebClient 등이 있습니다. (3) Rest Client는 HTTP 메서드를 사용하여 웹 서비스에 요청을 보내고, 응답을 받아서 처리할 수 있고, JSON,XML 등의 데이터 형식을 처리할 수 있으며 HTTP 요청 및 응답에 대한 정보를 추가할 수 있기 때문에 클라이언트와 서버 간의 상호작용을 단순화하고, 효율적으로 처리할 수 있어서 다른 웹 서비스와 통신하는 애플리케이션을 쉽게 구현할 수 있습니다. 나올 수 있는 질문들 -..

기술면접 2023.03.13

Spring MVC 프레임워크의 요청처리 과정

1. 클라이언트가 웹 브라우저에서 HTTP 요청을 전송 2. DispatcherServlet 이 이 요청을 받아들임 3. DispatcherServlet은 요청 처리를 위해 HandlerMapping에게 요청을 전달 4. HandlerMapping은 요청 URL과 일치하는 컨트롤러(Controller)를 찾아서 DispatcherServlet에게 반환 5. DispatcherServlet은 HandlerAdapter에게 Controller 호출을 위임 6. HandlerAdapter는 Controller를 호출해서 Model 데이터와 View 이름을 반환 7. DispatcherServlet 은 ViewResolver에게 view 이름을 전달하며 검색 요청 8. ViewResolver는 View 이름을 ..

기술면접 2023.03.13

트랜잭션(transaction)

트랜잭션이란 트랜잭션이란 데이터베이스의 상태를 변화시키게 해서 수행하는 작업의 '단위'를 뜻합니다. SELECT,INSERT,DELETE와 같이 SQL 을 통해 데이터베이스의 접근을 하여 상태를 변화시킬 수 있는데 SELECT 와 같이 명령어 하나가 트랜잭션이 아닌 개발자가 원하는 명령들의 총 과정 , 그 작업 단위가 하나의 트랜잭션이라 불리웁니다. 따라서 개발자의 역량에 따라 트랜잭션의 설계를 얼마나 적절하게 하는지가 결정될 수 있습니다. 트랜잭션 특징 이러한 트랜잭션의 특징에는 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 지속성(Durability) 이렇게 4가지 존재합니다 트랜잭션은 단순한 하나의 행위,명령이 아닌 작업의 묶음, 단위라고 했는데 원자성(A..

기술면접 2023.02.11

추상 클래스와 인터페이스의 차이는 무엇인가요

추상 클래스는 메서드 시그니처만 존재하고 바디가 선언되어있지 않은 추상 메서드를 포함하는 클래스이기에 바로 객체를 생성하는 것이 불가능합니다. 이는 , 상속관계에 있어 유연하게 대응하기 위해 사용될 수 있다는 장점이 있습니다. 또한 클래스 내에 추상 메소드가 하나 이상 포함되거나 abstract로 정의된 경우를 말하는데 반면에 인터페이스는 상수(static final)와 추상 메서드(abstract method)의 집합입니다 인터페이스는 추상 클래스보다 추상화 정도가 높으며 추상클래스와는 다르게 구현부가 있는 일반 메서드,일반 멤버 변수를 가질 수 없다는 특징이 있으며 모든 메소드가 추상 메소드로 구성되어져 있습니다. 즉, 추상클래스에는 추상 메소드가 아닌 일반 메소드도 포함 될 수 있다는 차이가 존재합..

기술면접 2023.01.11

자바의 메모리 영역에 대해 설명하시오

자바의 메모리 영역은 (Method, Heap, Stack)area / PC Register Native Method Stack 이렇게 5가지로 구성되어져 있습니다. 먼저 Method 영역은static, class 영역이라고도 불리는데 전역변수나 static으로 선언되는 것들을 메모리에 상주시킵니다. 주로 클래스 정보, static변수, 변수 정보, 메소드 정보 등을 저장합니다. 그래서 우리가 클래스를 만들면 클래스에 대한 정보가 Method Area에 들어가게 됩니다. Heap 영역은 인스턴스를 생성할 때 생성되는 메모리 형식인데 new를 사용하여 객체를 만들 때 저장되고 참조형인 class,interface,enum,Array 등 자료형도 같이 저장됩니다. 힙의 참조 주소는 Stack Area 에서 ..

기술면접 2023.01.11

클래스와 객체에 대해 설명하시오

클래스는 무엇이고 객체는 무엇일까요? 클래스는 객체를 정의한 설계도 , 틀이라 생각할 수 있는데 저 같은 경우 가장 좋아하는 비유는 붕어빵 기계입니다. 여기서 클래스가 붕어빵 기계라면 붕어빵은 객체가 되는 거죠. 이러한 객체의 붕어빵 기계인 클래스는 어떻게 구성되어있을까요 클래스는 크게 네 가지의 요소로 구성되어있는데, 이는 클래스의 속성을 나타내는 변수인 필드 클래스의 기능을 나타내는 함수인 메서드 그리고 클래스의 객체를 생성하는 역할을 하는 생성자 마지막으로 클래스 내부의 클래스를 의미하는 이너 클래스로 구성되어있습니다. 이 네가지 요소 중 객체에 활용되는, 즉 붕어빵의 모양을 형성하는 요소들은 필드와 메서드 그리고 이너스 클래스 3가지 요소인데 주로 속성을 나타내는 변수인 필드와 기능을 나타내는 함..

기술면접 2023.01.11