最常见的SpringBoot⾯试题【附解析】
前⾔
Spring Boot 是⼀套快速开发框架,随着微服务架构应⽤不断普及,Spring Boot 的研发技术的掌握已经成为研发⼈员必会技能。与此同时,Spring Boot 开源⽣态建设能⼒⾮常强⼤,提供了很多应⽤组件,让Spring Boot 有丰富的三⽅开源软件的使⽤。
基于上⾯的情况,Spring Boot 基本上成为了⼤中型互联⽹公司⾯试的必考题。
本篇⼩编根据⼤⼚的⼀些⾯试题库的梳理,将核⼼的⾯试提供分享给⼤家
1、什么是 Spring Boot?
Spring Boot 是 Spring 开源组织下的⼦项⽬,是 Spring 组件⼀站式解决⽅案,主要是简化了使⽤ Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上⼿。
2、Spring Boot 主要有如下优点:
容易上⼿,提升开发效率,为 Spring 开发提供⼀个更快、更⼴泛的⼊门体验。
开箱即⽤,远离繁琐的配置。
提供了⼀系列⼤型项⽬通⽤的⾮业务性功能,例如:内嵌服务器、安全管理、运⾏数据监控、运⾏状况检查和外部化配置等。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、⾼性能⾼可⽤、MySQL,redis、jvm、多线程、netty、kafka、的加尉(同英):1253431195 扩列获取资料学习,⽆⼯作经验不要加哦!
springboot框架的作用没有代码⽣成,也不需要XML配置。
避免⼤量的 Maven 导⼊和各种版本冲突。
3、Spring Boot 的核⼼注解是哪个?它主要由哪⼏个注解组成的?
启动类上⾯的注解是@SpringBootApplication,它也是 Spring Boot 的核⼼注解,主要组合包含了以下 3 个注解:
启动类上⾯的注解是@SpringBootApplication,它也是 Spring Boot 的核⼼注解,主要组合包含了以下 3 个注解:
@SpringBootConfiguration:组合了 @Configuration 注解,实现配置⽂件的功能。
@EnableAutoConfiguration:打开⾃动配置的功能,也可以关闭某个⾃动配置的选项,如关闭数据源⾃动配置功能:
@SpringBootApplication(exclude{DataSourceAutoConfiguration.class})
@ComponentScan:Spring组件扫描,由于篇幅的问题,下⾯的⾯试题⼩编已经整理成⽂档和学习笔记,⽅便⼤家更容易直观的查看解析,和技术的学习。
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,这个⾥边定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时才不需要写版本号。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、⾼性能⾼可⽤、MySQL,redis、jvm、多线程、netty、kafka、的加尉(同英):1253431195 扩列获取资料学习,⽆⼯作经验不要加哦!
执⾏打包操作的配置。
⾃动化的资源过滤。
⾃动化的插件配置。
针对 application.properties 和 l 的资源过滤,包括通过 profile 定义的不同环境的配置⽂件,例如 application-
dev.properties 和 l。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 ⽬录下才是我们的代码,因此⽆法被直接引⽤。如果⾮要引⽤,可以在 l ⽂件中增加配置,将 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。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、⾼性能⾼可⽤、MySQL,redis、jvm、多线程、netty、kafka、的加尉(同英):1253431195 扩列获取资料学习,⽆⼯作经验不要加哦!
使⽤ Spring 中的 @Scheduled 的⽅式主要通过 @Scheduled 注解来实现。
使⽤ Quartz ,则按照 Quartz 的⽅式,定义 Job 和 Trigger 即可。
总结
Spring Boot 是⼀套快速开发框架,随着微服务架构应⽤不断普及,Spring Boot 的研发技术的掌握已经成为研发⼈员必会技能。由于篇幅的问题,上⾯的⾯试题⼩编已经整理成⽂档和学习笔记,⽅便⼤家更容易直观的查看解析,和技术的学习。
⽂章到这⾥就结束了!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论