前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2020年度最常见的Spring Boot面试题【附解析】

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

原创
作者头像
Java程序猿
修改2021-01-13 18:05:20
1.5K0
修改2021-01-13 18:05:20
举报
文章被收录于专栏:Java核心技术Java核心技术

前言

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

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

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

1、什么是 Spring Boot?

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

2、Spring Boot 主要有如下优点:

容易上手,提升开发效率,为 Spring 开发提供一个更快、更广泛的入门体验。

开箱即用,远离繁琐的配置。

提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等。

没有代码生成,也不需要XML配置。

避免大量的 Maven 导入和各种版本冲突。

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

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

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

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

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

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

4、什么是 JavaConfig?

5、Spring Boot 自动配置原理是什么?

6、你如何理解 Spring Boot 配置加载顺序?

7、什么是 YAML?

8、Spring Boot 是否可以使用 XML 配置 ?

9、spring boot 核心配置文件是什么?

10、什么是 Spring Profiles?

11、如何在自定义端口上运行 Spring Boot 应用程序?

12、如何实现 Spring Boot 应用程序的安全性?

13、比较一下 Spring Security 和 Shiro 各自的优缺点 ?

14、什么是 CSRF 攻击?

15、Spring Boot 中的监视器是什么?

16、如何在 Spring Boot 中禁用 Actuator 端点安全性?

17、我们如何监视所有 Spring Boot 微服务?

18、什么是 WebSockets?

19、什么是 Spring Data ?

20、什么是 Spring Batch?

21、什么是 FreeMarker 模板?

22、如何集成 Spring Boot 和 ActiveMQ?

23、什么是 Swagger?

24、你用 Spring Boot 实现了它吗?

25、什么是 Apache Kafka?

26、前后端分离,如何维护接口文档 ?

27、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?

28、Spring Boot项目如何热部署?

29、您使用了哪些 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。31、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 ,一个可执行,一个可引用。

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

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

2)用 Maven/ Gradle 插件运行

3)直接执行 main 方法运行

33、如何使用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,方便大家更容易直观的查看解析,和技术的学习。

文章到这里就结束了!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1、什么是 Spring Boot?
  • 2、Spring Boot 主要有如下优点:
  • 3、Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
  • 4、什么是 JavaConfig?
  • 5、Spring Boot 自动配置原理是什么?
  • 6、你如何理解 Spring Boot 配置加载顺序?
  • 7、什么是 YAML?
  • 8、Spring Boot 是否可以使用 XML 配置 ?
  • 9、spring boot 核心配置文件是什么?
  • 10、什么是 Spring Profiles?
  • 11、如何在自定义端口上运行 Spring Boot 应用程序?
  • 12、如何实现 Spring Boot 应用程序的安全性?
  • 13、比较一下 Spring Security 和 Shiro 各自的优缺点 ?
  • 14、什么是 CSRF 攻击?
  • 15、Spring Boot 中的监视器是什么?
  • 16、如何在 Spring Boot 中禁用 Actuator 端点安全性?
  • 17、我们如何监视所有 Spring Boot 微服务?
  • 18、什么是 WebSockets?
  • 19、什么是 Spring Data ?
  • 20、什么是 Spring Batch?
  • 21、什么是 FreeMarker 模板?
  • 22、如何集成 Spring Boot 和 ActiveMQ?
  • 23、什么是 Swagger?
  • 24、你用 Spring Boot 实现了它吗?
  • 25、什么是 Apache Kafka?
  • 26、前后端分离,如何维护接口文档 ?
  • 27、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
  • 28、Spring Boot项目如何热部署?
  • 29、您使用了哪些 starter maven 依赖项?
  • 30、spring-boot-starter-parent 有什么用 ?
  • 32、运行 Spring Boot 有哪几种方式?
  • 33、如何使用SpringBoot实现分页和排序?
  • 总结
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档