首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面向Java程序员的15个SpringBoot面试问题和答案

面向Java程序员的15个SpringBoot面试问题和答案

作者头像
麦洛
修改2020-03-20 10:01:55
1.1K0
修改2020-03-20 10:01:55
举报
在这里插入图片描述
在这里插入图片描述

文章出处:Top 15 Spring Boot Interview Questions with Answers for Java/JEE Programmers

大家好,如果您正在为下一次Java面试做准备,并且准备了有关Spring框架的工作描述,那么您还应该准备一些Spring引导面试问题,以避免失望。SpringBoot现在是Java开发中使用Spring框架的标准方式,而且几乎所有的公司都在从使用Spring框架的传统方式转向更现代的SpringBoot方式。向开发人员询问诸如您是否使用过Spring Boot之类的问题的日子已经一去不复返了。现在的面试要求应聘者对Spring Boot有更多的了解,这是有原因的,我们将在本文中探讨。

SpringBoot旨在简化Java开发,通过消除配置、依赖项管理和开发简便性方面的主要难点。正如Craig Walls在Spring boot中所做的那样,这可能是Java在JDK 1.5发布和Spring框架在15年前引入之后发生的最好的事情。

它引入了大量的特性,如启动器依赖、自动配置、嵌入式服务器、Spring Boot CLI, Spring Actuator、Spring初始化器等,将Spring的Java开发带入了一个新的层次,这就是为什么Spring引导面试问题在Java面试中越来越常见的原因。

为了自信地回答Spring Boot的问题,您不仅要知道Spring Boot解决了什么问题,还要深入了解它的一些核心特性,比如自动配置和启动依赖项。这两个特性消除了基于spring的Java应用程序的大量配置和设置工作。

顺便说一下,如果你不熟悉他们,我首先建议你通过一个初学者的课程,如Spring Boot Essentials来获得最新的速度。一旦您对Spring Boot有了很好的了解,就可以尝试这些问题。

**有关Java开发人员的10个Spring Boot面试问题**

下面是我列出的Java面试中最常见的Spring Boot面试问题。这些问题涵盖了大多数Spring启动特性,例如自动配置、启动器依赖项、Spring Actuator, Spring Initializer, Spring Boot CLI 等。

他们也收集了对中级和有经验的Java开发人员(例如2到5年的经验)的Java访谈。

1.什么是Spring Boot?为什么要使用它?

Spring Boot是另一个来自Sring umbrella的Java框架,它旨在简化Spring框架在Java开发中的使用。它消除了与Spring相关的大部分痛苦,例如大量的配置和依赖以及大量的手动设置。

为什么要使用它?Spring Boot不仅通过自动配置为您提供了很多便利,还提高了生产率,因为它让您只专注于编写业务逻辑。

例如,您不需要设置Tomcat服务器来运行web应用程序。您可以只编写代码并将其作为Java应用程序运行,因为它附带了一个嵌入式Tomcat服务器。您还可以根据自己的方便程度创建用于部署的JAR文件或WAR文件。

总之,使用Spring Boot有很多原因。事实上,它现在是用Spring框架开发Java应用程序的标准方法。

2. 使用Spring Boot有哪些重要的特性?

这是一个很好的主观问题,面试官会用它来衡量求职者的工作经验。不管怎样,以下是Spring Boot框架的一些重要特性:

1. 起动器的依赖

此功能将公共依赖项聚合在一起。例如,如果您想开发基于RESTful的Spring MVC服务,那么不需要将Spring MVC JAR和Jackson JAR文件包含到类路径中,您只需指定Spring -boot-web-starter,它就会自动下载这两个JAR文件。Spring Boot附带了许多这样的启动依赖项,以提高工作效率。

2.自动配置

这是Spring Boot的另一个很棒的特性,可以为您配置很多东西。例如,如果您正在开发Spring web应用程序,并且类路径中有Thymeleaf.jar,那么它可以自动配置Thymeleaf模板解析器、视图解析器和其他设置。要成为一名有经验的Spring引导开发人员,需要具备良好的自动配置知识。

3.Spring初始化

可以为您创建初始项目结构的web应用程序。这简化了初始项目设置部分。

4.Spring Actuato

该特性为运行中的Spring启动应用程序提供了许多有用的信息。例如,您可以使用执行器来查找哪些bean是在Spring的应用程序上下文中创建的,以及哪些请求路径被映射到控制器。

5.Spring CLI

这是Spring Boot的另一个很棒的特性,它将Spring开发带入了下一个阶段。它允许您使用Groovy编写Spring引导应用程序,这意味着要编写更简洁的代码。

3.什么是Spring boot中的自动配置?这有什么用呢?为什么Spring Boot被称为opinionated?

在这个问题本身中有很多问题,但是让我们首先处理自动配置。正如前面的示例所解释的,它根据类路径中的内容自动配置很多东西。

例如,如果当前的数据源bean和数据源bean在类路径中可用,则可以配置JdbcTemplate。如果类路径中存在Spring security,它甚至可以做一些基本的web安全工作。

顺便说一下,如果您不熟悉spring security库,那么可以查看spring security Masterclass以了解更多相关信息。它是保护现代Java应用程序的最重要的工具之一。

无论如何,关键是自动配置在配置bean、控制器、视图解析器等方面为您做了大量工作,因此它在创建Java应用程序方面帮助很大。

现在,大问题来了,为什么它被认为是武断的?因为它自己做判断。有时它会导入您不想要的东西,但是不要担心,Spring Boot还提供了覆盖自动配置设置的方法。

它在默认情况下也是禁用的,您需要在主类上使用@SpringBootApplication或@EnableAutoConfiguration注释来启用自动配置功能。

4. 什么是SpringBoot启动依赖?这有什么用呢?

这个问题通常是前一个问题的后续问题,因为它非常类似于自动配置,许多开发人员会混淆这两个问题。顾名思义,初学者依赖项处理依赖项管理。

在研究了几个基于Spring的项目之后,Spring人员注意到总有一些库是一起使用的,例如Spring MVC和Jackson一起创建RESTful web服务。由于在Maven的pom.xml中声明依赖关系比较麻烦,因此他们将许多库合并到一个基于功能的库中,并创建了这个启动包。

这不仅使您不必声明许多依赖项,而且还使您避免兼容性和版本不匹配问题。Spring Boot starter自动获取其他库的兼容版本,这样您就可以使用它们而不必担心任何兼容性问题。

5. @SpringBootApplication和@EnableAutoConfiguration注释的区别是什么?

尽管两者都是基本的Spring引导应用程序,并在主类或引导类中使用,但它们之间有细微的区别。@EnableAutoConfiguration用于启用自动配置,但是@SpringBootApplication要做的远不止这些。

它还结合了@Configuration和@ComponentScan注释,以在您的项目中启用基于java的配置和组件扫描。

@SpringBootApplication实际上是@Configuration、@ComponentScan和@EnableAutoConfiguration注释的组合。

6. 什么是Spring初始化器?为什么要使用它?

开始使用框架的困难之一是初始设置,特别是如果您是从零开始的,并且没有引用设置或项目。Spring初始化器在Spring启动时解决了这个问题。

它只是一个web应用程序,帮助您创建初始的Spring boot项目结构,并提供Maven或Gradle构建文件来构建您的代码。

7. 什么是Spring Actuator?它的优点是什么?

这是一个有趣的Spring引导问题,主要针对Java角色提出,Java角色也有一些支持职责。Spring Actuator是另一个很酷的Spring Boot功能,它允许查看内部运行的应用程序。

是的,你没看错。它允许您查看应用程序的内部。由于Spring引导完全是关于自动配置的,因此调试非常困难,而且在某些时候,您希望知道在Spring的应用程序上下文中创建了哪些bean,以及如何映射控制器。Spring Actuator提供所有这些信息。

它提供了几个端点,例如一个REST端点来在web上检索这类信息。它还提供了许多关于应用程序健康状况的见解和度量,例如CPU和内存使用量、线程数量等。

它还提供了一个远程shell,您可以使用它安全地进入Spring Boot应用程序并运行一些命令来公开相同的数据集。您甚至可以在运行时使用JMX来控制这种行为。

顺便说一句,保护您的Spring Actuator端点是很重要的,因为它暴露了许多机密信息和一个潜在的危险一二。例如,通过使用/showdown端点,您可以终止一个Spring启动应用程序。

8. 什么是Spring Boot CLI?它的好处是什么?

Spring Boot CLI是一个命令行接口,它允许您使用Groovy创建基于Spring的Java应用程序。由于使用的是Groovy,它允许您从命令行创建Spring启动应用程序,而不需要任何仪式,例如,您不需要定义getter和setter方法,或者访问修饰符、返回语句等。

它也非常强大,如果您碰巧使用它,可以在Groovy的默认包中自动包含很多库。

9. 在SpringBoot应用程序中如何定义属性?

您可以将应用程序和Spring boot相关的属性定义到一个名为application.properties的文件中。您可以手动创建这个文件,也可以使用Spring Initializer来创建这个文件,尽管它是空的。

您不需要做任何特殊的配置来指示Spring引导加载这个文件。如果它存在于类路径中,那么Spring Boot将自动加载它并根据它配置自身和应用程序代码。

例如,您可以使用它来定义一个属性来更改Spring Boot中的嵌入式服务器端口,这也是我们的下一个问题。

10. 可以在Spring boot中更改嵌入式Tomcat服务器的端口吗?如果可以,如何操作?

是的,我们可以在application.properties文件中添加一个名为server.port的属性来更改Spring Boot中嵌入式Tomcat服务器的端口。

如前所述,此属性文件由Spring Boot自动加载,可用于配置Spring Boot和应用程序代码。

11. 嵌入式容器和WAR之间的区别是什么?

嵌入式容器和WAR文件之间的主要区别是,您可以从命令提示符中以JAR的形式启动应用程序,而无需设置web服务器。但是要运行WAR文件,首先需要设置一个像Tomcat这样的web服务器,它有Servlet容器,然后需要在那里部署WAR。

12.SpringBoot支持哪些嵌入式容器?

Spring引导支持三种嵌入式容器:Tomcat、Jetty和Undertow。默认情况下,它使用Tomcat作为嵌入式容器,但是您可以将其更改为Jetty或Undertow。

13.有哪些常见的SpringBoot注释?

一些最常见的SpringBoot注释是@EnableAutoConfiguration@SpringBootApplication@SpringBootConfiguration@SpringBootTest

@EnableAutoConfiguration用于在Spring启动应用程序上启用自动配置,而@SpringBootApplication用于主类上,以允许它运行JAR文件。@SpringBootTest用于在Spring启动环境中运行单元测试。

14. 你能说出一些常见的Spring Boot 启动POMs吗?

一些最常见的Spring启动依赖项或POMs是Spring - Boot -starterSpring - Boot -starter-webSpring - Boot -starter-test。您可以使用Spring - Boot -starter-web在Spring Boot应用程序中启用Spring MVC。

15. 如何用Spring Boot控制日志记录?

是的,我们可以通过在应用程序上指定日志级别来使用Spring Boot控制日志记录。属性文件。当这个文件存在于类路径中时,SpringBoot将加载它,并且可以使用它来配置Spring引导和应用程序代码。

Spring Boot对所有内部日志使用通用日志记录,您可以application.properties文件中通过在应用程序中添加以下行来更改日志级别

logging.level.org.springframework=DEBUG

logging.level.com.demo=INFO

这就是关于Java开发人员常见的Spring启动面试问题的全部内容。如果您正在准备Java开发面试,其中需要Spring Boot作为一项技能,那么您应该熟悉这些面试问题。它们不仅能帮助你在面试中表现出色,而且还能鼓励你详细地学习关键的Spring Boot概念,以便最好地利用它。

感谢您阅读本文。如果你喜欢这些SpringBoot面试问题,请与你的朋友和同事分享。如果您有任何反馈或疑问,请留言。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.什么是Spring Boot?为什么要使用它?
  • 2. 使用Spring Boot有哪些重要的特性?
    • 1. 起动器的依赖
      • 2.自动配置
        • 3.Spring初始化
          • 4.Spring Actuato
            • 5.Spring CLI
            • 3.什么是Spring boot中的自动配置?这有什么用呢?为什么Spring Boot被称为opinionated?
            • 4. 什么是SpringBoot启动依赖?这有什么用呢?
            • 5. @SpringBootApplication和@EnableAutoConfiguration注释的区别是什么?
            • 6. 什么是Spring初始化器?为什么要使用它?
            • 7. 什么是Spring Actuator?它的优点是什么?
            • 8. 什么是Spring Boot CLI?它的好处是什么?
            • 9. 在SpringBoot应用程序中如何定义属性?
            • 10. 可以在Spring boot中更改嵌入式Tomcat服务器的端口吗?如果可以,如何操作?
            • 11. 嵌入式容器和WAR之间的区别是什么?
            • 12.SpringBoot支持哪些嵌入式容器?
            • 13.有哪些常见的SpringBoot注释?
            • 14. 你能说出一些常见的Spring Boot 启动POMs吗?
            • 15. 如何用Spring Boot控制日志记录?
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档