2021年SpringBoot⾯试题30道
⽂章⽬录
前⾔
作为应届⽣,处于⼯作中ing。今年2⽉份刚刚整理出来的⾯试题,时间⽐较赶就没有按照模块分类排序了。总⽽⾔之,顺序⽐较乱,希望⼤家耐着性⼦ 看。如果实在介意,评论告知,我会视情况作修改的。另外如果⼤家觉得我的答案不够清晰,欢迎私信或者评论只出,我看到都会去修改的!
codeblocks二进制版本⾯试题系列⽂章传送门
SpringBoot⾯试题内容
1.谈谈你对Spring Boot的理解?
SpringBoot主要⽤来简化使⽤Spring的难度和繁重的XML配置,它是Spring组件的⼀站式解决⽅案,采取了习惯优于配置的⽅法。
通过.properties或者.yml⽂件替代了Spring繁杂的XML配置⽂件,同时⽀持@ImportResource注解加载X
ML配置。Spring Boot 还提供了嵌⼊式HTTP服务器、命令⾏接⼝⼯具、多种插件等等,使得应⽤程序的测试和开发简单起来。
2. 为什么需要Spring Boot?
Spring Boot 优点⾮常多,如:独⽴运⾏、简化配置、⾃动配置和⽆需部署war⽂件等等
3. 说出Spring Boot 的优点
简化开发,提⾼整体⽣产⼒
Spring Boot 使⽤ JavaConfig 有助于避免使⽤ XML,同时避免⼤量的Maven导⼊和各种版本冲突
Spring Boot 引导的应⽤程序可以很容易地与 Spring ⽣态系统集成,如Spring JDBC、Spring ORM、Spring Data、Spring Security等等
Spring Boot 应⽤程序提供嵌⼊式HTTP服务器,如Tomcat和Jetty,可以轻松地开发和测试web应⽤程序。
Spring Boot 提供命令⾏接⼝⼯具,⽤于开发和测试应⽤程序
Spring Boot 提供了多种插件,可以使⽤内置Maven⼯具开发和测试 应⽤程序
Spring Boot 没有单独的 Web 服务器需要,这意味着不再需要启动 Tomcat或其他任何东西
4. Spring Boot 的核⼼配置⽂件有哪⼏个?它们的区别是什么?
Spring Boot 的核⼼配置⽂件是 application 和 bootstrap 配置⽂件。
application 配置⽂件主要⽤于 Spring Boot 项⽬的⾃动化配置。
bootstrap 配置⽂件有三个应⽤场景。
使⽤Spring Cloud Config配置中⼼时,需要在 bootstrap 配置⽂件中添加连接到配置中⼼的配置属性,来加载外部配置中⼼的配置信息;
⼀些固定的不能被覆盖的属性;
⼀些加密或解密的场景;
5. Spring Boot 的配置⽂件有哪⼏种格式?它们有什么区别?
主要有.properties 和 .yml格式,它们的区别主要是书写格式不同。另外,.yml 格式不⽀持 @PropertySource 注解导⼊配置。
6. 开启SpringBoot特性有哪⼏种⽅式?
继承spring-boot-starter-parent项⽬
导⼊spring-boot-dependencies项⽬依赖
7. 什么是Spring Boot Starter?
Starters可以理解为启动器,它包含了⼀系列可以集成到应⽤⾥⾯的依赖包,可以⼀站式集成 Spring 和其他技术,⽽不需要到处⽰例代码和依赖包。Spring Boot Starter的⼯作原理是:Spring Boot 在启动时扫描项⽬所依赖的JAR包,寻包含
spring.factories⽂件的JAR包,根据spring.factories配置加载AutoConfigure类,根据 @Conditional注解的条件,进⾏⾃动配置并将Bean注⼊Spring Context
8. Spring Boot 有哪⼏种读取配置的⽅式?
使⽤@Value注解加载单个属性值
使⽤@ConfigurationProperties注解可以加载⼀组属性的值,针对于要加载的属性过多的情况,⽐@Value注解更加简洁easyui datagrid 显示省略号是哪个属性
9. Spring Boot ⽀持哪些⽇志框架?推荐和默认的⽇志框架是哪个?
Spring Boot ⽀持 Java Util Logging, Log4j2, Logback 作为⽇志框架,如果使⽤ Starters 启动器,Spring Boot 将使⽤Logback 作为默认⽇志框架,推荐的⽇志框架是Log4j2。
10. Spring Boot 可以兼容⽼ Spring 项⽬吗?
可以兼容,使⽤ @ImportResource 注解导⼊⽼ Spring 项⽬配置⽂件。
11. 保护 Spring Boot 应⽤有哪些⽅法?
在⽣产中使⽤HTTPS
使⽤Snyk检查依赖关系
升级到最新版本
启⽤CSRF保护
bv件解析器
使⽤内容安全策略防⽌XSS攻击
12. 什么是 JavaConfig?
JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯 Java ⽅法,有助于避免使⽤ XML 配置。
13. (Spring Boot 的核⼼注解是哪个?它主要由哪⼏个注解组成的)介绍⼀下
@SpringBootApplication 注解
Spring Boot 的核⼼注解是@SpringBootApplication,它也是启动类使⽤的注解,主要包含了 3 个注解:
@SpringBootConfiguration:它组合了 @Configuration 注解,实现配置⽂件的功能。
@EnableAutoConfiguration:具有打开⾃动配置的功能,也可以关闭某个⾃动配置的选项。
@ComponentScan:⽤于Spring组件扫描。
14. Spring Boot ⾃动配置原理是什么?
@EnableAutoConfiguration注解、 @Configuration注解和 @ConditionalOnClass注解组成了Spring Boot⾃动配置的核⼼,⾸先它得是⼀个配置⽂件,其次根据类路径下是否有这个类去⾃动配置。具体是通过maven读取每个starter中的spring.factories⽂件,该⽂件配置了所有需要被创建在spring容器中的bean。
15. 你如何理解 Spring Boot 配置加载顺序?
Spring Boot配置加载顺序优先级是:propertiese⽂件、YAML⽂件、系统环境变量、命令⾏参数。
nslookup是什么意思16. Spring Boot⽀持哪些嵌⼊式Web容器?
Spring Boot⽀持的嵌⼊式servlet容器有: Tomcat、Jetty、Undertow。
17. 什么是YAML?
YAML 是⼀种可读的数据序列化语⾔,它通常⽤于配置⽂件。
18. YAML 配置的优势在哪⾥ ?
配置有序
⽀持数组,数组中的元素可以是基本数据类型或者对象
简洁⽅便
19. Spring Boot 是否可以使⽤ XML 配置 ?
Spring Boot 推荐使⽤ Java 配置同时⽀持 XML 配置,通过 @ImportResource 注解加载 XML 配置。
20. application.properties和bootstrap.properties有何区别 ?
bootstrap⽐ applicaton 优先加载,配置在应⽤程序上下⽂的引导阶段⽣效, ⽽且boostrap ⾥⾯的属性不能被覆盖;
application⽤于 spring boot 项⽬的⾃动化配置。
21. 什么是 Spring Profiles?
Spring Profiles 允许⽤户根据配置⽂件(dev,prod,test等等)来注册 bean。当应⽤程序在开发环境中运⾏时,只有某些 bean 可以加载,⽽在⽣产环境中,某些其他 bean 也可以加载。⽐如要求 Swagger ⽂档仅适⽤于测试环境,并且禁⽤所有其他⽂档,可以使⽤配置⽂件来完成。
22. 如何在⾃定义端⼝上运⾏ Spring Boot 应⽤程序
可以在 application.properties 配置⽂件中指定端⼝,⽐如server.port = 8090
23. 如何实现 Spring Boot 应⽤程序的安全性?
为了实现 Spring Boot 的安全性,可以使⽤ spring-boot-starter-security 依赖,添加安全配置和重写
WebSecurityConfigurerAdapter 配置类的⽅法。
24. 什么是 WebSocket?
WebSocket 是⼀种计算机通信协议,通过单个 TCP 连接提供全双⼯通信信道。
WebSocket 是双向的 ,使⽤ WebSocket 客户端或服务器可以实现消息发送。
WebSocket 是全双⼯的 ,客户端和服务器通信是相互独⽴的。
WebScoket 使⽤单个 TCP 连接 ,与http 相⽐,WebSocket 消息数据交换要轻得多。
25. Spring Boot 中的监视器是什么?(什么是Spring Boot Actuator)?
商城系统业务流程图
Spring boot actuator 是 spring 启动框架中的重要功能之⼀,Spring boot 监视器可以访问⽣产环境中正在运⾏的应⽤程序的当前状态。监视器模块公开了⼀组可直接作为 HTTP URL 访问的 REST 端点来检查状态。
26. 如何在 Spring Boot 中禁⽤ Actuator 端点安全性?
默认情况下,所有敏感的 HTTP 端点都是安全的,只有具有 ACTUATOR ⾓⾊的⽤户才能访问它们。
安全性是使⽤标准的 HttpServletRequest.isUserInRole ⽅法实施的,可以⽤来禁⽤安全性。
只有在执⾏机构端点在防⽕墙后访问时,才建议禁⽤安全性。
27. 什么是 CSRF 攻击?
CSRF 代表跨站请求伪造,这是⼀种攻击,迫使最终⽤户在当前通过⾝份验证的Web 应⽤程序上执⾏不需要的操作。CSRF 攻击专门针对状态改变请求,⽽不是数据窃取,因为攻击者⽆法查看对伪造请求的响应。
28. 如何使⽤ Spring Boot 实现异常处理?
properties文件用什么打开
Spring 通过使⽤ @ControllerAdvice 注解处理异常,实现⼀个ControllerAdvice 类来处理控制器类抛出的所有异常。
29. 如何监视所有 Spring Boot 微服务?
Spring Boot 提供监视器端点监控各个微服务,这些端点对于获取有关应⽤程序的信息(如它们是否已启动)以及它们的组件(如数据库等)是否正常运⾏很有帮助。但是⽤监视器的⼀个主要缺点是,必须单独打开应⽤程序的知识点以了解其状态或健康状况。
30. 运⾏ Spring Boot 有哪⼏种⽅式?
⽤命令打包或者放到容器中运⾏
⽤ Maven 插件运⾏
直接执⾏ main ⽅法运⾏
有问题欢迎私信/评论指出,谢谢您的观看,希望对您有帮助哦!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论