💡 Spring Security에 대해 설명해주세요.
- Spring Security는 스프링 기반 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크입니다.
- 주로 서블릿 필터와 이들로 구성된 필터체인으로의 위임모델을 사용하며, 보안과 관련하여 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 작성하지 않아도 된다는 장점이 있습니다.
💡 OAuth 2.0에 대해 설명해주세요.
- OAuth 2.0(Open Authorization 2.0)은 인증을 위한 개방형 표준 프로토콜입니다.
- 이 프로토콜에서는 Third-Party 프로그램에게 리소스 소유자를 대신하여 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식을 제공합니다.
- 구글, 페이스북, 카카오, 네이버 등에서 제공하는 간편 로그인 기능도 OAuth 2.0 프로토콜 기반의 사용자 인증 기능을 제공하고 있습니다.
- 💡 OAuth 2.0의 흐름에 대해 간단히 설명해주세요.
- 우선 사용자가 클라이언트에게 사용 요청을 보냅니다.
- 그럼 클라이언트는 권한 서버에 권한 부여 승인 코드 요청을 보내고,
- 권한 서버에서 제공하는 로그인 페이지를 띄워 사용자에게 보여줍니다.
- 이후 사용자가 로그인 하면 권한 서버는 권한 부여 승인 코드 요청으로 전달받은 redirect_url로 인증 코드를 전달합니다.
- 이렇게 전달된 인증 코드는 권한 서버에서 제공하는 API를 통해 Access Token으로 교환되며 로그인이 완료됩니다.
- 💡 OAuth 2.0의 흐름에 대해 간단히 설명해주세요.
💡 Spring Filter와 Interceptor에 대해 설명하고, 사용 예시를 설명해주세요.
- Spring Filter
- 스프링 필터는 DispatcherServlet 이전에 실행되어, 요청의 앞단에서 요청내용을 변경하거나, 여러가지 체크를 수행할 수 있습니다.
- 또한 자원의 처리가 끝난 후 그 응답내용에 대해서도 변경하는 처리를 할 수 있습니다.
- 일반적으로 인코딩 변환 처리, XSS방어 등의 대한 처리로 사용됩니다.
- Interceptor
- 스프링 필터는 스프링 컨텍스트 외부에 존재하여 스프링과 무관한 자원에 대해 동작하지만 인터셉터는 스프링의 DistpatcherServlet이 컨트롤러를 호출하기 전/후로 끼어들기 때문에 스프링 컨텍스트 내부에서 Controller에 관한 요청과 응답에 대해 처리를 수행합니다.
- 따라서 인터셉터는 스프링의 모든 빈 객체에 접근할 수 있으며, 로그인 체크, 권한체크, 프로그램 실행시간 계산작업, 로그확인 등의 업무를 처리하는데 사용될 수 있습니다.
💡 SMTP에 대해 설명해주세요.
- SMTP(Simple Mail Transfer Protocol)란 인터넷 연결을 통하여 이메일을 보낼 때 사용되는 프로토콜을 일컫습니다.
- 즉, 이메일을 전송할 때에 사용되는 규약 또는 절차를 말하며, 발신자가 발신한 이메일을 메일 서버에서 받아서 전달하는 과정의 기술 표준입니다.
- 따라서 현존하는 거의 모든 이메일 시스템은 SMTP 프로토콜을 사용해 만들어 졌습니다.
💡 Lombok 라이브러리에 대해 알고 있나요? 알고 있다면 롬복이 만드는 메소드들이 생성되는 시점은 언제인가요?
- Lombok은 반복되는 getter, setter, toString 등의 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리로써,
- 여러가지 어노테이션을 제공하고, 이를 기반으로 컴파일과정에서 코드를 생성해 주는 방식으로 동작하는 라이브러리입니다.
- 이를 어노테이션 프로세싱이라고 하는데, 어노테이션 프로세싱은 자바 컴파일러가 컴파일 단계에서 어노테이션을 분석하고 처리하는 기법을 말합니다.
💡 JPA(Java Persistent API)에 대해 설명해주세요.
- JPA는 자바 ORM(Object Relational Mapping) 기술에 대한 API 표준 명세를 뜻합니다.
- ORM 기술이란 말 그대로 객체와 관계형 데이터베이스를 매핑해주는 기술을 말합니다.
- 즉, 객체는 객체대로, 관계형 데이터베이스는 관계형 데이터베이스대로 설계하고, ORM 프레임워크가 중간에서 매핑을 해주는 것을 의미합니다.
- 이러한 JPA는 인터페이스의 모음 즉, 단순한 명세이기 때문에 구현이 없습니다.
- 그저 자바 애플리케이션에서 관계형 데이터베이스를 어떻게 사용할지를 정의하는 하나의 방법일 뿐입니다.
- 따라서 이러한 JPA의 구현체가 있어야 JPA를 사용할 수 있습니다.
- 💡 JPA를 구현하는 구현체에는 어떤 것들이 있는지 설명해주세요.
- JPA를 구현하는 대표적인 구현체에는 Hibernate와 Spring Data JPA가 있습니다.
- Hibernate
- Hibernate는 개발된 지 10년이 넘었으며, 그 만큼 대중적으로 많이 이용되는 JPA 구현체입니다.
- JPA의 핵심인 EntityManagerFactory, EntityManager, EntityTransaction 등을 상속받아 구현하며, 내부적으로 JDBC를 이용해 관계형 데이터베이스와 커넥션을 맺고 상호작용합니다.
- Spring Data JPA
- Spring Data JPA는 JPA를 더 쉽게 사용하기 위한 Spring Data 프레임워크의 한 파트로, JPA를 이용한 구현체를 한 단계 더 추상화시켜 더 쉽고 간편하게 JPA를 이용한 프로젝트를 개발할 수 있게 해주는 Spring 모듈입니다.
- 이러한 Spring Data JPA의 핵심은 바로 Repository입니다.
- Spring Data JPA는 JPA를 한 단계 더 추상화시킨 Repository 인터페이스를 제공함으로써, 사용자가 Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면, 스프링이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어서 Bean으로 등록해주는 것입니다.
- 💡 JPA를 구현하는 구현체에는 어떤 것들이 있는지 설명해주세요.
💡 AJAX에 대해 설명해주세요.
- AJAX(Asynchronous Javascript And XML)란, JavaScript의 라이브러리 중 하나이며, HTML, CSS, 자바스크립트, DOM, XML 등 기존에 사용되던 여러 기술을 함께 사용하는 새로운 개발 기법입니다.
- 브라우저가 가지고있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고도 페이지의 일부만을 위한 데이터를 로드하는 기법이며, JavaScript를 사용하여 클라이언트와 서버간에 XML 데이터를 주고받는 비동기 통신 기술입니다.
- 요약하자면, 자바스크립트를 통해서 서버에 데이터를 요청하는 기술이라고 말할 수 있습니다.
💡 더티 체킹(Dirty Checking)에 대해 설명해주세요.
- 더티 체킹이란 JPA에서 제공하는 기능으로, 트랜잭션이 끝나는 시점에 변화가 있는 모든 엔티티 객체를 데이터베이스에 자동으로 반영해주는 기술을 말합니다.
- 해당 기능은 영속성 컨텍스트가 관리하는 엔티티에만 적용되며, 즉 준영속/비영속 상태의 엔티티는 더티 체킹 대상에서 제외됩니다.
'🎤 Tech Interview' 카테고리의 다른 글
[Tech Interview] Part 8. ETC (0) | 2023.06.05 |
---|---|
[Tech Interview] Part 7. Back-End (0) | 2023.06.03 |
[Tech Interview] Part 6. Operation System (0) | 2023.06.02 |
[Tech Interview] Part 5. Network (0) | 2023.05.29 |
[Tech Interview] Part 4. Algorithm (0) | 2023.05.24 |