专栏首页麦洛的历劫之路面向Java程序员的15个SpringBoot面试问题和答案

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

在这里插入图片描述

文章出处: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面试问题,请与你的朋友和同事分享。如果您有任何反馈或疑问,请留言。

原文链接:https://www.java67.com/2018/06/top-15-spring-boot-interview-questions-answers-java-jee-programmers.html

原文作者:javin paul

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 适用于Java开发人员的微服务:管理安全性和机密

    安全性是现代软件系统中非常重要的元素。这是一个巨大的话题,它包含了很多不同的方面,不应该是事后才想到的。要把每件事都做好是很困难的,特别是在分布式微服务体系结构...

    麦叔
  • 基于mysqldump聊一聊MySQL的备份和恢复

    Hi,大家好,我是麦洛,今天我们聊聊MySQL的备份和恢复,在下面文章中,你会了解到MySQL常见的备份类型,以及基于mysqldump命令在日常开发中如何做M...

    麦叔
  • 微服务简介

    如今微服务倍受关注:文章、博客、社交媒体和会议演讲都在讨论微服务。微服务正在迅速朝着加德纳技术成熟度曲线(Gartner Hype cycle)的高峰前进。与此...

    麦叔
  • 这10道springboot常见面试题你需要了解下

    多年来,随着新功能的增加,spring变得越来越复杂。只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的...

    JAVA葵花宝典
  • 这 10 道 Spring Boot 常见面试题你需要了解下

    多年来,随着新功能的增加,spring变得越来越复杂。只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的...

    Java团长
  • springboot面试题十题

    多年来,随着新功能的增加,spring变得越来越复杂。只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的...

    用户5224393
  • 这 10 道 Spring Boot 常见面试题你需要了解下

    多年来,随着新功能的增加,spring变得越来越复杂。只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的...

    Java团长
  • Spring Boot 2.1.0 已发布,7 个重大更新!

    距离《重磅:Spring Boot 2.0 正式发布!》已经过去大半年了,而 Spring Boot 2.1.0 在 10 月底就发布了,我们来看下 Sprin...

    Java技术栈
  • Spring Boot 最流行的 16 条最佳实践!

    Spring Boot是最流行的用于开发微服务的Java框架。在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践。这...

    搜云库
  • 一位大佬的Springboot使用心得。

    Spring Boot是最流行的用于开发微服务的Java框架。在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践。这...

    Java技术江湖

扫码关注云+社区

领取腾讯云代金券