2023 SpringBoogt高频面试题(精品)

1. 什么是 Spring Boot?

  • Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了 Spring使用的难度,省去过去繁重的xml文件配置,提供了各种启动器(即一个个starter),使开发者能快速上手,更加专注业务开发,提高开发效率。

2. Spring Boot 有哪些优点?

  • 容易上手,提升开发效率,为 Spring 开发提供一个更快、更简单的开发框架。
  • 开箱即用(指在pom.xml文件中加入需要的依赖包),远离繁琐的配置。
  • 提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监
    控、运行状况检查和外部化配置等。
  • SpringBoot总结就是使编码变简单、配置变简单、部署变简单、监控变简单等等

3. 为什么要用SpringBoot(听反馈很多面试官会问这个无聊的问题,所以还是记录一下)

  • 快速开发,快速整合,配置简化、内嵌服务容器

4. SpringBoot与SpringCloud 区别

  • SpringBoot是快速开发的Spring微服务框架,SpringCloud是基于SpringBoot提供的一整套完整的微服务治理框架,里面包含如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等子模块组件,SpringCloud底层依赖于SpringBoot。

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

  • Spring Boot 的核心注解是 @SpringBootApplication , 它是一个复合注解,由 @SpringBootConfiguration
    @EnableAutoConfiguration @ComponentScan 三个注解组合而成

6. SpringBoot支持哪几种配置文件的格式?默认使用哪一种格式的配置文件?

  • SpringBoot支持 .properties.yml两种格式配置文件,默认使用 .properties 配置文件

7. 如何快速构建一个SpringBoot项目?

  • 通过Web界面使用。http://start.spring.io
  • 通过Spring Tool Suite使用。
  • 通过IntelliJ IDEA使用。
  • 使用Spring Boot CLI使用。

8. SpringBoot启动方式?

  • main方法
  • 命令行 java -jar 的方式
  • mvn/gradle

9. Spring Boot 支持哪些日志框架?默认的日志框架是哪个?

  • SpringBoot 支持log4j、log4j2、logback等日志框架,SpringBoot默认的日志框架是logback

10. 开启 Spring Boot 特性有哪几种方式?

  • 继承spring-boot-starter-parent项目
  • 导入spring-boot-dependencies项目依赖

11. 请你说一说SpringBoot的自动配置原理?

  • 所谓的自动装配,简单来说就是自动把第三方组件的Bean装载到 Spring IOC 器里面,不需要开发人员再去写 Bean的装配配置。在 Spring Boot 应用里面,只需要在启动类加上@SpringBootApplication 注解就可以实现自动装配。@SpringBootApplication是一个复合注解,真正实现自动装配的注解是@EnableAutoConfiguration。
  • 自动装配的实现主要依靠三个核心关键技术。
    引入 Starter 启动依赖组件的时候,这个组件里面必须要包含@Configuration 配置类,在这个配置类里面通过@Bean 注解声明需要装配到IOC容器的Bean对象。这个配置类是放在第三方的jar包里面,然后通过SpringBoot 中的约定优于配置思想,把这个配置类的全路径放在 classpath:/META-INF/spring.factories 文件中。这样子SpringBoot 就可以知道第三方 jar 包里面的配置类的位置,这个步骤主要是用到了Spring里面的springFactoriesLoader 来完成的。SpringBoot 拿到所第三方 jar 包里面声明的配置类以后再通过 Spring 提供
    的ImportSelector接口,实现对这些配置类的动态加载。

12. 谈一谈你对Springboot约定优于配置的理解?

  • 首先,约定优于配置是一种软件设计的范式,它的核心思想是减少软件开发人员对于配置项的维护,从而让开发人员更加聚焦在业务逻辑上。SpringBoot 就是约定优于配置这一理念下的产物,它类似于 Spring 框架下的一个脚手架,通过 SpringBoot,我们可以快速开发基于 Spring 生态下的应用程序。基于传统的 Spring 框架开发 web 应用,我们需要做很多和业务开发无关并且只需要做一次的配置,比如管理 jar 包依赖web.xml 维护Dispatch-Servlet.xml 配置项维护应用部署到 Web 容器第三方组件集成到Spring IOC 容器中的配置项维护而在 Spring Boot 中,我们不需要再去做这些繁琐的配置,SpringBoot已经自动帮我们完成了,这就是约定优于配置思想的体现。
  • Spring Boot 约定由于配置的体现有很多,比如Spring Boot Starter 启动依赖,它能帮我们管理所有 jar 包版本
    如果当前应用依赖了spring mvc相关的jar,那么Spring Boot会自动内置Tomcat容器来运行 web 应用,我们不需要再去单独做应用部署。Spring Boot 的自动装配机制的实现中,通过扫描约定路径下的 spring.factories文件来识别配置类,实现 Bean 的自动装配。默认加载的配置文件 application.properties 等等。总的来说,约定优于配置是一个比较常见的软件设计思.

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

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

14. 说一说你常用的Starter?

  • spring-boot-starter-web
  • spring-boot-starter-test
  • springfox-boot-starter
  • spring-boot-starter-validation
  • mybatis-plus-boot-starter
  • mysql-connector-java
  • spring-boot-starter-data-redis

15. SpringBoot如何实现热部署?

  • 通过引入 spring-boot-devtools 实现

16. 说一说SpringBoot中常用的注解有哪些?(太多了,随便说几个常用的就行)

  • @SpringBootApplication
  • @MapperScan
  • @RestController
  • @RequestMapping
  • @Autowired
  • @Resource
  • @RequestBody
  • @PostConstruct
  • @CookieValue

17. 什么是SpringProfiles?

  • 简单讲,就是不同阶段的环境,用不同的配置文件(如开发环境用开发环境dev的配置文件,测试环境用测试环境test的配置文件,上生产环境就用生产环境pro的配置文件)。一般应用软件,从开发到发布生产,要经过开发(dev)、测试(test)、生产(pro)几个阶段。不同的阶段,我们会用不同的配置。Spring Profiles 允许用户根据配置文件(dev,test,pro 等)来注册不同环境的bean。

18. SpringBoot应用如何注入未被管理的第三方bean?

  • 通过@Import 注解,实现第三方bean的容器注入

最后:

先自我介绍一下,小编13年毕业于厦门大学,14年在外包公司中软干过,后来去过微软、华为等大厂,20年进入鹅厂担任架构师,直到现在。这一路走来,深知大多数初中级java工程师,想要提升技能,往往需要自己长时间的摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率不仅低效而且还很漫长,很容易就碰到天花板致技术停止不前。 因此我收集整理了一份《java开发全套学习资料》送给大家,里面包含了Spring全家桶,MySQL,中间件Redis、kafka,MQ消息,Zookeeper等java全系列资料,非常适合初中高级各个阶段学习,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料。后面抽时间定期更新一些干货文章,如果你喜欢,也可添加下方名片学习交流 (๑๑)

你可能感兴趣的:(java干货铺子,SpringBoot,面试藏经阁,java,spring,spring,boot)