Bellmin님의 면접 결과

40

총점

3

질문 수

0

좋아요

2

조회수

종합 평가

면접자님은 Spring MVC의 요청/응답 흐름, 인터셉터와 필터의 차이점, Spring Security의 필터 체인 동작 원리에 대해 상당히 깊은 이해도를 보여주셨습니다. 특히 서블릿 기반 아키텍처에서 디스패처 서블릿의 역할, 필터와 인터셉터의 실행 컨텍스트 차이, DelegatingFilterProxy와 FilterChainProxy의 연결 관계를 정확하게 설명하신 점이 인상적이었습니다. 다만 Spring Security의 필터 체인 실행 순서와 각 필터의 세부 역할에 대한 설명이 다소 개략적이었으므로, SecurityContextPersistenceFilter, UsernamePasswordAuthenticationFilter 등 주요 필터들의 구체적인 동작 방식과 순서에 대해 더 깊이 학습하시면 좋겠습니다. 또한 실제 프로젝트에서 이러한 개념들을 어떻게 활용했는지, 문제 해결 경험과 연결지어 답변하시면 기술적 이해도와 실무 적용 능력을 함께 보여줄 수 있을 것입니다.

질문별 상세 분석

커뮤니티 공개
Q1B

Spring MVC에서 요청/응답 흐름에 대해 설명해주세요.

응답 내용

SpringMVC 는 서블릿 기반의 자바 프레임워크로 Model, View, Controller 로 구성되어 있습니다. Model은 데이터 모델, View는 사용자에게 보여지는 데이터 구조로 JSON 또는 html 등을 의미합니다. 컨트롤러는 모델과 뷰 사이에 위치하여 작업을 중재하거나 전달해주는 역할을 수행합니다. 서블릿 기반의 구조에서는 애플리케이션 필터가 존재하는데, HTTP Request는 애플리케이션 필터들을 거친 후에 디스패처 서블릿으로 도달하게 됩니다. Dispatcher 서블릿은 프론트 컨트롤러 역할을 수행하는 서블릿 중 하나로, 스프링 프레임워크에서 구현한 서블릿입니다. Dispatcher 서블릿은 HTTP Request를 받으면, 핸들러 매핑을 통해서, 해당 요청을 처리할 컨트롤러를 찾아 요청을 전달합니다. 이 과정에서 데이터 바인딩이 일어날 수도 있습니다. 컨트롤러는 HTTP Request를 받은 이후 아키텍처에 따라서, Service 계층에 처리를 위임하고, Service 계층은 필요하다면 Persistence 계층에 접근하여 데이터를 저장하고, 읽어오는 작업을 수행합니다. 이후 서비스는 작업이 완료되면 컨트롤러에게 응답을 전달하고, 이후 컨트롤러는 응답을 인터셉터, 디스패처 서블릿, 필터 순으로 거쳐 클라이언트에게 HTTP Response 를 전달합니다.

AI 피드백

Spring MVC의 전체적인 요청/응답 흐름을 체계적으로 잘 설명해주셨고, 특히 DispatcherServlet의 프론트 컨트롤러 역할과 핸들러 매핑을 통한 컨트롤러 찾기, 그리고 Service-Persistence 계층 구조까지 포함한 설명이 매우 좋았습니다. 다만 Spring MVC의 핵심 구성요소들을 조금 더 구체적으로 언급하시면 더 완성도 높은 답변이 될 것 같습니다. 예를 들어 HandlerAdapter를 통한 컨트롤러 실행, ViewResolver를 통한 뷰 결정 과정, 그리고 인터셉터가 언제 어떻게 동작하는지에 대한 설명을 추가하시면 좋겠습니다. 또한 실제 URL 매핑 예시나 간단한 컨트롤러 메서드 예시를 들어주시면 이해하기 더 쉬운 설명이 될 것입니다.

Q2A

Spring MVC에서 인터셉터와 필터의 차이점과 각각의 활용 사례에 대해 설명해주세요.

응답 내용

인터셉터는 디스패처 서블릿 ~ 스프링 컨트롤러 사이에 위치하여, 디스패처 서블릿이 컨트롤러로 전달하기 전에 HTTP Request/Response를 가로채는 역할을 합니다. 주로 인증/인가, 로깅 등에 활용될 수 있지만, 인증/인가, 로깅과 같은 작업은 서블릿 필터에서도 충분히 수행이 가능합니다. 필터는 스프링 컨텍스트 밖 서블릿 컨텍스트 내에 위치하여, HTTP Request를 톰캣이 받아 서블릿으로 전달하기 전까지의 과정을 가로채고, 서블릿이 톰캣으로 Response를 전달하는 과정을 가로챕니다. 주로 인증/인가, 로깅과 같은 작업을 수행할 수 있으며, 스프링 시큐리티도 DelegatingFilterProxy를 사용하여 스프링 내에서 정의된 필터를 시큐리티 필터 체인으로 연결하여, 인증/인가의 과정을 필터 수준에서 처리합니다. 서블릿 필터는, 스프링 컨텍스트 내에 정의된 빈을 사용할 수 없다는 점이 단점이지만, DelegatingFilterProxy 라는 클래스가, 스프링 컨텍스트 내에 빈으로 등록된 Filter를 서블릿 컨테이너에서도 사용할 수 있게 해줍니다. 또한 필터에서 예외가 발생한다면, 이는 스프링 컨텍스트 밖에서 발생한 예외로 처리되기 때문에, 스프링에서 등록된 GlobalExceptionHandler가 에러를 캐치할 수 없게됩니다. 그래서 별도로 에러를 캐치하는 작업이 필요할 수 있습니다.

AI 피드백

인터셉터와 필터의 위치, 역할, 그리고 DelegatingFilterProxy와 예외 처리 차이점까지 매우 상세하고 정확하게 설명해주셨습니다. 특히 스프링 컨텍스트와 서블릿 컨텍스트의 경계를 명확히 구분하여 설명한 점과 스프링 시큐리티의 실제 구현 방식을 언급한 것이 인상적이었습니다. 다만 각각의 구체적인 활용 사례를 좀 더 명시적으로 제시해주시면 더욱 완성도 높은 답변이 될 것 같습니다. 예를 들어 "필터는 문자 인코딩 설정이나 CORS 처리에, 인터셉터는 사용자 권한별 메뉴 제어나 로그인 체크에 주로 활용된다"와 같은 구체적인 예시를 추가하시면 좋겠습니다.

Q3B

Spring Security의 필터 체인이 어떻게 동작하는지 자세히 설명해주세요. 특히 DelegatingFilterProxy와 FilterChainProxy의 역할에 대해 설명해주시고, 주요 보안 필터들의 실행 순서와 각각의 역할에 대해 알려주세요.

응답 내용

스프링 시큐리티의 필터체인은 서블릿 필터들 사이에 위치한 DelegatingFilterProxy로부터 시작됩니다. DelegatingFilterProxy : DelegatingFilterProxy는 스프링 내에서 빈으로 등록된 필터들을, 서블릿 컨텍스트에서도 사용할 수 있게 해주는 중요한 클래스입니다. OncePerRequestFilter 와 같은 인터페이스는 스프링에서 제공하는 인터페이스로 빈으로 등록이 되면, 서블릿 컨텍스트에서는 바로 사용할 수 없습니다. 하지만 DelegatingFilterProxy가 스프링 컨텍스트와 연결다리 역할을 해주어, 스프링 컨텍스트 내에서 빈으로 등록된 필터들을 사용할 수 있게 해줍니다. FilterChainProxy : 여러 필터 체인들을 연결해주는, 프록시 역할을 수행합니다. FilterChainProxy는 DelegaringFilterProxy와 SecurityFilterChain 들을 연결해주는 다리 역할을 수행합니다. 시큐리티 필터체인은 애플리케이션 내에 여러 개가 존재할 수 있는데, HTTP 요청이 시큐리티 필터 체인 중 하나에 매칭되면, 필터 체인에 연결된 필터들을 통과합니다. 이때 하나의 필터체인에 매칭되면 다른 필터 체인에는 매칭되지 않습니다. 주요 보안 필터로는 LoginFilter, CSRFFilter, LogoutFilter, AuthenticationFilter, AuthorizationFilter 가 존재합니다. 시큐리티 필터체인의 가장 마지막에 존재하는 필터는 AuthorizationFilter로 이는 앞에서 AuthenticationFilter에 의해 인증 과정을 수행하고, Authentication 객체가 만들어져서 SecurityContext에 저장되면, 저장된 Authentication 객체를 사용하여 인가 작업을 수행합니다. 인가 작업은 인증이 완료된 사용자가, 요청한 작업을 할 권한이 있는지 없는지 인가하는 작업을 의미합니다.

AI 피드백

Spring Security의 필터 체인 구조와 DelegatingFilterProxy, FilterChainProxy의 역할에 대해 정확하게 설명해주셨고, 특히 스프링 컨텍스트와 서블릿 컨텍스트 간의 연결 다리 역할을 잘 이해하고 계신 것 같습니다. 다만 주요 보안 필터들의 실행 순서에 대한 설명이 다소 부족했는데, 실제로는 SecurityContextPersistenceFilter → LogoutFilter → UsernamePasswordAuthenticationFilter → ExceptionTranslationFilter → FilterSecurityInterceptor(AuthorizationFilter) 순으로 동작합니다. 또한 언급하신 LoginFilter나 CSRFFilter, AuthenticationFilter는 정확한 필터명이 아니므로, UsernamePasswordAuthenticationFilter, CsrfFilter 등의 정확한 클래스명을 사용하시면 더 좋겠습니다. 각 필터의 구체적인 역할과 실행 순서에 대해 더 학습하시면 Spring Security에 대한 이해가 한층 깊어질 것 같습니다.

커뮤니티 공유 안내

• 이 결과는 AI가 분석한 내용이며, 학습 목적으로 커뮤니티에 공유됩니다.

• 좋아요를 눌러 유용한 답변에 반응을 남겨보세요.

• 개인정보는 포함되지 않으며, 면접 연습 개선을 위한 참고 자료로 활용됩니다.