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,一问他们时,都只停留在简单的使用阶段,很多东西都不清楚,也让我对面试者大失所望. 下面,我给大家总结 ...
随机推荐
- 关于MySQL建立库表时大写自动转换为小写的解决方案
mysql 5.6以上windows对大小写敏感要在my.ini中的[mysqld]下面设置lower_case_table_names = 2 网上有的要改成0 亲测报错 [○・`Д´・ ○]
- 面试突击:MVCC 和间隙锁有什么区别?
MVCC 和间隙锁是两种完全不同的机制,但它们的目的都是相同的,都是用来保证数据库并发访问的,我们先来看二者的定义. MVCC 定义 MVCC 是多版本并发控制(Multi-Version Concu ...
- 使用golang+antlr4构建一个自己的语言解析器(二)
Antlr4文件解析流程 该图展示了一个语言应用程序中的基本流动过程 输入一个字符流,首先经过词法分析,获取各个Token 然后经过语法分析,组成语法分析树 Antlr4语法书写规范 语法关键字和使用 ...
- Ceres 自动求导解析-从原理到实践
Ceres 自动求导解析-从原理到实践 目录 Ceres 自动求导解析-从原理到实践 1.0 前言 2.0 Ceres求导简介 3.0 Ceres 自动求导原理 3.1 官方解释 3.2 自我理解 4 ...
- jmeter分布式测试安装部署步骤
一.下载linux版本的jdk ----注:下载的jdk和jmeter要与window的jdk和jmeter一致 下载地址:https://www.oracle.com/java/technologi ...
- DG修复:清理归档配置归档清理脚本
问题描述:DG同步断了十天,发现FRA归档盘符满了.需要清理下,重新增量恢复DG Error 12528 received logging on to the standby FAL[client, ...
- flume基本安装与使用
解压flume包 到/usr/local/src/目录下 [root@hadoopha01 pack]# tar -zxvf apache-flume-1.7.0-bin.tar.gz -C /usr ...
- Springboot整合Flowable6.x导出bpmn20
项目源码仓库 BPMN2.0(Business Process Model and Notation)是一套业务流程模型与符号建模标准,以XML为载体,以符号可视化业务,支持精准的执行语义来描述元素的 ...
- 31-dll
webpack.dll.js /** * 使用dll技术,对某些库(第三方库:jquery.react.vue...)进行单独打包 * 当你运行 webpack 时,默认查找 webpack.conf ...
- C# List转SqlServer、MySql中in字符串
var oneList = new List<string> { "1", "2", "3" }; var oneString ...