300道SpringBoot面试题及答案(2022年最新整理)

300道SpringBoot面试题及答案(2022年最新整理)_第1张图片

2022最新SpringBoot面试题【附答案解析】SpringBoot面试题及答案2022,SpringBoot2022最新面试题及答案,SpringBoot面试题新答案已经全部更新完了,有些答案是自己总结的,也有些答案是在网上搜集整理的。这些答案难免会存在一些错误,仅供大家参考。如果发现错误还望大家多多包涵,不吝赐教,谢谢~

如果不背 SpringBoot面试题的答案,肯定面试会挂!

这套SpringBoot面试题大全,希望对大家有帮助哈~

博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的icon-default.png?t=M0H8https://link.zhihu.com/?target=https%3A//mp.weixin.qq.com/s%3F__biz%3DMzg4NTcyNzE0OA%3D%3D%26mid%3D2247483730%26idx%3D1%26sn%3Dd427de1152475d4a9ad8f0c7f21297dc%26chksm%3Dcfa5cb91f8d24287053cc133ddb3e6b151777b7979751bfd65ca5d75e00e473aba792fea8323%26token%3D1818598689%26lang%3Dzh_CN%23rd

1、spring-boot-starter-parent 有什么用 ?

我们都知道,新创建一个 SpringBoot 项目,默认都是有 parent 的,这个 parent 就是 spring-boot-starter-parent ,spring-boot-starter-parent 主要有如下作用:

1、 定义了 Java 编译版本为 1.8 。

2、 使用 UTF-8 格式编码。

3、 继承自 spring-boot-dependencies,这个里边定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时才不需要写版本号。

4、 执行打包操作的配置。

5、 自动化的资源过滤。

6、 自动化的插件配置。

7、 针对 application.properties 和 application.yml 的资源过滤,包括通过 profile 定义的不同环境的配置文件,例如 application-dev.properties 和 application-dev.yml。

2、shiro和oauth还有cas他们之间的关系是什么?问下您公司权限是如何设计,还有就是这几个概念的区别。

cas和oauth是一个解决单点登录的组件,shiro主要是负责权限安全方面的工作,所以功能点不一致。但往往需要单点登陆和权限控制一起来使用,所以就有 cas+shiro或者oauth+shiro这样的组合。

token一般是客户端登录后服务端生成的令牌,每次访问服务端会进行校验,一般保存到内存即可,也可以放到其他介质;Redis可以做Session共享,如果前端web服务器有几台负载,但是需要保持用户登录的状态,这场景使用比较常见。

我们公司使用oauth+shiro这样的方式来做后台权限的管理,oauth负责多后台统一登录认证,shiro负责给登录用户赋予不同的访问权限。

3、SpringBoot、Spring MVC 和 Spring 有什么区别?

1、 Spring

Spring最重要的特征是依赖注入。所有 SpringModules 不是依赖注入就是 IOC 控制反转。

当我们恰当的使用 DI 或者是 IOC 的时候,我们可以开发松耦合应用。松耦合应用的单元测试可以很容易的进行。

2、 Spring MVC

Spring MVC 提供了一种分离式的方法来开发 Web 应用。通过运用像 DispatcherServelet,MoudlAndView 和 ViewResolver 等一些简单的概念,开发 Web 应用将会变的非常简单。

3、 SpringBoot

Spring 和 SpringMVC 的问题在于需要配置大量的参数。

SpringBoot 通过一个自动配置和启动的项来目解决这个问题。为了更快的构建产品就绪应用程序,SpringBoot 提供了一些非功能性特征。

4、什么是SpringBoot

1、 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件)

2、 创建独立的spring引用程序 main方法运行

3、 嵌入的Tomcat 无需部署war文件

4、 简化maven配置

5、开启 SpringBoot 特性有哪几种方式?

1、 继承spring-boot-starter-parent项目

2、 导入spring-boot-dependencies项目依赖

6、什么是YAML?

YAML是一种人类可读的数据序列化语言。它通常用于配置文件。 与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据

7、什么是Spring Profiles?

Spring Profiles允许用户根据配置文件(dev,test,prod等)来注册bean。因此,当应用程序在开发中运行时,只有某些bean可以加载,而在PRODUCTION中,某些其他bean可以加载。假设我们的要求是Swagger文档仅适用于QA环境,并且禁用所有其他文档。这可以使用配置文件来完成。SpringBoot使得使用配置文件非常简单。

8、如何在 SpringBoot 中添加通用的 JS 代码?

在源文件夹下,创建一个名为 static 的文件夹。然后,你可以把你的静态的内容放在这里面。

例如,myapp.js 的路径是 resources\static\js\myapp.js

你可以参考它在 jsp 中的使用方法:

错误:HAL browser gives me unauthorized error - Full authenticaition is required to access this resource.

该如何来修复这个错误呢?

两种方法:

方法 1:关闭安全验证

application.properties

management.security.enabled:FALSE

方法二:在日志中搜索密码并传递至请求标头中

9、SpringBoot 有哪几种读取配置的方式?

SpringBoot 可以通过 @PropertySource,@Value,@Environment, @ConfigurationProperties 来绑定变量。

10、SpringBoot 是否可以使用 XML 配置 ?

SpringBoot 推荐使用 Java 配置而非 XML 配置,但是 SpringBoot 中也可以使用 XML 配置,通过 @ImportResource 注解可以引入一个 XML 配置。

11、SpringBoot自动配置的原理是什么?

SpringBoot启动的时候通过@EnableAutoConfiguration注解找到META-INF/spring.factories配置文件中所有的自动配置类,并对其进行加载,而这些自动配置类的类名都是以AutoConfiguration结尾来命名的,它实际上就是一个javaConfig形式的Spring容器配置类,它们都有一个@EnableConfigurationPerperties的注解,通过这个注解启动XXXProperties命名的类去加载全局配置中的属性,如server.port,而XXXProperties通过@ConfigurationProperties注解将全局配置文件中的属性与自己的属性进行绑定。

12、SpringBoot 配置加载顺序?

1、 properties文件 2、YAML文件 3、系统环境变量 4、命令行参数

13、spring boot初始化环境变量流程?

1、 调用prepareEnvironment方法去设置环境变量

2、 接下来有三个方法getOrCreateEnvironmentconfigureEnvironmentenvironmentPrepared

3、 getOrCreateEnvironment去初始化系统环境变量

4、 configureEnvironment去初始化命令行参数

5、 environmentPrepared当广播到来的时候调用onApplicationEnvironmentPreparedEvent方法去使用postProcessEnvironment方法load ymlproperties变量

14、运行 SpringBoot 有哪几种方式?

1、 打包用命令或者者放到容器中运行

2、 用 Maven/ Gradle 插件运行

3、 直接执行 main 方法运行

15、SpringBoot 中如何解决跨域问题 ?

跨域可以在前端通过 JSONP 来解决,但是 JSONP 只可以发送 GET 请求,无法发送其他类型的请求,在 RESTful 风格的应用中,就显得非常鸡肋,因此我们推荐在后端通过 (CORS,Cross-origin resource sharing) 来解决跨域问题。这种解决方案并非 SpringBoot 特有的,在传统的 SSM 框架中,就可以通过 CORS 来解决跨域问题,只不过之前我们是在 XML 文件中配置 CORS ,现在可以通过实现WebMvcConfigurer接口然后重写addCorsMappings方法解决跨域问题。

@Configuration

public class CorsConfig implements WebMvcConfigurer {

@Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowCredentials(true) .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .maxAge(3600); }

}

16、SpringBoot如何配置log4j?

在引用log4j之前,需要先排除项目创建时候带的日志,因为那个是Logback,然后再引入log4j的依赖,引入依赖之后,去src/main/resources目录下的log4j-spring.properties配置文件,就可以开始对应用的日志进行配置使用。

17、SpringBoot运行项目的几种方式?

打包用命令或者放到容器中运行

1、 打成jar包,使用java -jar xxx.jar运行

2、 打成war包,放到tomcat里面运行

直接用maven插件运行 maven spring-boot:run

直接执行main方法运行

18、什么是JavaConfig?

Spring JavaConfig是Spring社区的产品,它提供了配置Spring IoC容器的纯Java方法。因此它有助于避免使用XML配置。使用JavaConfig的优点在于:

面向对象的配置。由于配置被定义为JavaConfig中的类,因此用户可以充分利用Java中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean方法等。

减少或消除XML配置。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在XML和Java之间来回切换。

JavaConfig为开发人员提供了一种纯Java方法来配置与XML配置概念相似的Spring容器。

从技术角度来讲,只使用JavaConfig配置类来配置容器是可行的,但实际上很多人认为将JavaConfig与XML混合匹配是理想的。

类型安全和重构友好。JavaConfig提供了一种类型安全的方法来配置Spring容器。由于Java 5.0对泛型的支持,现在可以按类型而不是按名称检索bean,不需要任何强制转换或基于字符串的查找

19、运行 SpringBoot 有哪几种方式?

1、 打包用命令或者放到容器中运行

2、 用 Maven/ Gradle 插件运行

3、 直接执行 main 方法运行

20、SpringBoot 常用的 Starter 有哪些?

1、 spring-boot-starter-web :提供 Spring MVC + 内嵌的 Tomcat 。

2、 spring-boot-starter-data-jpa :提供 Spring JPA + Hibernate 。

3、 spring-boot-starter-data-Redis :提供 Redis 。

4、 mybatis-spring-boot-starter :提供 MyBatis 。

21、在 Spring Initializer 中,如何改变一个项目的包名字?

好消息是你可以定制它。点击链接“转到完整版本”。你可以配置你想要修改的包名称!

22、SpringBoot 的配置文件有哪几种格式?它们有什么区别?

.properties 和 .yml,它们的区别主要是书写格式不同。

properties

app.user.name = javastack

yml

app: user: name: javastack

23、什么是 Swagger?你用 SpringBoot 实现了它吗?

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

24、spring boot 核心配置文件是什么?bootstrap、properties 和 application、properties 有何区别 ?

单纯做 SpringBoot 开发,可能不太容易遇到 bootstrap、properties 配置文件,但是在结合 Spring Cloud 时,这个配置就会经常遇到了,特别是在需要加载一些远程配置文件的时侯。

spring boot 核心的两个配置文件:

bootstrap (、 yml 或者 、 properties):boostrap 由父 ApplicationContext 加载的,比 applicaton 优先加载,配置在应用程序上下文的引导阶段生效。一般来说我们在 Spring Cloud 配置就会使用这个文件。且 boostrap 里面的属性不能被覆盖;

application (、 yml 或者 、 properties): 由ApplicatonContext 加载,用于 spring boot 项目的自动化配置。

25、什么是Spring Initializer?

这个问题并不难,但面试官总是以此测试候选人的专业知识。

Spring Initializer是一个网络应用程序,它可以生成一个SpringBoot项目,包含快速启动所需的一切。和往常一样,我们需要一个好的项目框架;它有助于你正确创建项目结构/框架。

26、SpringBoot Starter 的工作原理是什么?

SpringBoot 在启动的时候会干这几件事情:

1、 SpringBoot 在启动时会去依赖的 Starter 包中寻找 resources/META-INF/spring.factories 文件,然后根据文件中配置的 Jar 包去扫描项目所依赖的 Jar 包。

2、 根据 spring.factories 配置加载 AutoConfigure 类

3、 根据 @Conditional 注解的条件,进行自动配置并将 Bean 注入 Spring Context

总结一下,其实就是 SpringBoot 在启动的时候,按照约定去读取 SpringBoot Starter 的配置信息,再根据配置信息对资源进行初始化,并注入到 Spring 容器中。这样 SpringBoot 启动完毕后,就已经准备好了一切资源,使用过程中直接注入对应 Bean 资源即可。

这只是简单的三连环问答,不知道有多少同学能够完整的回答出来。

其实 SpringBoot 中有很多的技术点可以挖掘,希望可以在后期的面试中帮助到大家。

更多SpringBoot最新2021年面试题及答案

SpringBoot最新2022年面试题及答案,汇总版

01、 SpringBoot有哪些优点?
02、 如何使用SpringBoot实现分页和排序?
03、 能否举一个例子来解释更多 Staters 的内容?
04、 如何使用 SpringBoot 自动重装我的应用程序?
05、 创建一个 SpringBoot Project 的最简单的方法是什么?
06、 Spring Cache 三种常用的缓存注解和意义?
07、 什么是Spring Actuator?它有什么优势?
08、 什么是 Spring Profiles?
09、 如何使用 SpringBoot 部署到不同的服务器?
10、 如何重新加载SpringBoot上的更改,而无需重新启动服务器?

SpringBoot最新面试题及答案附答案汇总

01、 什么是WebSockets?
02、 什么是SpringBoot?
03、 如何集成 SpringBoot 和 ActiveMQ?
04、 SpringBoot 2.X 有什么新特性?与 1.X 有什么区别?
05、 什么是YAML?
06、 SpringBoot 的核心注解是哪个?它主要由哪几个注解组成的?
07、 保护 SpringBoot 应用有哪些方法?
08、 如何在不使用BasePACKAGE过滤器的情况下排除程序包?
09、 微服务中如何实现 session 共享 ?
10、 如何实现 SpringBoot应用程序的安全性?

SpringBoot最新面试题,2021年面试题及答案汇总

01、 什么是 JavaConfig?
02、 SpringBoot多数据源拆分的思路
03、 前后端分离,如何维护接口文档 ?
04、 什么是 Spring Data?
05、 什么是 SpringBoot?
06、 SpringBoot如何实现打包
07、 Spring、SpringBoot、SpringMVC的区别?
08、 你如何理解 SpringBoot 中的 Starters?
09、 您使用了哪些 starter maven 依赖项?
10、 什么是 JavaConfig?

如果不背 SpringBoot面试题的答案,肯定面试会挂!

这套SpringBoot面试题大全,希望对大家有帮助哈~

博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的

你可能感兴趣的:(spring,boot,java,面试)