1 Star 0 Fork 31

np / Ebooks

forked from Java精选 / Ebooks 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
2021年最新版 Spring Boot 面试题汇总附答案.md 9.33 KB
一键复制 编辑 原始数据 按行查看 历史

2021年最新版 Spring Boot 面试题汇总附答案

全部面试题答案,更新日期:12月30日,直接下载吧!

下载链接:高清500+份面试题资料及电子书,累计 10000+ 页大厂面试题 PDF

Spring Boot

题1:Spring Boot 和 Spring 有什么区别?

Spring框架提供多种特性使得web应用开发变得更简便,包括依赖注入、数据绑定、切面编程、数据存取等等。

随着时间推移,Spring生态变得越来越复杂了,并且应用程序所必须的配置文件也令人觉得可怕。这就是Spirng Boot派上用场的地方了,它使得Spring的配置变得更轻而易举。

实际上Spring是unopinionated(予以配置项多,倾向性弱)的,Spring Boot在平台和库的做法中更opinionated,使得我们更容易上手。

这里有两条SpringBoot带来的好处:

1)根据classpath中的artifacts的自动化配置应用程序;

2)提供非功能性特性例如安全和健康检查给到生产环境中的应用程序。

题2:什么是 WebSocket?

WebSocket是一种计算机通信协议,通过单个 TCP 连接提供全双工通信信道。

1、WebSocket是双向的—使用WebSocket客户端或服务器可以发起消息发送。

2、WebSocket是全双工的—客户端和服务器通信是相互独立的。

3、单个TCP连接—初始连接使用HTTP,然后将此连接升级到基于套接字的连接。然后这个单一连接用于所有未来的通信

4、Light与http相比,WebSocket消息数据交换要轻得多。

题3:Spring Boot web 应用程序如何部署为 JAR 或 WAR 文件?

通常,将web应用程序打包成WAR文件,然后将它部署到另外的服务器上。这样做使得能够在相同的服务器上处理多个项目。当CPU和内存有限的情况下,这是一种最好的方法来节省资源。

然而,事情发生了转变。现在的计算机硬件相比起来已经很便宜了,并且现在的注意力大多转移到服务器配置上。部署中对服务器配置的一个细小的失误都会导致无可预料的灾难发生。

Spring通过提供插件来解决这个问题,也就是spring-boot-maven-plugin来打包web应用程序到一个额外的JAR文件当中。引入这个插件只需要在pom.xml中添加一个plugin属性:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

有了这个插件,在执行package步骤后得到一个JAR包。这个JAR包包含所需的所有依赖以及一个嵌入的服务器。因此,不再需要担心去配置一个额外的服务器了。

通过运行一个普通的JAR包来启动应用程序。

注意一点,为了打包成JAR文件,pom.xml中的packgaing属性必须定义为jar:

<packaging>jar</packaging>

如果不定义这个元素,它的默认值也为jar。

如果想构建一个WAR文件,将packaging元素修改为war:

<packaging>war</packaging>

并且将容器依赖从打包文件中移除:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

执行Maven的package步骤之后,可以得到一个可部署的WAR文件。

题4:如何使用 Maven 来构建一个 Spring Boot 程序?

就像引入其他库一样,可以在Maven工程中加入SpringBoot依赖。然而,最好是从spring-boot-starter-parent 项目中继承以及声明依赖到Spring Boot starters。这样做可以使得项目可以重用SpringBoot的默认配置。

继承spring-boot-starter-parent项目依赖很简单,只需要在pom.xml中定义一个parent节点:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.1.RELEASE</version>
</parent>

可以在Maven central中找到spring-boot-starter-parent的最新版本。

题5:如何使用 Spring Boot 实现分页和排序?

使用Spring Boot实现分页非常简单。使用Spring Data JPA可以实现将可分页的传递给存储库方法。

题6:什么是 Swagger?Spring Boot 如何实现 Swagger?

Swagger广泛用于可视化API,使用Swagger UI为前端开发人员提供在线沙箱。

Swagger是用于生成RESTful Web服务的可视化表示的工具,规范和完整框架实现。它使文档能够以与服务器相同的速度更新。当通过 Swagger正确定义时,消费者可以使用最少量的实现逻辑来理解远程服务并与其进行交互。因此,Swagger消除了调用服务时的猜测。

题7:Spring Boot 如何注册一个定制的自动化配置?

为了注册一个自动化配置类,必须在META-INF/spring.factories文件中的EnableAutoConfiguration键下列出它的全限定名:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.baeldung.autoconfigure.CustomAutoConfiguration

如果使用Maven构建项目,这个文件需要放置在package阶段被写入完成的resources/META-INF目录中。

题8:Spring Boot 支持松绑定表示什么含义?

SpringBoot中的松绑定适用于配置属性的类型安全绑定。使用松绑定,环境属性的键不需要与属性名完全匹配。这样就可以用驼峰式、短横线式、蛇形式或者下划线分割来命名。

例如,在一个有@ConfigurationProperties声明的bean类中带有一个名为myProp的属性,它可以绑定到以下任何一个参数中,myProp、my-prop、my_prop或者MY_PROP。

题9:Spring Boot 有什么外部配置的可能来源?

SpringBoot对外部配置提供了支持,允许在不同环境中运行相同的应用。可以使用properties文件、YAML文件、环境变量、系统参数和命令行选项参数来声明配置属性。

然后可以通过@Value这个通过@ConfigurationProperties绑定的对象的注解或者实现Enviroment来访问这些属性。

以下是最常用的外部配置来源:

命令行属性: 命令行选项参数是以双连字符(例如,=)开头的程序参数,例如–server.port=8080。SpringBoot将所有参数转换为属性并且添加到环境属性当中。

应用属性: 应用属性是指那些从application.properties文件或者其YAML副本中获得的属性。默认情况下,SpringBoot会从当前目录、classpath根目录或者它们自身的config子目录下搜索该文件。

特定profile配置: 特殊概要配置是从application-{profile}.properties文件或者自身的YAML副本。{profile}占位符引用一个在用的profile。这些文件与非特定配置文件位于相同的位置,并且优先于它们。

题10:Spring Boot 中 Actuator 有什么作用?

本质上Actuator通过启用production-ready功能使得SpringBoot应用程序变得更有生命力。这些功能允许对生产环境中的应用程序进行监视和管理。

集成SpringBoot Actuator到项目中非常简单。只需要做的是将spring-boot-starter-actuator starter引入到POM.xml文件当中:

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

SpringBoot Actuaor可以使用HTTP或者JMX endpoints来浏览操作信息。大多数应用程序都是用HTTP,作为endpoint的标识以及使用/actuator前缀作为URL路径。

一些常用的内置endpoints Actuator:

auditevents:查看 audit 事件信息 env:查看 环境变量 health:查看应用程序健康信息 httptrace:展示 HTTP 路径信息 info:展示 arbitrary 应用信息 metrics:展示 metrics 信息 loggers:显示并修改应用程序中日志器的配置 mappings:展示所有 @RequestMapping 路径信息 scheduledtasks:展示应用程序中的定时任务信息 threaddump:执行 Thread Dump

大厂面试题

大厂面试题

大厂面试题

Java
1
https://gitee.com/huangdx.net/ebooks.git
git@gitee.com:huangdx.net/ebooks.git
huangdx.net
ebooks
Ebooks
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891