study/CS
CS 면접 예상 질문 - Spring(2)
으녕오리
2025. 3. 11. 13:13
Spring Batch에 대해 설명해주세요.
더보기
-> Spring Batch는 대량의 데이터를 효율적으로 처리하는 프레임워크로, Job과 Step을 기반으로 구성되며 트랜잭션 관리, 병렬 처리, 재시작 기능 등을 제공합니다.
- Spring Batch의 주요 구성 요소는 무엇인가요?
→ Job, Step, JobLauncher, JobRepository, ItemReader, ItemProcessor, ItemWriter 등이 있습니다. - Job과 Step의 차이점은 무엇인가요?
→ Job은 배치 작업의 전체 흐름을 관리하고, Step은 개별적인 처리 단계를 담당합니다. - Spring Batch에서 트랜잭션 관리는 어떻게 이루어지나요?
→ 각 Step에서 Chunk 기반 처리 또는 Tasklet 기반으로 트랜잭션을 관리합니다. - ItemReader와 ItemWriter의 역할은 무엇인가요?
→ ItemReader는 데이터를 읽고, ItemWriter는 데이터를 저장하는 역할을 합니다. - Spring Batch에서 배치 작업을 예약 실행하는 방법은?
→ Spring Scheduler 또는 Quartz 같은 스케줄러를 사용하여 실행할 수 있습니다.
Spring의 레이어드 아키텍처에 대해 설명해주세요.
더보기
-> Spring의 레이어드 아키텍처는 Presentation Layer, Service Layer, Repository Layer로 구성되며,
각각 요청 처리, 비즈니스 로직, 데이터 접근을 담당합니다.
- 각 레이어의 역할을 자세히 설명해주세요.
→ Presentation Layer는 사용자 요청을 처리하고, Service Layer는 비즈니스 로직을 담당하며, Repository Layer는 DB와의 직접적인 상호작용을 수행합니다. - Service Layer를 두는 이유는 무엇인가요?
→ 비즈니스 로직을 분리하여 유지보수를 용이하게 하고, 재사용성을 높이기 위해서입니다. - Controller에서 Repository를 직접 호출하면 안 되는 이유는?
→ 레이어 간 결합도를 낮추고, 비즈니스 로직을 분리하여 코드의 가독성과 유지보수성을 높이기 위해서입니다. - DTO와 Entity를 분리하는 이유는 무엇인가요?
→ Entity는 DB 테이블과 매핑되고, DTO는 데이터를 전달하는 용도로 사용하여 역할을 분리하기 위해서입니다. - AOP(Aspect-Oriented Programming)와 레이어드 아키텍처는 어떻게 연관되나요?
→ AOP를 활용하면 각 레이어에서 공통적으로 필요한 로깅, 트랜잭션 관리 등을 분리하여 적용할 수 있습니다.
IoC(Inversion of Control)와 DI(Dependency Injection)에 대해 설명해주세요.
더보기
-> IoC는 객체의 생성과 관리 권한을 개발자가 아닌 컨테이너가 가지는 개념이며, DI는 IoC의 구현 방식 중 하나로 객체 간의 의존성을 외부에서 주입하는 방식입니다.
- IoC를 사용하면 얻을 수 있는 장점은 무엇인가요?
→ 객체의 생성과 생명 주기를 컨테이너가 관리하여 결합도를 낮추고 확장성을 높일 수 있습니다. - DI의 주요 방식에는 어떤 것이 있나요?
→ 생성자 주입, 필드 주입, 메서드 주입이 있습니다. - Spring에서 DI를 구현하는 방법은 무엇인가요?
→ @Autowired, @Inject, @Resource 등의 어노테이션을 사용하여 구현할 수 있습니다. - Spring 컨테이너의 역할은 무엇인가요?
→ 빈을 생성하고 관리하며, DI를 통해 객체 간의 의존성을 해결합니다. - IoC와 DI의 차이점은 무엇인가요?
→ IoC는 제어권을 프레임워크가 갖는 개념이고, DI는 IoC를 실현하는 방법 중 하나입니다.
WS(Web Server) vs WAS(Web Application Server)을 설명해주세요.
더보기
-> WS는 정적 리소스를 처리하는 서버이고, WAS는 웹 애플리케이션을 실행하며 동적 처리를 담당하는 서버입니다.
- 대표적인 Web Server와 WAS는 무엇인가요?
→ Web Server는 Nginx, Apache가 있으며, WAS는 Tomcat, JBoss, WebLogic 등이 있습니다. - WAS 없이 Web Server만 사용할 수 있나요?
→ 정적 페이지 제공만 가능하며, 동적 처리는 불가능합니다. - Web Server와 WAS를 분리하는 이유는 무엇인가요?
→ 성능 향상, 로드 밸런싱, 보안 강화 등을 위해 분리합니다. - WAS의 주요 역할은 무엇인가요?
→ HTTP 요청을 처리하고, 서블릿을 실행하며, 트랜잭션 관리와 세션 관리를 수행합니다. - Spring Boot는 WAS가 필요한가요?
→ Spring Boot는 기본적으로 내장 WAS(Tomcat)를 포함하고 있어 별도의 WAS 없이 실행할 수 있습니다.
Spring Bean의 라이프사이클은 어떻게 관리되는지 설명해주세요.
더보기
-> 스프링 빈은 객체 생성 → 의존성 주입 → 초기화(초기화 메서드 호출) → 사용 → 소멸(소멸 메서드 호출) 단계를 거칩니다.
- 스프링 빈의 초기화 과정에서 실행되는 메서드는?
→ @PostConstruct 또는 InitializingBean의 afterPropertiesSet()을 사용할 수 있습니다. - 스프링 빈의 소멸 과정에서 실행되는 메서드는?
→ @PreDestroy 또는 DisposableBean의 destroy()를 사용할 수 있습니다. - Bean의 라이프사이클을 커스텀할 수 있는 방법은?
→ @Bean(initMethod, destroyMethod) 또는 인터페이스를 구현하여 가능합니다. - 싱글톤 빈과 프로토타입 빈의 차이점은 무엇인가요?
→ 싱글톤 빈은 컨테이너에서 하나만 생성되고, 프로토타입 빈은 요청 시마다 새로운 객체가 생성됩니다. - BeanPostProcessor의 역할은 무엇인가요?
→ 빈의 초기화 전후에 커스텀 로직을 추가할 수 있도록 도와줍니다.