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,一问他们时,都只停留在简单的使用阶段,很多东西都不清楚,也让我对面试者大失所望. 下面,我给大家总结 ...
随机推荐
- .Net 6.0定义全局当前身份缓存对象
背景: 当前身份缓存对象顾名思义就是:当前登录的用户身份对象,那它解决了什么问题呢?其实在我们日常开发过程中经常能用的到几乎是必备的,就比如我给某个表插入数据时需要创建人或者一些权限的访问,都得用到当 ...
- vue中实用小技巧,长期更新
1.在vue 中使用webpack require.context工程化配置组件,不用一个一个import注册了 main.js中 import Vue from 'vue'//使用lodsh插件im ...
- 重磅!Apache Hudi联合传智教育推出免费中文视频教程
基础介绍 Apache Hudi(简称:Hudi)使得您能在hadoop兼容的存储之上存储大量数据,同时它还提供两种原语,使得除了经典的批处理之外,还可以在数据湖上进行流处理.这两种原语分别是: Up ...
- How to implement UDP protocal
Server implementation Open a socket on the server that listens to the UDP requests. (I've chosen 888 ...
- 创建用户认证授权的 kubeconfig 文件
创建用户认证授权的 kubeconfig 文件 当我们安装好集群后,如果想要把 kubectl 命令交给用户使用,就不得不对用户的身份进行认证和对其权限做出限制. 下面以创建一个 cby 用户并将其绑 ...
- c#快速入门~在java基础上,知道C#和JAVA 的不同即可
观看下文前提:如果你的主语言是java,现在想再学一门新语言C#,下文是在java基础上,对比和java的不同,快速上手C# C# 学习参考文档和开发工具 微软c#官方文档:https://learn ...
- 逍遥自在学C语言 位运算符 "|" 的5种高级用法
前言 在上一篇文章中,我们介绍了&运算符的高级用法,本篇文章,我们将介绍| 运算符的一些高级用法. 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位上场的是 ...
- 添加索引后SQL消耗量在执行计划中的变化
不同索引的执行效率也是不一样的,下面比较三条SQL语句在正常查询与建立普通索引与位图索引后的CPU消耗量的变化,目的为了是加强对索引的理解与运用 实验步骤:1.创建有特点的大数据表.为了保证索引产生前 ...
- 生成df的几种方法
法一: pd.DataFrame( [ (第一行),(第二行),(第三行)] ) df = pd.DataFrame([('bird', 389.0), ('bird', 24.0), ('mamma ...
- scikit-learn 中 Boston Housing 数据集问题解决方案
scikit-learn 中 Boston Housing 数据集问题解决方案 在部分旧教程或教材中是 sklearn,现在[2023]已经变更为 scikit-learn 作用:开源机器学习库,支持 ...