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,一问他们时,都只停留在简单的使用阶段,很多东西都不清楚,也让我对面试者大失所望. 下面,我给大家总结 ...
随机推荐
- Flink 1.0 ProgramInvocationException: Job failed ConnectException: 拒绝连接 (Connection refused)
[问题描述]:[root@hadoop1 flink-1.10.1]# bin/flink run examples/streaming/SocketWindowWordCount.jar --po ...
- C#中的语句
寄语 接下来几篇文章,将带领大家一起简单回顾下C#中常规的语法,也是平常我们在编码过程中都使用的. 今天来介绍下C#中的语句. 一般科班出身的程序猿们大家第一个学习语言基本都是C语言,C语言里面在刚开 ...
- 修改host文件
host文件路径 Windows 系统:C:\Windows\System32\drivers\etc\hosts Linux 系统:/etc/hosts Mac(苹果电脑)系统:/etc/hosts ...
- 创建镜像发布到镜像仓库【不依赖docker环境】
image 工具背景 如今,docker镜像常用于工具的分发,demo的演示,第一步就是得创建docker镜像.一般入门都会安装docker,然后用dockerFile来创建镜像,除此以外你还想过有更 ...
- react中的虚拟DOM,jsx,diff算法。让代码更高效
在react中当你的状态发生改变时,并不是所有组件的内容销毁再重建,能复用的就复用 react 组件其实 就是按照层级划分的 找到两棵任意的树之间最小的修改是一个复杂度为 O(n^3) 的问题. 你可 ...
- 必知必会的 WebSocket 协议
文章介绍 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它的出现使客户端和服务器之间的数据交换变得更加简单.WebSocket 通常被应用在实时性要求较高的场景,例如赛事数据. ...
- 我和 chatGPT 对线操作系统!
大家都知道现在 chatGPT 已经在多个领域展现了及其强大的工地,比如文案策划,毕业论文方便,甚至很多程序员都直接让 chatGPT 帮忙写代码了,在一些模板化的代码方面,chatGPT 更展示了优 ...
- 关于java.lang.Object类、equals()、toString()的使用、以及方法得重载和重写得一些笔记
java.lang.Object类 * 1.Object类是所有Java类的根父类; * 2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 * ...
- LeeCode 319周赛复盘
T1: 温度转换 思路:模拟 public double[] convertTemperature(double celsius) { return new double[]{celsius + 27 ...
- Ubuntu20.04 Docker搭建远程xfce桌面以及ssh教程
简介:本文主要介绍ubuntu20.04容器中搭建xfce远程桌面.C++.Go环境.容器内docker操作配置. 一.创建容器1.创建容器 docker pull ubuntu:20.04docke ...