알리 P7 사장님이 공유 한 22 개의 봄 부츠 인터뷰 질문이 드디어 아무 이유없이 나왔습니다!

Spring Boot 인터뷰 질문

1. 스프링 부트 란?

2. Spring Boot의 장점은 무엇입니까?

3. JavaConfig 란 무엇입니까?

4. 서버를 다시 시작하지 않고 Spring Boot에서 변경 사항을 다시로드하는 방법은 무엇입니까?

5. Spring Boot의 모니터는 무엇입니까?

6. Spring Boot에서 Actuator 엔드 포인트 보안을 비활성화하는 방법은 무엇입니까?

7. 커스텀 포트에서 Spring Boot 애플리케이션을 실행하는 방법은 무엇입니까?

8. YAML이란 무엇입니까?

9. Spring Boot 애플리케이션의 보안을 실현하는 방법은 무엇입니까?

10. Spring Boot와 ActiveMQ를 통합하는 방법은 무엇입니까?

11. Spring Boot를 사용하여 페이징 및 정렬을 구현하는 방법은 무엇입니까?

12. Swagger는 무엇입니까? Spring Boot로 구현 했습니까?

13. Spring Profiles는 무엇입니까?

14. Spring Batch 란 무엇입니까?

15. FreeMarker 템플릿이란 무엇입니까?

16. Spring Boot를 사용하여 예외 처리를 구현하는 방법은 무엇입니까?

17. 어떤 스타터 메이븐 의존성을 사용 했습니까?

18. CSRF 공격이란 무엇입니까?

19. WebSocket은 무엇입니까?

20. AOP 란 무엇입니까?

21. Apache Kafka 란 무엇입니까?

22. 모든 Spring Boot 마이크로 서비스를 어떻게 모니터링합니까?

 

1. 스프링 부트 란?

수년에 걸쳐 새로운 기능이 추가되면서 봄은 점점 더 복잡해졌습니다. Spring 공식 웹 사이트 페이지를 방문하면 애플리케이션에서 사용할 수있는 Spring 프로젝트의 다양한 기능을 모두 볼 수 있습니다. 새 Spring 프로젝트를 시작해야하는 경우 빌드 경로를 추가하거나 Maven 종속성을 추가하고 애플리케이션 서버를 구성하고 Spring 구성을 추가해야합니다. 따라서 새로운 봄 프로젝트를 시작하려면 많은 노력이 필요합니다. 이제 모든 작업을 처음부터해야하기 때문입니다.

Spring Boot는이 문제에 대한 해결책입니다. Spring Boot는 기존 Spring 프레임 워크 위에 빌드되었습니다. 스프링 부트를 사용하면 이전에해야했던 모든 상용구 코드와 구성을 피할 수 있습니다. 따라서 Spring Boot는 최소한의 작업으로 기존 Spring 기능을보다 강력하게 사용할 수 있도록 도와줍니다.

 

2. Spring Boot의 장점은 무엇입니까?

Spring Boot의 장점은 다음과 같습니다.

1. 개발 및 테스트 시간과 노력을 줄입니다.

2. JavaConfig를 사용하면 XML 사용을 피하는 데 도움이됩니다.

3. 많은 Maven 가져 오기 및 다양한 버전 충돌을 피하십시오.

4. 조언과 개발 방법을 제공합니다.

5. 기본값을 제공하여 신속하게 개발을 시작합니다.

6. 별도의 웹 서버가 필요하지 않습니다. 이것은 더 이상 Tomcat, Glassfish 또는 다른 것을 시작할 필요가 없음을 의미합니다.

7. web.xml 파일이 없기 때문에 더 적은 구성이 필요합니다. @Configuration으로 주석이 달린 클래스를 추가하고 @Bean으로 주석이 달린 메소드를 추가하면 Spring이 자동으로 객체를로드하고 이전과 같이 관리합니다. Spring이 필요한 종속성을 자동으로로드하도록 Bean 메소드에 @Autowired를 추가 할 수도 있습니다.

8. 환경 기반 구성 이러한 속성을 사용하여 사용중인 환경을 애플리케이션에 전달할 수 있습니다. -Dspring.profiles.active = {enviornment}. 메인 애플리케이션 속성 파일을로드 한 후 Spring은 (application {environment} .properties)에 후속 애플리케이션 속성 파일을로드합니다.

 

3. JavaConfig 란 무엇입니까?

Spring JavaConfig는 Spring 커뮤니티의 제품으로 Spring IoC 컨테이너를 구성하기위한 순수한 Java 메소드를 제공합니다. 따라서 XML 구성 사용을 피하는 데 도움이됩니다. JavaConfig 사용의 장점은 다음과 같습니다.

(1) 객체 지향 구성. 구성은 JavaConfig에서 클래스로 정의되기 때문에 사용자는 Java의 객체 지향 기능을 최대한 활용할 수 있습니다. 하나의 구성 클래스는 다른 클래스를 상속하고 @Bean 메서드를 재정의 할 수 있습니다.

(2) XML 구성을 줄이거 나 제거합니다. 의존성 주입의 원리를 기반으로 한 외부화 된 구성의 이점이 입증되었습니다. 그러나 많은 개발자는 XML과 Java간에 전환하기를 원하지 않습니다. JavaConfig는 개발자에게 XML 구성 개념과 유사한 Spring 컨테이너를 구성하는 순수한 Java 메소드를 제공합니다. 기술적 인 관점에서 컨테이너를 구성하기 위해 JavaConfig 구성 클래스 만 사용하는 것이 가능하지만 실제로 많은 사람들은 JavaConfig를 XML과 혼합 및 일치시키는 것이 이상적이라고 생각합니다.

(3) 유형 안전성 및 리팩토링 친화적. JavaConfig는 Spring 컨테이너를 구성하는 형식이 안전한 방법을 제공합니다. Java 5.0의 제네릭 지원 덕분에 빈은 이제 캐스팅이나 문자열 기반 조회없이 이름 대신 유형별로 검색 할 수 있습니다.

 

4. 서버를 다시 시작하지 않고 Spring Boot에서 변경 사항을 다시로드하는 방법은 무엇입니까?

이것은 DEV 도구를 사용하여 달성 할 수 있습니다. 이 종속성을 사용하면 변경 사항을 저장할 수 있으며 포함 된 바람둥이가 다시 시작됩니다. Spring Boot에는 개발자의 생산성을 향상시키는 데 도움이되는 개발 도구 (DevTools) 모듈이 있습니다. Java 개발자가 직면 한 주요 과제 중 하나는 파일 변경 사항을 서버에 자동으로 배포하고 서버를 자동으로 다시 시작하는 것입니다. 개발자는 서버를 다시 시작하지 않고도 Spring Boot에서 변경 사항을 다시로드 할 수 있습니다. 이렇게하면 매번 수동으로 변경 사항을 배포 할 필요가 없습니다. Spring Boot는 첫 번째 버전을 출시했을 때이 기능이 없었습니다. 이것은 개발자에게 가장 많이 요청되는 기능입니다. DevTools 모듈은 개발자의 요구를 완전히 충족합니다. 이 모듈은 프로덕션 환경에서 비활성화됩니다. 또한 더 나은 애플리케이션 테스트를 위해 H2 데이터베이스 콘솔을 제공합니다.

 
  1. <dependency>

  2. <groupId>org.springframework.boot</groupId>

  3. <artifactId>spring-boot-devtools</artifactId>

  4. <optional>true</optional>

  5.  

 

5. Spring Boot의 모니터는 무엇입니까?

스프링 부트 액추에이터는 스프링 부트 프레임 워크의 중요한 기능 중 하나입니다. Spring 부트 모니터는 프로덕션 환경에서 실행중인 애플리케이션의 현재 상태에 액세스하는 데 도움이됩니다. 프로덕션 환경에서 확인하고 모니터링해야하는 몇 가지 지표가 있습니다. 일부 외부 응용 프로그램도 이러한 서비스를 사용하여 관련 직원에게 경고 메시지를 트리거 할 수 있습니다. 모니터 모듈은 상태를 확인하기 위해 HTTP URL로 직접 액세스 할 수있는 REST 엔드 포인트 세트를 노출합니다.

 

6. Spring Boot에서 Actuator 엔드 포인트 보안을 비활성화하는 방법은 무엇입니까?

기본적으로 모든 민감한 HTTP 엔드 포인트는 안전하며 ACTUATOR 역할을 가진 사용자 만 액세스 할 수 있습니다. 보안은 표준 HttpServletRequest.isUserInRole 메서드를 사용하여 구현됩니다. 보안을 비활성화하는 데 사용할 수 있습니다. 액추에이터 엔드 포인트가 방화벽 뒤에서 액세스되는 경우에만 보안을 비활성화하는 것이 좋습니다.

 

7. 커스텀 포트에서 Spring Boot 애플리케이션을 실행하는 방법은 무엇입니까?

커스텀 포트에서 Spring Boot 애플리케이션을 실행하기 위해 application.properties에서 포트를 지정할 수 있습니다. server.port = 8090

 

8. YAML이란 무엇입니까?

YAML은 사람이 읽을 수있는 데이터 직렬화 언어입니다. 일반적으로 구성 파일에 사용됩니다. 속성 파일과 비교할 때 구성 파일에 복잡한 속성을 추가하려는 경우 YAML 파일은 더 구조화되고 덜 혼동됩니다. YAML에는 계층 적 구성 데이터가 있음을 알 수 있습니다.

 

9. Spring Boot 애플리케이션의 보안을 실현하는 방법은 무엇입니까?

Spring Boot의 보안을 달성하기 위해 spring-boot-starter-security 의존성을 사용하고 보안 설정을 추가해야합니다. 코드가 거의 필요하지 않습니다. 구성 클래스는 WebSecurityConfigurerAdapter를 확장하고 해당 메서드를 재정의해야합니다.

 

10. Spring Boot와 ActiveMQ를 통합하는 방법은 무엇입니까?

Spring Boot와 ActiveMQ를 통합하기 위해 종속성을 사용합니다. 구성이 매우 적고 상용구 코드가 필요하지 않습니다.

 

11. Spring Boot를 사용하여 페이징 및 정렬을 구현하는 방법은 무엇입니까?

Spring Boot를 사용하여 페이징을 구현하는 것은 매우 간단합니다. SpringData-JPA를 사용하여 페이징 가능을 저장소 메소드에 전달하십시오.

 

12. Swagger는 무엇입니까? Spring Boot로 구현 했습니까?

Swagger는 API를 시각화하는 데 널리 사용되며 Swagger UI를 사용하여 프런트 엔드 개발자에게 온라인 샌드 박스를 제공합니다. Swagger는 RESTful 웹 서비스, 사양 및 완전한 프레임 워크 구현의 시각적 표현을 생성하기위한 도구입니다. 이를 통해 서버와 동일한 속도로 문서를 업데이트 할 수 있습니다. Swagger를 통해 올바르게 정의되면 소비자는 최소한의 구현 논리를 사용하여 원격 서비스를 이해하고 상호 작용할 수 있습니다. 따라서 Swagger는 서비스를 호출 할 때 추측을 제거합니다.

 

13. Spring Profiles는 무엇입니까?

Spring Profiles는 사용자가 설정 파일 (dev, test, prod 등)을 기반으로 빈을 등록 할 수 있도록합니다. 따라서 애플리케이션이 개발 중일 때는 특정 Bean 만로드 할 수 있고 PRODUCTION에서는 특정 다른 Bean을로드 할 수 있습니다. Swagger 문서가 QA 환경에만 적용되고 다른 모든 문서는 비활성화되어 있어야한다는 요구 사항이 있다고 가정합니다. 이는 구성 파일을 사용하여 수행 할 수 있습니다. Spring Boot를 사용하면 구성 파일을 매우 쉽게 사용할 수 있습니다.

 

14. Spring Batch 란 무엇입니까?

Spring Boot Batch는 재사용 가능한 기능을 제공하며, 이러한 기능은 로그 / 추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너 뛰기 및 리소스 관리를 포함하여 많은 레코드를 처리 할 때 매우 중요합니다. 또한보다 진보 된 기술 서비스와 기능을 제공하며 최적화 및 파티셔닝 기술을 통해 매우 높은 배치 및 고성능 배치 처리 작업을 실현할 수 있습니다. 간단하고 복잡한 대규모 일괄 처리 작업은 프레임 워크를 사용하여 확장 성이 뛰어난 방식으로 중요하고 많은 양의 정보를 처리 할 수 ​​있습니다.

 

15. FreeMarker 템플릿이란 무엇입니까?

FreeMarker는 처음에 동적 웹 페이지 생성을위한 MVC 소프트웨어 아키텍처 사용에 초점을 맞춘 Java 기반 템플릿 엔진입니다. Freemarker 사용의 주요 이점은 프레젠테이션 계층과 비즈니스 계층이 완전히 분리된다는 것입니다. 프로그래머는 애플리케이션 코드를 처리 할 수 ​​있고 디자이너는 html 페이지 디자인을 처리 할 수 ​​있습니다. 마지막으로 freemarker를 사용하여 이들을 결합하여 최종 출력 페이지를 제공합니다.

 

16. Spring Boot를 사용하여 예외 처리를 구현하는 방법은 무엇입니까?

Spring은 예외를 처리하기 위해 ControllerAdvice를 사용하는 매우 유용한 방법을 제공합니다. 컨트롤러 클래스가 던진 모든 예외를 처리하기 위해 ControlerAdvice 클래스를 구현합니다.

 

17. 어떤 스타터 메이븐 의존성을 사용 했습니까?

다음 종속성 중 일부가 사용됩니다.

스프링 부트 스타터 activemq

스프링 부트 스타터 보안

이를 통해 종속성을 줄이고 버전 충돌을 줄일 수 있습니다.

 

18. CSRF 공격이란 무엇입니까?

CSRF는 교차 사이트 요청 위조를 나타냅니다. 이는 최종 사용자가 현재 인증 된 웹 응용 프로그램에서 원치 않는 작업을 수행하도록하는 공격입니다. CSRF 공격은 공격자가 위조 된 요청에 대한 응답을 볼 수 없기 때문에 특히 데이터 절도가 아닌 상태 변경 요청을 대상으로합니다.

 

19. WebSocket은 무엇입니까?

WebSocket은 단일 TCP 연결을 통해 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜입니다.

1. WebSocket은 양방향 사용 WebSocket 클라이언트 또는 서버로 메시지 전송을 시작합니다.

2. WebSocket은 전이중 클라이언트이며 서버 통신은 서로 독립적입니다.

3. 단일 TCP 연결-초기 연결은 HTTP를 사용하고이 연결은 소켓 기반 연결로 업그레이드됩니다. 그러면이 단일 연결이 향후 모든 통신에 사용됩니다.

4. http와 비교하여 WebSocket 메시지 데이터 교환이 훨씬 가볍습니다.

 

20. AOP 란 무엇입니까?

소프트웨어 개발 프로세스에서 애플리케이션의 여러 지점에 걸쳐있는 기능을 교차 문제라고합니다. 이러한 교차 문제는 애플리케이션의 주요 비즈니스 로직과 다릅니다. 따라서 이러한 교차 우려 사항을 비즈니스 로직과 분리하는 것이 AOP (Aspect-Oriented Programming)의 장소입니다.

 

21. Apache Kafka 란 무엇입니까?

Apache Kafka는 분산 게시-구독 메시징 시스템입니다. 확장 가능하고 내결함성이있는 발행-구독 메시징 시스템으로 분산 애플리케이션을 구축 할 수 있습니다. 이것은 Apache 최상위 프로젝트입니다. Kafka는 오프라인 및 온라인 메시지 사용에 적합합니다.

 

22. 모든 Spring Boot 마이크로 서비스를 어떻게 모니터링합니까?

Spring Boot는 각 마이크로 서비스의 메트릭을 모니터링하기위한 모니터 엔드 포인트를 제공합니다. 이러한 끝점은 응용 프로그램에 대한 정보 (예 : 시작되었는지 여부) 및 해당 구성 요소 (예 : 데이터베이스 등)가 제대로 작동하는지 여부를 얻는 데 유용합니다. 그러나 모니터 사용의 주요 단점 중 하나는 애플리케이션의 상태 또는 상태를 이해하기 위해 애플리케이션의 지식 포인트를 별도로 열어야한다는 것입니다. 50 개의 애플리케이션이 포함 된 마이크로 서비스를 상상해보십시오. 관리자는 50 개의 애플리케이션 모두의 실행 터미널을 실행해야합니다. 이 상황을 처리하는 데 도움이되도록에 위치한 오픈 소스 프로젝트를 사용합니다. 여러 애플리케이션의 메트릭을 시각화 할 수있는 웹 UI를 제공하는 Spring Boot Actuator를 기반으로합니다.

2020 년에 여러 회사에 대한 1,000 개의 자바 인터뷰 질문과 400 페이지 이상의 pdf 문서를 분류하는 데 1 개월이 걸렸습니다. 내 공식 계정에 관심을 가져 주셔서 감사합니다. Kylin은 버그 변경, 기사 업데이트 및 정렬 된 정보입니다. 또한 내부에 배치됩니다.

위 인터뷰에서 질문 한 지식 포인트에 대한 응답으로 인터넷 회사의 Java 프로그래머 인터뷰와 관련된 대부분의 인터뷰 질문과 답변을 요약했습니다. 문서 및 아키텍처 자료를 모든 사람과 공유합니다. 인터뷰 전에 도움을 드리고 싶습니다. 좋은 직업을 찾으면 모든 사람이 인터넷에서 정보를 검색하는 데 드는 시간을 절약 할 수 있습니다.

 

마침내

함께 의사 소통하는 모든 사람을 환영합니다. 정보를 구성하는 것이 쉽지 않습니다. 기사가 마음에 들면 나를 따르고 좋아요를 누르십시오. 지원해 주셔서 감사합니다!

추천

출처blog.csdn.net/QLCZ0809/article/details/112253564