[Tech Interview] Part 9. Project

2023. 7. 9. 11:21·🎤 Tech Interview

💡 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으로 교환되며 로그인이 완료됩니다.

💡 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으로 등록해주는 것입니다.

💡 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
'🎤 Tech Interview' 카테고리의 다른 글
  • [Tech Interview] Part 8. ETC
  • [Tech Interview] Part 7. Back-End
  • [Tech Interview] Part 6. Operation System
  • [Tech Interview] Part 5. Network
Baeg-won
Baeg-won
  • Baeg-won
    좋았다면 추억이고 나빴다면 경험이다.
    Baeg-won
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 🍃 Spring, Spring Boot
        • 스프링 프레임워크 기초
        • 스프링 핵심 원리 - 기본편
        • 자바 ORM 표준 JPA 프로그래밍 - 기본편
        • 스프링 MVC
        • 실전! 스프링 부트와 JPA 활용1 - 웹 애플리..
      • 🥑 Web Technoloy
      • 🚗 Backend Toy Project
        • 스프링 부트 게시판
        • Photogram
        • Baeg-won Clothing Gallery
      • 🥇 Problem Solving
        • Breadth-First Search
        • Depth-First Search
        • Backtracking
        • Simulation
        • Two-pointer
        • Binary Search
        • Greedy
        • Dynamic Programming
        • Minimum Spanning Tree
        • Dijkstra
        • Floyd warshall
      • ☕ Java
        • 명품 자바 에센셜
        • Applications
      • 🍦 JavaScript
        • JavaScript 기초
      • 🐧 Linux
        • 이것이 리눅스다(CentOS 8)
      • 📟 Database
        • 혼자 공부하는 SQL
      • 🧬 Data Structure
      • 🎬 HTML
      • 🎤 Tech Interview
      • 📌 etc
        • Unity 2D Raising Jelly Game
        • C++
        • 영어 쉐도잉
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Baeg-won
[Tech Interview] Part 9. Project
상단으로

티스토리툴바