관점지향 프로그래밍(AOP, Aspect Oriented Programming)은 무엇이고, 언제 사용할 수 있을까요?
더보기
AOP는 공통된 기능(로깅, 트랜잭션, 보안 등)을 핵심 비즈니스 로직과 분리하는 프로그래밍 기법입니다.
반복적으로 사용되는 공통 기능(횡단 관심사)을 분리하여 코드의 중복을 줄이고, 핵심 비즈니스 로직을 더 명확하게 유지할 때 사용할 수 있습니다.
- AOP의 주요 개념은 무엇인가요?
→ Aspect, Advice, Pointcut, JoinPoint, Weaving 등이 있습니다. - AOP의 주요 활용 사례는 무엇인가요?
→ 로깅, 트랜잭션 관리, 보안, 성능 모니터링 등에 사용됩니다. - AOP를 적용하는 방법은 무엇인가요?
→ @Aspect와 @Around, @Before, @After 등의 어노테이션을 사용합니다. - AOP와 OOP의 차이점은 무엇인가요?
→ OOP는 객체 중심, AOP는 공통 기능을 분리하여 관심사를 모듈화합니다. - Spring에서 AOP를 내부적으로 어떻게 구현하나요?
→ 프록시 패턴을 활용하여 메서드 실행 전후에 부가 기능을 삽입합니다.
Spring Security의 주요 기능에 대해 설명해주세요.
더보기
Spring Security는 인증과 인가 기능을 제공하며, 세션 관리, CSRF 방어, OAuth2 연동 등 다양한 보안 기능을 지원합니다.
- Spring Security에서 인증(Authentication)과 인가(Authorization)의 차이는?
→ 인증은 사용자의 신원 확인, 인가는 권한 검사를 의미합니다. - Spring Security에서 사용자를 인증하는 방식은?
→ 기본적으로 UserDetailsService를 구현하여 사용자를 검증합니다. - JWT를 활용한 인증 방식은 어떻게 동작하나요?
→ 클라이언트가 JWT를 포함하여 요청하면 서버에서 검증 후 처리합니다. - OAuth2 인증을 Spring Security에서 어떻게 적용할 수 있나요?
→ Spring Security OAuth2 모듈을 사용하여 구현할 수 있습니다. - Spring Security에서 필터 기반 보안이 적용되는 과정은?
→ DelegatingFilterProxy → SecurityFilterChain → 각 필터(AuthenticationFilter 등) 순서로 실행됩니다.
커넥션 풀이 무엇인지, Spring Boot에서의 커넥션 풀로는 어떤 것을 사용하는지 설명해주세요.
더보기
커넥션 풀은 DB 연결을 미리 생성해두고 재사용하여 성능을 최적화하는 기술이며, Spring Boot에서는 HikariCP를 기본 커넥션 풀로 사용합니다.
- 커넥션 풀이 필요한 이유는 무엇인가요?
→ 매번 DB 연결을 생성하면 성능이 저하되므로, 재사용을 위해 필요합니다. - Spring Boot에서 HikariCP가 기본 커넥션 풀로 사용되는 이유는?
→ 빠른 성능, 낮은 메모리 사용량, 안정적인 연결 관리 때문입니다. - 커넥션 풀의 주요 설정 옵션에는 어떤 것이 있나요?
→ 최대 커넥션 수, 최소 유휴 커넥션 수, 타임아웃 설정 등이 있습니다. - HikariCP 외에 사용할 수 있는 커넥션 풀은 무엇이 있나요?
→ Tomcat JDBC Pool, C3P0, DBCP 등이 있습니다. - 커넥션 풀에서 커넥션이 부족하면 어떻게 되나요?
→ 요청이 대기 상태가 되거나, 일정 시간이 지나면 예외가 발생합니다.
Lazy Loading, Eager Loading에 대해 설명해주세요.
더보기
Lazy Loading은 필요한 시점에 데이터를 로딩하는 방식이며, Eager Loading은 즉시 데이터를 로딩하는 방식입니다.
- Lazy Loading을 사용할 때 발생할 수 있는 문제는?
→ 영속성 컨텍스트가 닫힌 후 데이터를 조회하면 LazyInitializationException이 발생합니다. - Eager Loading이 성능에 미치는 영향은?
→ 불필요한 데이터를 미리 로딩하여 메모리 사용량이 증가할 수 있습니다. - Lazy Loading과 Eager Loading 중 어느 것이 더 효율적인가요?
→ 상황에 따라 다르며, 조회 빈도가 낮은 연관 데이터를 Lazy Loading으로 설정하는 것이 일반적입니다. - JPA에서 Lazy Loading을 설정하는 방법은?
→ @OneToMany(fetch = FetchType.LAZY) 또는 @ManyToOne(fetch = FetchType.LAZY)를 사용합니다. - N+1 문제는 무엇이며, 이를 해결하는 방법은?
→ 연관된 엔터티를 개별적으로 조회하여 발생하는 문제로, Fetch Join 또는 @EntityGraph를 활용해 해결할 수 있습니다.
Spring MVC에 대해 설명해주세요.
더보기
Spring MVC는 Model, View, Controller 패턴을 기반으로 웹 애플리케이션을 개발할 수 있도록 지원하는 프레임워크입니다.
- Spring MVC의 요청 흐름을 설명해주세요.
→ DispatcherServlet → HandlerMapping → Controller → Service → Repository → ViewResolver 순으로 처리됩니다. - Controller와 RestController의 차이는 무엇인가요?
→ @Controller는 View를 반환하고, @RestController는 JSON/XML 데이터를 반환합니다. - ViewResolver의 역할은 무엇인가요?
→ 요청 결과를 클라이언트에게 반환할 적절한 뷰를 선택합니다. - Spring MVC에서 요청 매핑을 하는 방법은?
→ @RequestMapping, @GetMapping, @PostMapping 등을 사용합니다. - Spring MVC와 Spring WebFlux의 차이점은?
→ Spring MVC는 동기 방식이고, Spring WebFlux는 비동기/리액티브 방식입니다.
'study > CS' 카테고리의 다른 글
| CS 면접 예상 질문 - 네트워크(2) (0) | 2025.03.25 |
|---|---|
| CS 면접 예상 질문 - 네트워크(1) (0) | 2025.03.18 |
| CS 면접 예상 질문 - Spring(2) (0) | 2025.03.11 |
| CS 면접 예상 질문 - Spring(1) (0) | 2025.03.05 |
| CS 면접 예상 질문 - Java(3) (0) | 2025.03.04 |