紧急整理了 20 道 Spring Boot 面试题,我经常拿来面试别人

转载自  紧急整理了 20 道 Spring Boot 面试题,我经常拿来面试别人

面试了一些人,简历上都说自己熟悉 Spring Boot, 或者说正在学习 Spring Boot,一问他们时,都只停留在简单的使用阶段,很多东西都不清楚,也让我对面试者大失所望。

下面,我给大家总结下有哪些 Spring Boot 的面试题,这是我经常拿来问面试者的,希望对你有帮助。

1、什么是 Spring Boot?

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

更多 Spring Boot 详细介绍请看这篇文章《什么是Spring Boot?》。

2、为什么要用 Spring Boot?

Spring Boot 优点非常多,如:

  • 独立运行

  • 简化配置

  • 自动配置

  • 无代码生成和XML配置

  • 应用监控

  • 上手容易

Spring Boot 集这么多优点于一身,还有理由不使用它呢?

3、Spring Boot 的核心配置文件有哪几个?它们的区别是什么?

Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。

application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。

bootstrap 配置文件有以下几个应用场景。

  • 使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;

  • 一些固定的不能被覆盖的属性;

  • 一些加密/解密的场景;

具体请看这篇文章《Spring Boot 核心配置文件详解》。

4、Spring Boot 的配置文件有哪几种格式?它们有什么区别?

.properties 和 .yml,它们的区别主要是书写格式不同。

1).properties

app.user.name = javastack

2).yml

app:user:name: javastack

另外,.yml 格式不支持 @PropertySource 注解导入配置。

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

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

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

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

@ComponentScan:Spring组件扫描。

6、开启 Spring Boot 特性有哪几种方式?

1)继承spring-boot-starter-parent项目

2)导入spring-boot-dependencies项目依赖

具体请参考这篇文章《Spring Boot开启的2种方式》。

7、Spring Boot 需要独立的容器运行吗?

可以不需要,内置了 Tomcat/ Jetty 等容器。

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

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

2)用 Maven/ Gradle 插件运行

3)直接执行 main 方法运行

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

注解 @EnableAutoConfiguration, @Configuration, @ConditionalOnClass 就是自动配置的核心,首先它得是一个配置文件,其次根据类路径下是否有这个类去自动配置。

具体看这篇文章《Spring Boot自动配置原理、实战》。

10、Spring Boot 的目录结构是怎样的?

cn+- javastack+- MyApplication.java|+- customer|   +- Customer.java|   +- CustomerController.java|   +- CustomerService.java|   +- CustomerRepository.java|+- order+- Order.java+- OrderController.java+- OrderService.java+- OrderRepository.java

这个目录结构是主流及推荐的做法,而在主入口类上加上 @SpringBootApplication 注解来开启 Spring Boot 的各项能力,如自动配置、组件扫描等。具体看这篇文章《Spring Boot 主类及目录结构介绍》。

11、你如何理解 Spring Boot 中的 Starters?

Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖包。如你想使用 Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖就能使用了。

Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。具体请看这篇文章《Spring Boot Starters启动器》。

12、如何在 Spring Boot 启动的时候运行一些特定的代码?

可以实现接口 ApplicationRunner 或者 CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个 run 方法,具体请看这篇文章《Spring Boot Runner启动器》。

13、Spring Boot 有哪几种读取配置的方式?

Spring Boot 可以通过 @PropertySource,@Value,@Environment, @ConfigurationProperties 来绑定变量,具体请看这篇文章《Spring Boot读取配置的几种方式》。

14、Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?

Spring Boot 支持 Java Util Logging, Log4j2, Lockback 作为日志框架,如果你使用 Starters 启动器,Spring Boot 将使用 Logback 作为默认日志框架,具体请看这篇文章《Spring Boot日志集成》。

15、SpringBoot 实现热部署有哪几种方式?

主要有两种方式:

  • Spring Loaded

  • Spring-boot-devtools

Spring-boot-devtools 使用方式可以参考这篇文章《Spring Boot实现热部署》。

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

在 Spring Boot 里面,可以使用以下几种方式来加载配置。

1)properties文件;

2)YAML文件;

3)系统环境变量;

4)命令行参数;

等等……

具体请看这篇文章《Spring Boot 配置加载顺序详解》。

17、Spring Boot 如何定义多套不同环境配置?

提供多套配置文件,如:

applcation.propertiesapplication-dev.propertiesapplication-test.propertiesapplication-prod.properties

运行时指定具体的配置文件,具体请看这篇文章《Spring Boot Profile 不同环境配置》。

18、Spring Boot 可以兼容老 Spring 项目吗,如何做?

可以兼容,使用 @ImportResource 注解导入老 Spring 项目配置文件。

19、保护 Spring Boot 应用有哪些方法?

  • 在生产中使用HTTPS

  • 使用Snyk检查你的依赖关系

  • 升级到最新版本

  • 启用CSRF保护

  • 使用内容安全策略防止XSS攻击

更多请看这篇文章《10 种保护 Spring Boot 应用的绝佳方法》。

20、Spring Boot 2.X 有什么新特性?与 1.X 有什么区别?

  • 配置变更

  • JDK 版本升级

  • 第三方类库升级

  • 响应式 Spring 编程支持

  • HTTP/2 支持

  • 配置属性绑定

  • 更多改进与加强…

具体请看这篇文章《Spring Boot 2.x 新特性总结及迁移指南》。


终于写完了,希望大家好好学习下再去面试,不然再被面试官问这些问题,又答不上来就尴尬了。弄懂了这些问题,对你理解 Spring Boot 也有非常大的帮助,其实,上面的这些题,在我们的公众号Java技术栈里面都能找到答案。

这 20 道面试题就算第一季吧,后面会整理更多季 Spring Boot/Cloud 相关的面试题。更多的 Spring Boot 系列技术文章,请关注微信公众号:Java技术栈(id: javastack),在后台回复关键字 "boot" 获取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core快速入门教程 2、我的第一个.NET Core App(Windows篇)

一、前言 本篇开发环境?1、操作系统: Windows 10 X642、SDK: .NET Core 2.0 Preview 二、安装 .NET Core SDK 1、下载 .NET Core下载地址:https://www.microsoft.com/net/download/core根据自己电脑情况选择对应版本即可.NET C…

【2018.3.24】模拟赛之六-ssl2550 重要人物【图论,最短路,SPFA】

正题 大意 有一个大人物&#xff0c;它要从经过一些地方&#xff0c;他所在的路会被封闭&#xff08;不可以进入&#xff0c;可以出&#xff09;。你要从一个点到到另一个点&#xff0c;求最短时间。 解题思路 求出每条路的封闭时间&#xff0c;然后SPFA 代码 #include<…

今天 ,给大家变个魔术!!!

前言&#xff1a;在对网页进行布局时&#xff0c;当我们设置div的的宽为固定宽时&#xff0c;理论上&#xff0c;内容是不会超出div的&#xff0c;那你有没有见过内容超出div固定宽度的情况呢&#xff1f;今天我们就来看看到底是怎么一回事&#xff1f;看分析之前&#xff0c;我…

Google的面试题长啥样

转载自 Google的面试题长啥样 本文翻译自Google工程师/面试官Alex Golec的文章&#xff1a;Google Interview Questions Deconstructed: The Knight’s Dialer&#xff1b; 来源&#xff1a;实验楼&#xff0c;翻译&#xff1a;实验楼扫地阿姨 原文&#xff1a;https://medium…

ssl初一组周六模拟赛【2018.3.24】

前言 先说一下成绩&#xff1a; 姓名成绩xxy480xjq470wyc(本人)430lw350hjq350zyc325lrz280hzb250 正题 题目1&#xff1a;ssl2545 奇数【水题】 水题 链接&#xff1a; https://blog.csdn.net/mr_wuyongcong/article/details/79677182 题目2&#xff1a;ssl2546 求和【贪…

Autofac+Castle实现AOP事务

一、前言 最近公司新项目&#xff0c;需要搭架构进行开发&#xff0c;其中需要保证事务的一致性&#xff0c;经过一番查找&#xff0c;发现很多博文都是通过Spring.Net、Unity、PostSharp、Castle Windsor这些方式实现AOP的。但是这不是我想要的&#xff0c;因此一番查找后&am…

今天,我们就来抽个奖!

前言&#xff1a;在日常生活中&#xff0c;我们经常会用到一些抽奖的功能&#xff0c;比如公司年会上的抽奖环节&#xff0c;班级随机点名回答问题的小程序&#xff0c;随机点名系统的程序可以看这里&#xff1a;&#xff0c;那你知道类似的抽奖功能是怎么实现的吗&#xff1f;…

Spring Boot 最核心的 3 个注解详解

转载自 Spring Boot 最核心的 3 个注解详解 最近面试一些 Java 开发者&#xff0c;他们其中有些在公司实际用过 Spring Boot, 有些是自己兴趣爱好在业余自己学习过。 然而&#xff0c;当我问他们 Spring Boot 最核心的 3 个注解是什么&#xff0c;令我失望的是鲜有人能答上来…

刚刚,改造了下BaseDao……

今天在上课的时候&#xff0c;带着学生们写底层的jdbc连接数据库并且对数据表进行增删改查&#xff0c;写的那就一个痛苦啊……从创建实体类到写Dao层代码再到表现层的Jsp页面&#xff0c; 写了好久好久……终于写完了&#xff01;&#xff01;&#xff01;其实吧&#xff0…

ssl2340-格子游戏【并查集】

正题 题目链接 大意 有两个人在玩游戏&#xff0c;在一个n*n的矩阵的点上画线&#xff0c;有如果有线封了圈那么游戏结束&#xff0c;给出一些操作&#xff0c;求在那一轮结束了游戏&#xff0c;或没有结束游戏。 解题思路 用并查集把点相连&#xff0c;直到并查集形成环为…

ASP.NET Core MVC 过滤器介绍

过滤器的作用是在 Action 方法执行前或执行后做一些加工处理。使用过滤器可以避免Action方法的重复代码&#xff0c;例如&#xff0c;您可以使用异常过滤器合并异常处理的代码。 过滤器如何工作&#xff1f; 过滤器在 MVC Action 调用管道中运行&#xff0c;有时称为过滤器管…

dubbo小项目

完整Dubbo项目演示 1 原型 1.1 部门显示&#xff0c;显示全部部门信息 1.2 员工新增 1.3 查看部门员工 2 按照分布式架构进行设计项目 设定员工管理和部门管理不在同一个模块中&#xff0c;需要有一个员工管理项目和一个部门管理项目。 为了方便&#xff0c;不去每个项…

如何构建一套高可用的 APP 消息推送平台

转载自 如何构建一套高可用的 APP 消息推送平台 消息推送作为移动 APP 运营中的一项关键技术&#xff0c;已经被越来越广泛的运用。本文追溯了推送技术的发展历史&#xff0c;剖析了其核心原理&#xff0c;并对推送服务的关键技术进行深入剖析&#xff0c;围绕消息推送时产生…

为什么要有周考?周考是用来干什么的?

周考已经实行一年多的时间了&#xff0c;目前唯一用来检测学生们水平的可能就是周考的成绩了&#xff0c;不过&#xff0c;周考成绩也很能说明一切&#xff0c;每周周考的题目和范围都是本周所学知识&#xff0c;如果周考的成绩很差&#xff0c;那么可以很肯定的说&#xff0c;…

POJ2186-Popular Cows(流行的奶牛)【tarjan,强连通分量,图论】

正题 题目链接 大意 有n头奶牛&#xff0c;奶牛们会认为有些奶牛很受欢迎&#xff0c;受欢迎会互相传递&#xff0c;如:如果A认为B很受欢迎&#xff0c;而B认为C受欢迎&#xff0c;那么A也会认为C是受欢迎的。然后求每一个奶牛都认为受欢迎的奶牛数量。 解题思路 先用tarjan…

.NET Core快速入门教程 4、使用VS Code开发.NET Core控制台应用程序

一、前言 为什么选择VS Code&#xff1f;VS Code 是一款跨平台的代码编辑器&#xff0c;想想他的哥哥VS&#xff0c;并是微软出品的宇宙第一IDE&#xff0c;那作为VS的弟弟&#xff0c;VS Code 也不会差&#xff0c;毕竟微软出品。反正ken是这么认为的本篇开发环境&#xff1f…

zookeeper not connected

问题&#xff1a; 异常信息&#xff1a; zookeeper not connected 异常场景&#xff1a; spring boot dubbo 启动时&#xff0c;连接zk出现问题 解决方案&#xff1a; 1、 检查zk所在机的防火墙。 systemctl stop firewalld | service firewalld stop 2、 检查zk所在机的ip和y…

Redis 5.0 正式版发布了,19 个新特性

转载自 Redis 5.0 正式版发布了&#xff0c;19 个新特性 Redis 5.0 GA 正式版发布了&#xff01; 下载地址&#xff1a; download.redis.io/releases/redis-5.0.0.tar.gz 源码下载&#xff1a; github.com/antirez/redis/releases/tag/5.0.0 先看一下 Redis 5 带来的更新内容…

晨读,难道只是为了完成任务而读的吗?

前两天&#xff0c;看到一篇“湖北恩施的一名学生早读课上大汗淋漓”的文章&#xff0c;不禁想起了我们班的早读。01早读情况除周一升旗以外&#xff0c;其余的学习日都是有早读的&#xff0c;但是早读的利用率有多少就不得而知了。一般在前一天布置作业的时候&#xff0c;作业…

P1197-星球大战【并查集,图论】

正题 题目链接 大意 有n个星球&#xff0c;有一些双向通道连接星球&#xff0c;将一些星球实施打击。求开始和每一次打击后的联通块数量。 解题思路 可以尝试一下逆向思维&#xff0c;把摧毁改为连接&#xff0c;然后倒着输出。 代码 #include<cstdio> #include<i…