7、SpringBoot高频面试题

这篇具有很好参考价值的文章主要介绍了7、SpringBoot高频面试题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、项目中为什么选择SpringBoot

SpringBoot简化了Spring,可以快速搭建企业级项目,而且开发起来效率也会更高,它的主要优点如下:

  1. 版本锁定:SpringBoot在父工程中进行了大量常见依赖的版本锁定,省去了我们查找依赖版本和解决版本冲突的麻烦
  2. 起步依赖:SpringBoot以功能化的方式将需要的依赖进行组装,并且允许程序员以starter的方式进行引入
  3. 默认配置:SpringBoot实现了大量依赖框架的默认配置项,程序员无须再进行自己配置
  4. 内置Tomcat:SpringBoot内置了一个tomcat,使用它开发的程序无需再进行tomcat部署,可直接运行

2、SpringBoot的自动装配原理

Springboot自动装配主要是基于注解编程和约定优于配置的思想来进行设计的

自动装配就是自动地把其他组件中的Bean装载到IOC容器中,不需要开发人员再去配置文件中添加大量的配置

我们只需要在SpringBoot的启动类上添加一个@SpringBootApplication的注解,就可以开启自动装配

SpringBootApplication底层最重要的一部分是@EnableAutoConfiguration这个注解来实现的,它作用是:

  1. 读取所有jar包中两个指定配置文件中的所有自动配置类(xxxxAutoConfiguration)
  2. 这些值必须声明为Spring的配置类,也就是在类中需要向Spring容器放入对象
  3. 为了防止非当前所需的组件进入到容器,配置类中需要使用@Conditional注解来声明配置成立的必要条件

3、SpringBoot的核心注解是哪个

SpringBoot的核心注解在启动类上,叫@SpringBootApplication,主要组合包含了以下3个注解:

  1. @SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能
  2. @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项
  3. @ComponentScan:Spring组件扫描,默认会扫描启动类所在的包

4、SpringBoot中的starter是干什么的

当项目足够复杂时,因为涉及的组件太多了,就需要引入很多的依赖,此时管理依赖就边的很麻烦

此时SpringBoot的starter就派上用场了,每个starter都可以为我们提供某个服务场景所需要的一系列依赖

在导入starter之后,SpringBoot主要帮我们完成了两件事情:

  1. 相关组件的自动导入
  2. 相关组件的自动配置

5、SpringBoot可以有哪些方式加载配置

SpringBoot支持很多种方式加载配置,常见有

  1. 配置文件,直接在项目中提供SpringBoot支持的配置文件,比如properties、yaml 、yml

  2. 系统环境变量,SpringBoot是可以读取系统环境变量中的配置信息的,但不推荐这么做

  3. 命令行参数,SpringBoot在项目启动的时候运行通过命令行直接传递参数,一般用于临时修改配置的情况

6、bootstrap.yml和application.yml有何区别

这是SpringBoot支持的两个核心配置文件,区别点在于

  1. boostrap比applicaton优先加载,在应用程序上下文的引导阶段生效,且里面的属性不能被覆盖

    一般来说我们在SpringCloud Config或者Nacos中会用到它

  2. application用于SpringBoot项目的自动化配置,一般来说我们会将自己项目的业务配置项写在这里面

7、SpringBoot读取配置的方式有几种

SpringBoot常见的读取配置信息的方式有两种:

  1. 使用@Value配合EL表达式(@Value(“${name}”))注解直接注入对应的值
  2. 使用@ConfigurationProperties注解把对应的值绑定到一个配置对象,然后将配置对象注入到需要的地方

推荐使用使用第二种方式,在配置比较多的情况下,操作简单,可读性好

8、SpringBoot项目如何热部署

Spring Boot有一个开发工具(DevTools)模块,通过它可以实现SpringBoot项目的热部署

也就是开发人员将文件更改后,它会自动部署到服务器并自动重启服务器。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
</dependency>

9、SpringBoot项目如何实现方法的异步调用

异步调用指的是a方法在调用b方法的时候,无需等待b方法执行完毕,就可以继续向下执行

一般用在a方法无需使用b方法返回结果的场景下,可以在一定程度上提高运行效率

在SpringBoot中使用异步调用是很简单的,只需要做两个操作就可以了

  1. 在启动类上添加@EnableAsync注解,开启异步调用支持
  2. 在被调用的方法上添加@Async注解
controller-a(){
    代码1 
    service-a()
    代码3 
}

@Async
service-a(){}

10、SpringBoot中如何实现定时任务

在SpringBoot中使用定时任务主要有两种方式,一个就是使用SpringTask,另一个则是使用第三方框架Quartz

SpringTask主要是通过@Scheduled注解来实现定时任务触发的,格式如下

@Scheduled(fixedRate = 5000)
public void printTime() {
    System.out.println(new Date().toLocaleString());
}

主要属性如下:

  • fixedRate:按一定的频率执行任务,参数类型为long,单位 ms
  • fixedDelay:上一次任务执行完后多久再执行,参数类型为long,单位 ms
  • initialDelay:延迟多久再第一次执行任务,参数类型为 long,单位 ms
  • cron:使用cron表达式指定任务在特定时间执行

11、SpringBoot中如何解决跨域问题

跨域是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制

当浏览器从一个域名的网页去请求另一个域名的资源时,出现域名、端口、协议任一不同,都属于跨域
7、SpringBoot高频面试题,Java面试题,java,面试,spring,spring boot

SpringBoot解决跨域很简单,执行添加一个配置类实现WebMvcConfigurer接口然后重写addCorsMappings方法即可

@Configuration
public class CorsConfig implements WebMvcConfigurer {
	@Override
	public void addCorsMappings(CorsRegistry registry) {
		registry.addMapping("/**")
		.allowedOrigins("*")//允许跨域访问的路径
		.allowCredentials(true)
		.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")//运行跨越的请求方式
		.maxAge(3600);
	}
}

12、如何理解拦截器

拦截器是Spring提供的一种拦截机制,目的是实现对指定请求路径进行拦截,然后做成指定的处理

自定义一个拦截器需要实现HandlerInterceptor,并重写接口中定义的3个方法

  1. preHandle: 这个方法在Controller处理请求之前被调用,通过方法的返回值可以确定是否放行请求
  2. postHandle:这个方法在Controller处理请求之后被调用
  3. afterCompletion:这个方法将在整个请求结束之后被调用,此方法主要用于进行资源清理

7、SpringBoot高频面试题,Java面试题,java,面试,spring,spring boot

13、拦截器和过滤器的区别是什么

拦截器和过滤器都可以实现请求的拦截处理,不同点有下面几个:文章来源地址https://www.toymoban.com/news/detail-833928.html

  1. 技术栈所属不同:过滤器属于JavaWeb技术,依赖Servlet容器;而拦截器是属于Spring的技术
  2. 实现原理不同:拦截器是基于Java的反射机制,而过滤器是基于函数回调
  3. 拦截范围不同:过滤器可以拦截所有请求,而拦截器主要是针对发往controller请求
  4. 拦截位置不同:过滤器在前端控制器前拦截行,而拦截器在前端控制器后拦截

到了这里,关于7、SpringBoot高频面试题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA面试题分享五百一十一:Spring Boot基于WebUploader实现超大文件上传和断点续传

    目录 前言 目标 实现思路 大文件分片 合并分片 断点续传 代码实现 1、webuploader组件中,分片上传怎么开启? 2、webuploader组件中,文件的md5值如何计算? 3、webuploader组件中,分片文件的md5值如何计算? 4、webuploader组件中,分片上传的的请求在哪里触发? 5、前端、后端如何校

    2024年02月19日
    浏览(61)
  • JVM篇--Java内存区域高频面试题

    首先我们要知道java堆空间的产生过程: 即当通过java命令启动java进程的时候,就会为它分配内存,而分配内存的一部分就会用于创建堆空间,而当程序中创建对象的时候 就会从堆空间来分配内存,所以堆空间存放的主要是对象和数组; 而GC 其实说白了就是java虚拟机回收对象

    2024年02月01日
    浏览(52)
  • Java开发之框架(spring、springmvc、springboot、mybatis)【面试篇 完结版】

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本文主要记录spring的单例bean、切面编程AOP、spring事务、循环依赖、常见注解等 提示:以下是本篇文章正文内容,下面案例可供参考 ① 问题引入 Spring框架中的bean是单例的 singleton :bean在每个Spring IOC容

    2024年02月07日
    浏览(54)
  • 10道Zookeeper高频面试题,你顶得住吗?Java面试

    ZooKeeper是一个开源的分布式协调服务,它提供了一个简单而健壮的分布式应用程序协调解决方案。其主要设计目标是通过提供高性能、可靠性、且具备高度可扩展性的服务,简化分布式系统中的协调和管理任务。 ZooKeeper的主要特性包括: 协调服务: ZooKeeper提供了分布式环境

    2024年04月28日
    浏览(39)
  • 2023 最新「阿里」Java 高级工程师面试高频题

    7月份快要过去了,也意味着金九银十快到了,不知道大家有没有发现今年的面试比之前的都难;去年因为疫情的原因压抑住程序员跳槽的想法,再加上现在 IT 行业内卷越来越严重,这两点原因导致今年的招聘市场非常难受; 最近群里很多小伙伴都在问,如何抓住银四的尾巴

    2024年02月13日
    浏览(43)
  • 大厂面试题一文讲通jvm,Java虚拟机高频面试题

    薪资范围:6-16K 一个类完整的生命周期,会经历五个阶段,分别为: 加载、连接、初始化、使用 、和 卸载 。其中的连接又分为 验证、准备 和 解析 三个步骤。如下图所示 加载(Loading) 简单一句话概括,类的加载阶段就是: 找到需要加载的类并把类的信息加载到jvm的方法

    2024年01月18日
    浏览(46)
  • 2023Java高频必背并发编程面试题02

    CAS 算法是 基于值来做⽐较的 ,如果当前有两个线程,⼀个线程将变量值从 A 改为 B ,再由 B 改回为 A,当前线程开始执⾏ CAS 算法时,就很容易认为值没有变化,误认为读取数据到执⾏ CAS 算法的期间,没有线程修改过数据。 juc 包提供了⼀个 AtomicStampedReference,即 在原始的

    2023年04月09日
    浏览(62)
  • 【Java程序员面试专栏 数据结构】四 高频面试算法题:哈希表

    一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,一个O(1)查找的利器哈希表,所以放到一篇Blog中集中练习 题目 解题思路 时间 空间 两数之和 辅助哈希 使用map存储出现过的值,key为值大小,v

    2024年02月22日
    浏览(59)
  • Java程序员必备的面试技巧与高频面试题,内有面经

    作为一名Java程序员,面对职业生涯中不可避免的面试环节时,准备全面且具有针对性的面试技巧是非常关键的。 以下是根据我的面试百场总结的一些建议和技巧,我将从“面试经历”和“面试技巧”两个方面来帮助你更好地准备Java技术面试。 文章目录 Q1 - 能否自我介绍一下

    2024年02月02日
    浏览(67)
  • 【送书福利-第三十期】《Java面试八股文:高频面试题与求职攻略一本通》

    本书将碎片化的Java面试八股文知识点系统化、结构化,精选了近200道经典高频的八股文面试题,整理了近20个经典高频的实战场景解决方案,准备了10多个面试简历实操技巧。每道面试题都标注了难度指数、考查频率、开发年限和匹配岗位等,并配置了二维码,扫码即可同步

    2024年02月03日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包