2020年度最多见的Spring Boot面试题【附解析】

前言

Spring Boot 是一套快速开发框架,随着微服务架构应用不断普及,Spring Boot 的研发技术的掌握已经成为研发人员必会技能。与此同时,Spring Boot 开源生态建设能力很是强大,提供了不少应用组件,让Spring Boot 有丰富的三方开源软件的使用。java

基于上面的状况,Spring Boot 基本上成为了大中型互联网公司面试的必考题。面试

本篇小编根据大厂的一些面试题库的梳理,将核心的面试提供分享给你们spring

一、什么是 Spring Boot?

Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各类启动器,开发者能快速上手。后端

二、Spring Boot 主要有以下优势:

容易上手,提高开发效率,为 Spring 开发提供一个更快、更普遍的入门体验。 开箱即用,远离繁琐的配置。 提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行情况检查和外部化配置等。 没有代码生成,也不须要XML配置。 避免大量的 Maven 导入和各类版本冲突。安全

三、Spring Boot 的核心注解是哪一个?它主要由哪几个注解组成的?

启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了如下 3 个注解:服务器

启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了如下 3 个注解:session

@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。架构

@EnableAutoConfiguration:打开自动配置的功能,也能够关闭某个自动配置的选项,如关闭数据源自动配置功能:@SpringBootApplication(exclude{DataSourceAutoConfiguration.class})app

@ComponentScan:Spring组件扫描,因为篇幅的问题,下面的面试题小编已经整理成文档和学习笔记,关注公众号:麒麟改bug,方便你们更容易直观的查看解析,和技术的学习。框架

四、什么是 JavaConfig?五、Spring Boot 自动配置原理是什么?六、你如何理解 Spring Boot 配置加载顺序?七、什么是 YAML?八、Spring Boot 是否可使用 XML 配置 ?九、spring boot 核心配置文件是什么?十、什么是 Spring Profiles?十一、如何在自定义端口上运行 Spring Boot 应用程序?十二、如何实现 Spring Boot 应用程序的安全性?1三、比较一下 Spring Security 和 Shiro 各自的优缺点 ?1四、什么是 CSRF ***?1五、Spring Boot 中的监视器是什么?1六、如何在 Spring Boot 中禁用 Actuator 端点安全性?1七、咱们如何监视全部 Spring Boot 微服务?1八、什么是 WebSockets?1九、什么是 Spring Data ?20、什么是 Spring Batch?2一、什么是 FreeMarker 模板?2二、如何集成 Spring Boot 和 ActiveMQ?2三、什么是 Swagger?2四、你用 Spring Boot 实现了它吗?2五、什么是 Apache Kafka?2六、先后端分离,如何维护接口文档 ?2七、如何从新加载 Spring Boot 上的更改,而无需从新启动服务器?2八、Spring Boot项目如何热部署?2九、您使用了哪些 starter maven 依赖项?30、spring-boot-starter-parent 有什么用 ?

咱们都知道,新建立一个 Spring Boot 项目,默认都是有 parent 的,这个 parent 就是 spring-boot-starter-parent ,spring-boot-starter-parent 主要有以下做用:

  • 定义了 Java 编译版本为 1.8 。
  • 使用 UTF-8 格式编码。
  • 继承自 spring-boot-dependencies,这个里边定义了依赖的版本,也正是由于继承了这个依赖,因此咱们在写依赖时才不须要写版本号。
  • 执行打包操做的配置。
  • 自动化的资源过滤。
  • 自动化的插件配置。
  • 针对 application.properties 和 application.yml 的资源过滤,包括经过 profile 定义的不一样环境的配置文件,例如 application-dev.properties 和 application-dev.yml。
3一、Spring Boot 打成的 jar 和普通的 jar 有什么区别 ?

Spring Boot 项目最终打包成的 jar 是可执行 jar ,这种 jar 能够直接经过 java -jar xxx.jar 命令来运行,这种 jar 不能够做为普通的 jar 被其余项目依赖,即便依赖了也没法使用其中的类。

Spring Boot 的 jar 没法被其余项目依赖,主要仍是他和普通 jar 的结构不一样。普通的 jar 包,解压后直接就是包名,包里就是咱们的代码,而 Spring Boot 打包成的可执行 jar 解压后,在 \BOOT-INF\classes 目录下才是咱们的代码,所以没法被直接引用。若是非要引用,能够在 pom.xml 文件中增长配置,将 Spring Boot 项目打包成两个 jar ,一个可执行,一个可引用。

3二、运行 Spring Boot 有哪几种方式?

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

2)用 Maven/ Gradle 插件运行

3)直接执行 main 方法运行

3三、如何使用SpringBoot实现分页和排序?

使用 Spring Boot 实现分页很是简单。使用 Spring Data-JPA 能够实现将可分页的传递给存储库方法。

微服务中如何实现 session 共享 ?

在微服务中,一个完整的项目被拆分红多个不相同的独立的服务,各个服务独立部署在不一样的服务器上,各自的 session 被从物理空间上隔离开了,可是常常,咱们须要在不一样微服务之间共享 session ,常见的方案就是 Spring Session + Redis 来实现 session 共享。将全部微服务的 session 统一保存在 Redis 上,当各个微服务对 session 有相关的读写操做时,都去操做 Redis 上的 session 。这样就实现了 session 共享,Spring Session 基于 Spring 中的代理过滤器实现,使得 session 的同步操做对开发人员而言是透明的,很是简便。

Spring Boot 中如何实现定时任务 ?

定时任务也是一个常见的需求,Spring Boot 中对于定时任务的支持主要仍是来自 Spring 框架。

在 Spring Boot 中使用定时任务主要有两种不一样的方式,一个就是使用 Spring 中的 @Scheduled 注解,另外一个则是使用第三方框架 Quartz。

使用 Spring 中的 @Scheduled 的方式主要经过 @Scheduled 注解来实现。

使用 Quartz ,则按照 Quartz 的方式,定义 Job 和 Trigger 便可。

总结

Spring Boot 是一套快速开发框架,随着微服务架构应用不断普及,Spring Boot 的研发技术的掌握已经成为研发人员必会技能。因为篇幅的问题,上面的面试题小编已经整理成文档和学习笔记,关注公众号:麒麟改bug,方便你们更容易直观的查看解析,和技术的学习。

文章到这里就结束了!

相关文章
相关标签/搜索