JavaWeb编程面试题——Spring Boot
引言
面试题==知识点,这里所记录的面试题并不针对于面试者,而是将这些面试题作为技能知识点来看待。不以刷题进大厂为目的,而是以学习为目的。这里的知识点会持续更新,目录也会随时进行调整。
关注公众号:编程火箭车。在【粉丝福利】中点击【面题大全】,其中的Java面试题在线实时更新、查看。
一、面试题导航
点这里进入JavaWeb编程面试题——导航
面试题持续更新中......
二、面试题目
1.什么是SpringBoot?
SpringBoot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,使开发者能快速上手。
2.谈谈你对SpringBoot的理解?
SpringBoot 主要用来简化使用 Spring 的难度和繁重的 XML 配置,它是 Spring 组件的一站式解决方案,采取了习惯优于配置的方法。通过 .properties
或者 .yml
文件替代了 Spring 繁杂的 XML 配置文件,同时支持 @ImportResource
注解加载 XML 配置。SpringBoot 还提供了嵌入式 HTTP 服务器、命令行接口工具、多种插件等等,使得应用程序的测试和开发简单起来。
3.为什么需要SpringBoot?
SpringBoot 优点非常多,如:独立运行、简化配置、自动配置和无需部署 war 文件等等。
4.SpringBoot的配置文件有哪几种格式?
主要有 .properties
和 .yml
格式,它们的区别主要是书写格式不同。另外 .yml
格式不支持 @PropertySource
注解导入配置。
5.SpringBoot支持哪些日志框架?推荐和默认的日志框架是哪个?
SpringBoot 支持 Java Util Logging
,Log4j2
,Logback
作为日志框架。如果使用 Starters
启动器,SpringBoot 将使用 Logback
作为默认日志框架,推荐的日志框架是 Log4j2
。但是不管是那种日志框架他都支持将配置文件输出到控制台或者文件中。
6.什么是YAML?
YAML 是一种可读的数据序列化语言,它通常用于配置文件。与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML 文件就更加结构化,而且更少混淆。可以看出 YAML 具有分层配置数据。
7.SpringBoot支持哪些嵌入式Web容器?
SpringBoot 支持的嵌入式 servlet 容器有:Tomcat
、Jetty
、Undertow
。
8.SpringBoot需要独立的容器运行吗?
可以不需要,内置了 Tomcat/Jetty
等容器。
9.你如何理解SpringBoot配置加载顺序?
SpringBoot 配置加载顺序优先级是:properties 文件、YAML 文件、系统环境变量、命令行参数。
10.SpringBoot可以兼容老Spring项目吗?
可以兼容,使用 @ImportResource
注解导入老 Spring 项目配置文件。
11.说出SpringBoot的优点?
简化开发,提高整体生产力。
SpringBoot 使用
JavaConfig
有助于避免使用 XML,同时避免大量的 Maven 导入和各种版本冲突。SpringBoot 引导的应用程序可以很容易地与 Spring 生态系统集成,如
Spring JDBC
、Spring ORM
、Spring Data
、Spring Security
等等。SpringBoot 应用程序提供嵌入式 HTTP 服务器,如
Tomcat
和Jetty
,可以轻松地开发和测试 Web 应用程序。SpringBoot 提供命令行接口工具,用于开发和测试应用程序。
SpringBoot 提供了多种插件,可以使用内置 Maven 工具开发和测试应用程序。
SpringBoot 没有单独的 Web 服务器需要,这意味着不再需要启动 Tomcat 或其他任何东西。
12.如何在自定义端口上运行SpringBoot应用程序?
可以在 application.properties
配置文件中指定端口,比如 server.port=8090
13.如何重新加载SpringBoot上的更改,而无需重新启动服务器?
这可以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式 Tomcat 将重新启动。SpringBoot 有一个开发工具 DevTools 模块,它有助于提高开发人员的生产力。Java 开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新加载 SpringBoot 上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。SpringBoot 在发布它的第一个版本时没有这个功能。这是开发人员最需要的功能。
DevTools 模块完全满足开发人员的需求。该模块将在生产环境中被禁用。它还提供 H2 数据库控制台以更好地测试应用程序。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
14.如何使用SpringBoot实现异常处理?
Spring 提供了一种使用 ControllerAdvice
处理异常的非常有用的方法。我们通过实现一个 ControlerAdvice
类,来处理控制器类抛出的所有异常。
15.SpringBoot与SpringCloud区别?
SpringBoot 是快速开发的 Spring 框架,SpringCloud 是完整的微服务框架,SpringCloud 依赖于 SpringBoot。
16.SpringBoot支持什么前端模板?
thymeleaf
、freemarker
和 jsp
,官方不推荐 jsp
会有限制。
17.开启SpringBoot特性有哪几种方式?
继承
spring-boot-starter-parent
项目导入
spring-boot-dependencies
项目依赖
18.SpringBoot中Async异步调用方法?
在 SpringBoot 中使用异步调用是很简单的,只需要在方法上使用 @Async
注解即可实现方法的异步调用。
注意:需要在启动类加入 @EnableAsync
使异步调用 @Async
注解生效。
19.比较一下Spring Security和Shiro各自的优缺点?
由于 SpringBoot 官方提供了大量的非常方便的开箱即用的 Starter,包括 Spring Security 的 Starter,使得在 SpringBoot 中使用 Spring Security 变得更加容易,甚至只需要添加一个依赖就可以保护所有的接口,所以,如果是 SpringBoot 项目,一般选择 Spring Security。当然这只是一个建议的组合,单纯从技术上来说,无论怎么组合,都是没有问题的。Shiro 和 Spring Security 相比,主要有如下一些特点:
Spring Security 是一个重量级的安全管理框架;Shiro 则是一个轻量级的安全管理框架;
Spring Security 概念复杂,配置繁琐;Shiro 概念简单、配置简单;
Spring Security 功能强大;Shiro 功能简单;
20.SpringBoot事务的使用?
SpringBoot 的事务很简单,首先使用注解 @EnableTransactionManagement
开启事务之后,然后在 Service 方法上添加注解 @Transactional
便可。
21.SpringBoot自动配置原理是什么?
SpringBoot 项目的启动注解是:@SpringBootApplication
,其实它就是由下面三个注解组成的:
@Configuration
@ComponentScan
@EnableAutoConfiguration
其中 @EnableAutoConfiguration
是实现自动配置的入口,该注解又通过 @Import
注解导入了AutoConfigurationImportSelector
,在该类中加载 META-INF/spring.factories
的配置信息。然后筛选出以 EnableAutoConfiguration
为 key 的数据,加载到 IOC 容器中,实现自动配置功能。
22.SpringBoot的核心注解是哪个?它主要由哪几个注解组成的?
启动类上面的注解是 @SpringBootApplication
,它也是 SpringBoot 的核心注解,主要组合包含了以下3个注解:
@SpringBootConfiguration
:组合了@Configuration
注解,实现配置文件的功能。@EnableAutoConfiguration
:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:@SpringBootApplication(exclude{DataSourceAutoConfiguration.class})
@ComponentScan
:Spring 组件扫描。
23.spring-boot-starter-parent有什么用?
新创建一个 SpringBoot 项目,默认都是有 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
。
总结就是打包用的。
24.SpringBoot、SpringMVC和Spring有什么区别?
Spring 最重要的特征是依赖注入。所有 SpringModules 不是依赖注入就是 IOC 控制反转。当我们恰当的使用 DI 或者是 IOC 的时候,我们可以开发松耦合应用。松耦合应用的单元测试可以很容易的进行。
SpringMVC 提供了一种分离式的方法来开发 Web 应用。通过运用像
DispatcherServlet
,MoudlAndView
和ViewResolver
等一些简单的概念,开发 Web 应用将会变的非常简单。Spring 和 SpringMVC 的问题在于需要配置大量的参数。
SpringBoot 通过一个自动配置和启动的项来目解决这个问题。为了更快的构建产品就绪应用程序,SpringBoot 提供了一些非功能性特征。
25.SpringBoot中如何解决跨域问题?
跨域可以在前端通过 JSONP 来解决,但是 JSONP 只可以发送 GET 请求,无法发送其他类型的请求,在 RESTful 风格的应用中,就显得非常鸡肋,因此我们推荐在后端通过 (CORS
,Cross-origin resource sharing
) 来解决跨域问题。这种解决方案并非 Spring Boot 特有的,在传统的 SSM 框架中,就可以通过 CORS 来解决跨域问题,只不过之前我们是在 XML 文件中配置 CORS,现在可以通过实现 WebMvcConfigurer
接口然后重写 addCorsMappings
方法解决跨域问题。
26.为什么我们需要spring-boot-maven-plugin?
spring-boot-maven-plugin
提供了一些像 jar 一样打包或者运行应用程序的命令。
spring-boot:run
运行你的 SpringBoot 应用程序。spring-boot:repackage
重新打包你的 jar 包或者是 war 包使其可执行。spring-boot:start
/spring-boot:stop
管理 SpringBoot 应用程序的生命周期(也可以说是为了集成测试)。spring-boot:build-info
生成执行器可以使用的构造信息。
27.SpringBoot配置加载可以通过哪些方式定义?
propertiest文件
命令行参数
YAML文件
系统环境变量
关注公众号:编程火箭车
我们定期发布编程相关的文章、资讯、活动等内容。帮助编程爱好者、初学者或初级程序员快速入门、打牢基础。欢迎大家关注,和我们一起探索编程的精彩世界。
JavaWeb编程面试题——Spring Boot的更多相关文章
- Java 框架面试题-Spring Boot自定义配置与自动配置共存
Spring Boot 是一个快速开发框架,可以简化 Spring 应用程序的开发,其中自定义配置是其中一个非常重要的特性. 在 Spring Boot 中,自定义配置允许开发者以自己的方式来配置应用 ...
- 面试题Spring Boot
Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家. 问题一 Spring Boot.Spring MVC 和 Spring 有什么区别 ...
- Spring Boot2(六):使用Spring Boot整合AOP面向切面编程
一.前言 众所周知,spring最核心的两个功能是aop和ioc,即面向切面和控制反转.本文会讲一讲SpringBoot如何使用AOP实现面向切面的过程原理. 二.何为aop aop全称Aspec ...
- Spring Boot 之订制 logo
Spring Boot 之订制 logo 简介 变量 配置 编程 源码 引申和引用 Spring Boot 启动时默认会显示以下 logo: . ____ _ __ _ _ /\\ / ___'_ _ ...
- Spring Boot 入门之持久层篇(三)
原文地址:Spring Boot 入门之持久层篇(三) 博客地址:http://www.extlight.com 一.前言 上一篇<Spring Boot 入门之 Web 篇(二)>介绍了 ...
- Spring Boot 中如何定制 Banner
本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...
- static关键字有何魔法?竟让Spring Boot搞出那么多静态内部类
生命太短暂,不要去做一些根本没有人想要的东西.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习 ...
- Spring Boot面试题
Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家. 问题一 Spring Boot.Spring MVC 和 Spring 有什么区别 ...
- 吐血整理 20 道 Spring Boot 面试题,我经常拿来面试别人!
面试了一些人,简历上都说自己熟悉 Spring Boot, 或者说正在学习 Spring Boot,一问他们时,都只停留在简单的使用阶段,很多东西都不清楚,也让我对面试者大失所望. 下面,我给大家总结 ...
- 紧急整理了 20 道 Spring Boot 面试题,我经常拿来面试别人!
面试了一些人,简历上都说自己熟悉 Spring Boot, 或者说正在学习 Spring Boot,一问他们时,都只停留在简单的使用阶段,很多东西都不清楚,也让我对面试者大失所望. 下面,我给大家总结 ...
随机推荐
- ArcMap将Python写的代码转为工具箱与自定义工具
本文介绍在ArcMap软件中,通过已有的Python脚本程序,建立新的工具箱并在其中设置自定义工具的方法. 通过本文介绍的操作,我们便可以实现将自己的Python代码封装,并像其他ArcGIS ...
- flutter ui---->一些类QQ的实现
整理一下比较有意思的类QQ的UI实现.Nothing that has meaning is easy. Easy doesn't enter into grown-up life. darken t ...
- pta第一到第三次题目集
(1)前言 pta第一次作业的7-1,7-2,7-4主要熟悉运用了 if-else 的语句使用,以及运用System.out.printf进行格式化输出,7-3九九乘法表主要学会了运用for循环及多重 ...
- Go - 高并发抢到红包实现
// utils.gopackage mainimport ( "fmt" "math/rand" "sync" "time&qu ...
- Host key verification failed的问题解决 (亲测有效)
一.描述 scp拷贝远程内容时失败,出现以下问题: 翻译: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...
- 【原理揭秘】Vite 是怎么兼容老旧浏览器的?你以为仅仅依靠 Babel?
作者:京东科技 孙凯 一.前言 对前端开发者来说,Vite 应该不算陌生了,它是一款基于 nobundle 和 bundleless 思想诞生的前端开发与构建工具,官网对它的概括和期待只有一句话:&q ...
- [Linux]CentOS7搭建/配置:YUM仓库/源[本地源/Web源(Apache HTTP(D))/自建源仓库]
若想搞懂整个配置过程和原理,就按照章节(1 / 2)一步一步地来. 若想直接一步到位,不想花过多时间,尽快配好,就直接看附件章节. 什么是yum源? Yum(全称为 Yellow dog Update ...
- 0001 嵌入式开发带你从小白到大佬系列之——Linux开发环境搭建—Windows-VMware-Ubuntu环境配置
如文章标题,我们安装的Linux开发环境是:Windows-VMware-Ubuntu环境 配置,即在windows系统下安装VMware虚拟机,之后在VMware中配置安装Linux系统的常用发行版 ...
- 用C#发送post请求,实现更改B站直播间标题[简单随笔]
第一次发这样的网络数据包.记录一下. API参考 https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/live/man ...
- [Tensorflow]模型持久化的原理,将CKPT转为pb文件,使用pb模型预测
文章目录 [Tensorflow]模型持久化的原理,将CKPT转为pb文件,使用pb模型预测 一.模型持久化 1.持久化代码实现 convert_variables_to_constants固化模型结 ...