Spring Boot常见面试题有哪些?求职面试必备

2021年12月12日21:54:09 发表评论 769 次浏览

如果涉及到 Java 应用程序开发,Spring Boot 是面试中最热门的话题。由于其快速、低配置、内置服务器和监控功能,它有助于从头开始构建一个非常健壮和可维护的独立 java 应用程序。

Spring Boot常见面试题有哪些?本文将带你了解从基础到高级的 Spring Boot 面试问题。

什么是Spring Boot?

Sprint boot 是一个基于 Java 的 spring 框架,用于快速应用程序开发(构建独立的微服务)。它额外支持自动配置和嵌入式应用服务器,如 tomcat、jetty 等。

Spring Boot 的特性使它与众不同?

  • 以最少的配置创建独立的 spring 应用程序。
  • 它嵌入了 tomcat、jetty,这使得它只是编码和运行应用程序。
  • 提供生产就绪功能,例如指标、运行状况检查和外部化配置。
  • 完全不需要 XML 配置。

基本的Spring Boot常见面试题和答案合集

1、使用Spring Boot有什么好处?

Spring Boot的优点列举如下:

  • 易于理解和开发Spring应用程序。
  • Spring Boot 只不过是一个现有框架,增加了嵌入式 HTTP 服务器和注解配置,使其更易于理解并加快开发过程。
  • 提高生产力并缩短开发时间。
  • 最低配置。
  • 我们不需要编写任何 XML 配置,只需要几个注解就可以完成配置。

2、Spring Boot的关键组件有哪些?

Spring Boot面试题解析:以下是 spring-boot 的四个关键组件:

  • Spring Boot 自动配置。
  • Spring Boot CLI。
  • Spring Boot 启动器 POM。
  • Spring Boot 执行器。

3. 为什么 Spring Boot 优于 Spring?

以下是 spring boot 提供但 spring 不提供的一些关键点:

  • 起始 POM。
  • 版本管理。
  • 自动配置。
  • 组件扫描。
  • 嵌入式服务器。
  • 内存数据库。
  • 执行器

Spring Boot 为用户简化了 spring 特性:

4、Spring boot模块的starter依赖是什么?

Spring boot 提供了许多启动器依赖项,这里是最常用的 -

  • 数据 JPA 启动器。
  • 测试启动器。
  • 安全启动器。
  • 网络启动器。
  • 邮件启动器。
  • 百里香开胃菜。

5. Spring Boot 是如何工作的?

Spring Boot 会根据你使用注解添加到项目中的依赖项自动配置你的应用程序。spring boot应用的入口点是包含@SpringBootApplication注解和main方法的类。

Spring Boot 使用@ComponentScan 注解自动扫描项目中包含的所有组件。

6、@SpringBootApplication注解内部有什么作用?

@SpringBootApplication 注解等效于使用@Configuration、@EnableAutoConfiguration 和@ComponentScan 及其默认属性。Spring Boot 使开发人员能够使用单个注解而不是使用多个注解。但是,正如我们所知,Spring 提供了松散耦合的特性,我们可以根据项目需要将这些特性用于每个注解。

7.在类文件中使用@ComponentScan的目的是什么?

Spring Boot 应用程序在应用程序初始化时扫描所有 bean 和包声明。你需要为类文件添加 @ComponentScan 注释以扫描添加到项目中的组件。

8. Spring Boot常见面试题和答案合集:spring boot 应用程序如何启动?

就像任何其他 Java 程序一样,Spring Boot 应用程序必须有一个 main 方法。此方法用作入口点,它调用 SpringApplication#run 方法来引导应用程序。

@SpringBootApplication 
public class MyApplication { 
   
       public static void main(String[] args) {    
    
             SpringApplication.run(MyApplication.class);        
               // other statements     
       } 
}

9. 什么是启动器依赖?

Spring boot starter 是一个 maven 模板,其中包含启动特定功能所需的所有相关传递依赖项的集合。
就像我们需要导入 spring-boot-starter-web 依赖项来创建 Web 应用程序。

<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-web </artifactId>
</dependency>

10.什么是Spring Initializer?

Spring Boot常见面试题有哪些?Spring Initializer 是一个 Web 应用程序,可帮助你创建初始 Spring Boot 项目结构并提供 maven 或 gradle 文件来构建你的代码。它解决了从头开始项目时设置框架的问题。

11. Spring Boot CLI 是什么,它有什么好处?

Spring Boot CLI 是一个命令行界面,允许你使用 Groovy 创建基于 spring 的 java 应用程序。

示例:你不需要创建 getter 和 setter 方法或访问修饰符、return 语句。如果你使用 JDBC 模板,它会自动为你加载。

12. 最常用的 Spring Boot CLI 命令有哪些?

-run、-test、-grap、-jar、-war、-install、-uninstall、--init、-shell、-help。

要检查描述,请从终端运行 spring --help。

高级Spring Boot常见面试题和答案合集

13. Spring Boot 提供的基本注解有哪些?

Spring Boot 提供的主要注解位于其org.springframework.boot.autoconfigure及其子包中。这里有几个基本的:

@EnableAutoConfiguration – 使 Spring Boot 在其类路径上查找自动配置 bean 并自动应用它们。

@SpringBootApplication – 用于表示引导应用程序的主类。这个注解结合了@Configuration、@EnableAutoConfiguration 和@ComponentScan 注解和它们的默认属性。

14、什么是Spring Boot依赖管理?

Spring Boot面试题解析:Spring Boot 依赖项管理用于自动管理依赖项和配置,而无需你指定任何依赖项的版本。

15. 我们可以在 Spring Boot 中创建非 Web 应用程序吗?

是的,我们可以通过从类路径中删除 Web 依赖项以及更改 Spring Boot 创建应用程序上下文的方式来创建非 Web 应用程序。

16、Spring Boot中内嵌Tomcat服务器的端口可以更改吗?

对的,这是可能的。通过在application.properties 中使用server.port

17. spring boot中tomcat的默认端口是什么?

tomcat server-id 8080的默认端口。可以通过在application.property文件中添加sever.port属性来更改。

18. Spring Boot中可以覆盖或替换内嵌的tomcat服务器吗?

是的,我们可以通过使用pom.xml文件中的 Starter 依赖项,用任何服务器替换嵌入式 Tomcat 服务器。就像你可以使用 spring-boot-starter-jetty 作为在项目中使用 jetty 服务器的依赖项。

19.我们可以禁用Spring boot应用程序中的默认Web服务器吗?

是的,我们可以使用application.properties来配置 web 应用程序类型,即spring.main.web-application-type=none。

20.如何禁用特定的自动配置类?

如果你希望自动配置不适用于任何特定类,则可以使用 @EnableAutoConfiguration 的 exclude 属性。

//use of exclude
@EnableAutoConfiguration(exclude={className})

21.解释Sprint boot中@RestController注解?

它是@Controller 和@ResponseBody 的组合,用于创建一个restful 控制器。它将响应转换为 JSON 或 XML。它确保每个方法返回的数据将直接写入响应正文而不是返回模板。

22、Spring Boot中@RestController和@Controller的区别是什么?

@Controller 模型对象的映射以查看或模板并使其可读,但@RestController 仅返回对象,对象数据直接以 JSON 或 XML 形式写入 HTTP 响应中。

23.描述HTTPS请求通过Spring Boot应用程序的流程?

在高级 Spring Boot 应用程序上,遵循以下流程图中描述的 MVC 模式。

24、RequestMapping和GetMapping有什么区别?

RequestMapping 可以与 GET、POST、PUT 和许多其他使用注解上的 method 属性的请求方法一起使用。而 getMapping 只是 RequestMapping 的扩展,它可以帮助你提高请求的清晰度。

25. Spring Boot中Profiles的作用是什么?

在开发应用程序时,我们会处理多种环境,例如 dev、QA、Prod,并且每个环境都需要不同的配置。例如,我们可能为开发使用嵌入式 H2 数据库,但对于生产,我们可能使用专有的 Oracle 或 DB2。即使 DBMS 在整个环境中相同,URL 也会不同。

为了使这变得简单和干净,Spring 提供了 Profiles 来保持环境的单独配置。

26. 什么是Spring执行器?它的优点是什么?

执行器是 Spring 的附加功能,可帮助你在将应用程序推送到生产环境时监控和管理应用程序。这些执行器包括审计、运行状况、CPU 使用率、HTTP 命中和指标收集,以及自动应用于你的应用程序的更多内容。

27. Spring Boot常见面试题有哪些:如何在 Spring boot 应用程序中启用 Actuator?

要启用 spring 执行器功能,我们需要在 pom.xml 中添加“spring-boot-starter-actuator”的依赖项。

<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter-actuator </artifactId>
</dependency>

28. 用于监控 Spring boot 应用程序的执行器提供的端点有哪些?

Spring Boot面试题解析:执行器提供以下预定义端点来监控我们的应用程序 -

  • Health
  • Info
  • Beans
  • Mappings
  • Configprops
  • Httptrace
  • Heapdump
  • Threaddump
  • Shutdown

29. 如何获取你的 Spring boot 应用程序中所有 bean 的列表?

Spring Boot 执行器“/Beans”用于获取应用程序中所有 spring bean 的列表。

30. 如何在你的 Spring boot 应用程序中检查环境属性?

Spring Boot 执行器“/env”返回运行 spring boot 应用程序的所有环境属性的列表。

31、如何在spring boot应用中开启调试日志?

可以通过三种方式启用调试日志 -

  • 我们可以使用 --debug 开关启动应用程序。
  • 我们可以在 application.property 文件中设置 logging.level.root=debug 属性。
  • 我们可以在提供的日志配置文件中设置要调试的根记录器的日志级别。

32、我们在Spring Boot应用中在哪里定义属性?

Spring Boot面试题解析:你可以将与应用程序和 Spring 启动相关的属性定义到名为 application.properties 的文件中。你可以手动创建此文件或使用 Spring Initializer 创建此文件。你不需要做任何特殊的配置来指示 Spring Boot 加载这个文件,如果它存在于 classpath 中,那么 spring boot 会自动加载它并相应地配置自身和应用程序代码。

33. Spring Boot常见面试题和答案合集:什么是依赖注入?

将依赖的 bean 对象注入目标 bean 对象的过程称为依赖注入。

  • Setter注入:IOC容器通过调用setter方法将依赖的bean对象注入到目标bean对象中。
  • 构造函数注入:IOC容器通过调用目标bean构造函数将依赖的bean对象注入到目标bean对象中。
  • Field Injection:IOC 容器会通过反射 API 将依赖的 bean 对象注入到目标 bean 对象中。

34.Spring Boot常见面试题有哪些:什么是IOC容器?

IoC Container 是一个实现自动依赖注入的框架。它管理对象的创建及其生命周期,并将依赖项注入到类中。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: