面试题——Spring

1.SpringSpringBufferSpringBuilder的区别?

        值可变性

      Spring中的值是final修饰的,不可变,当试图修改这个不可变值时等于创建一个新的对象。

      SpringBufferSpringBuilder则是可变的

        ②线程安全性

      Spring:  值不可改  (安全)

      SpringBuffer:  自带Synchernized锁  (安全)

      SpringBuilder:  值可改,无锁  (不安全)

        ③性能

      Spring:  每次修改创建新对象  (效率最慢)

      SpringBuffer:  值可改但自带锁  (效率高于Spring但低于SpringBuilder)

      SpringBuilder:  值可改,无锁  (效率最快)


2.Spring Boot常用注解

@SpringBootApplication: SpringBootConfiguration配置类、componentScan扫描包、EnableAutoConfiguration导入其他配置类

@RestController: @ResponseBody和@Controller的作用。

@Component,@Service,@Controller,@Repository: 将类注入容器。

@GetMapping、@PostMapping、@PutMapping、@DeleteMapping: 映射请求,只能接收的对应的请求。

@AutoWired: 按照类型匹配注入。

@Qualifier: 和AutoWired联合使用,在按照类型匹配的基础上,在按照名称匹配。

@Resource: 默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果按照name找不到,就按照类型去找.

@Bean: 用于将方法返回值对象放入容器。

@RequestParam: 获取查询参数。即url?name=这种形式

@RequestBody: 该注解用于获取请求体数据(body),get没有请求体,故而一般用于post请求。@PathVariable: 获取路径参数。即url/{id}这种形式。

@Value: 将外部的值动态注入到 Bean 中。

    @Value(“${}”):可以获取配置文件的值。

    @Value(“#{}”):表示SpEl(Spring Expression Language是Spring表达式语言,可以在运行时查询和操作数据。)表达式通常用来获取 bean 的属性,或者调用 bean 的某个方法


3.Spring AOP IOC 的理解?

AOP(一种编程范式)

重用代码: 允许在其他类或方法中共享代码

简化代码: 将横切关注点与业务逻辑分离.(利于业务代码的理解和维护)

封装切面逻辑: 讲切面逻辑封装到一个模块中,并应用于整个应用程序.(利于维护和测试)

提高性能: AOP的好处就是提高系统的整体性能

松耦合: 让组件之间的依赖更松散.(利于代码复用,也利于单元测试和集中测试)

IOC(一种设计模式)

Bean容器     依赖注入(构造器注入、Setter注入、属性注入等)    控制反转     松耦合


4.Spring IOC容器构建流程?

1.配置元数据:根据XML或注解等方式配置IOC容器所需的元数据;例如Bean定义,依赖关系等

2.加载配置:使用BeanFactory等Spring接口,读取配置元数据

3.创建Bean实例:通过元数据的Bean定义等,用反射机制实例化创建Bean实例并储存IOC中

4.处理依赖关系:根据依赖关系,自动注入所需依赖

5.初始化Bean对象:调用Bean的初始化方法进行初始化,如init()方法

6.提供Bean:将初始化的Bean储存IOC容器,提供访问接口供程序使用

7.销毁Bean:IOC容器关闭时,调用所有Bean的销毁方法,如destory()方法


5.Spring框架哪些地方使用了反射?

 1.依赖注入:  Spring基于反射机制获取对象并进行属性注入

 2.AOP:  Spring的JDK动态代理或者CGLIB字节码增强都是用的被代理对象方法的反射调用

 3.MVC框架:  Spring用反射机制来调用控制器方法

 4.数据库访问:  Spring是利用反射来进行数据库的访问

 5.容器管理:  Spring用反射机制来进行实例化和属性注入


6.Spring MVC框架 ?

 核心组件

DispatcherServlet 核心的中央处理器,负责接收请求、分发,并给予客户端响应。

HandlerMapping 处理器映射器,根据 uri 去匹配查找能处理的 Handler ,并会将请求涉及到的拦截器和 Handler 一起封装。

HandlerAdapter 处理器适配器,根据 HandlerMapping 找到的 Handler ,适配执行对应的 Handler

Handler 请求处理器,处理实际请求的处理器。

ViewResolver 视图解析器,根据 Handler 返回的逻辑视图/视图,解析并渲染真正的视图,并传递给 DispatcherServlet 响应客户端


7.Spring中的Bean什么时候被实例化?

 1. 单例作用域(Singleton): Spring容器启动时,立刻实例化单例作用域的Bean放置容器中,以便随时取用

 2. 原型作用域(Prototype):请求时,才会实例化原型作用域的Bean并返回

 3. 其他作用域:如 Web 作用域和 Session 作用域等,它们的实例化时间依赖于具体的使用场景。


 ★8.Spring 注册Bean方式有哪些?

 1. XML配置:使用Java配置类来注册Bean,通过在Java配置类中用@Configuration注解来声明配置类,并在配置类中使用@Bean注解来定义Bean的属性和实例化方式。

 2. 基于注解:使用注解快捷方便的注册Bean.例如@Service @Contorller @Repository等。

 3. 手动注册:用ApplicationContext接口提供的方法,如registerBeanDefinition()或者registerSingleton()来注册Bean。


 ★9.Spring 拦截器执行流程


  ★10.BeanFactoryFactoryBean的区别:

BeanFactory:    是Bean工厂,用于生产和管理普通的Bean对象,负责创建和提供Bean实例

FactoryBean:    只是一个特殊的接口,能自定义创建Bean对象,并控制这个Bean的创建过程


  ★11.Spring CloudDubbo区别:

性能:dubbo,RPC (TCP)    spring cloud (http)

跨语言: dubbo 只能在JAVA领域 spring cloud 可以跨多语言(C,JAVA,Python等)

序列化dubbo dubbo协议    spring cloud   json

注册中心: dubbo zookepper   spring cloud nacos


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/349695.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win10更新wsl.exe闪退,wsl命令行打不开

之前wsl可以用,更新后用不了,解决方法参考:win11 自带的wsl打开异常 - Microsoft Q&A 在“控制面板”->“程序和功能”->“打开或关闭 Windows 功能”-> 选中“适用于 Linux 的 Windows 子系统”,或使用 PowerShell…

笔记100:使用 OSQP-Eigen 对 MPC 进行求解的方法与代码

1. 前言: 我们在对系统进行建模的时候,为了减少计算量,一般都将系统简化为线性的,系统如果有约束,也是将约束简化为线性的; 因此本篇博客只针对两种常见系统模型的 MPC 问题进行求解: 线性系统…

席卷的B站《植物大战僵尸杂交版》V2.0.88整合包,PC和手机可用,含通关存档和视频教程!

今天给大家安利一款席卷B站,火爆全网的游戏——《植物大战僵尸杂交版》2.0.88整合包。 这个是网络上现存植物大战僵尸杂交版的最全整合,包含了修改工具,超强通关存档和高清工具。工具包有安装视频教程,支持手机版和pc多端使用&am…

【讯为Linux驱动开发】7.信号量semaphore

【信号量】 信号量的本质是一个全局变量,值为可以共享资源的最大数 比如:我只想同时让一个人访问共享资源,那么信号量的值为1。 A访问时,信号量减一,此时B想访问时,看到信号量为0,就休眠挂起…

windows11 建立批处理bat文件来删除指定目录下的所有隐藏的文件。

今天在导入项目的时候发现之前项目中的文件夹中有很多隐藏的临时文件,这个文件应该是版本控制产生的,导致导入后文件夹上有X,然后里面文件是一个没有错。 我们来建立一个bat来,进行批量删除隐藏文件就可以了: echo o…

Python基于 Jupyter Notebook 的图形可视化工具库之ipysigma使用详解

概要 在数据科学和网络分析中,图(Graph)结构是一种常用的数据结构,用于表示实体及其关系。为了方便图数据的可视化和交互操作,ipysigma 提供了一个基于 Jupyter Notebook 的图形可视化工具。通过 ipysigma,用户可以在 Jupyter Notebook 中创建、编辑和展示图结构,方便进…

从零开始利用MATLAB进行FPGA设计(七)固化程序

FPGA开发板:AX7020;Xilinx 公司的 Zynq7000 系列的芯片XC7Z020-2CLG400I,400引脚 FBGA 封装。 HARDWARE PLATFORM在2019以后的vivado中已经没有了。本期实际上已经与MATLAB无关,主要介绍通过VITIS等方法进行程序固化。 目录 ZY…

10大wordpress外贸主题

手动工具wordpress外贸模板 适合生产套筒扳、管钳、工具箱、斧子、锤子、防爆工具、螺丝刀、扳手等手动工具的厂家。 https://www.jianzhanpress.com/?p4806 Invisible Trade WP外贸网站模板 WordPress Invisible Trade外贸网站模板,做进出口贸易公司官网的word…

超级马里奥-小游戏

学习目标: 练习Java面向对象的编程思想; 巩固Java语言基础,数据类型、集合、数组等; 深刻理解Java的三大特性,封装、继承、多态; 效果展示:

使用CSS、JavaScript、jQuery三种方式实现手风琴效果

手风琴效果有不少,王者荣耀官网(源网址 https://pvp.qq.com/raiders/ )有一处周免英雄,使用的就是手风琴效果,如图所示。 我试着用css、js、jQuery三种方式实现了这种效果,最终效果差不多,美中不…

面试官:字节流可以处理一切文件为什么还需要字符流呢?

一、写在开头 在计算机领域中百分之九十以上的程序拥有着和外部设备交互的功能,这就是我们常说的IO(Input/Output:输入/输出),所谓输入就是外部数据导入计算机内存中的过程,输出则是将内存或者说程序中的数据导入到外部存储中,如数据库、文件以及其他本地磁盘等。 二、什…

python脚本打包为exe并在服务器上设置定时执行

python脚本打包为exe并在服务器上设置定时执行 1. Python脚本打包2. 将打包好的Python脚本放入服务器3. 在服务器上设置其定时执行 1. Python脚本打包 首先,下载pyinstaller 键盘winR打开终端,输入命令:pip install pyinstaller,…

LeetCode | 58.最后一个单词的长度

这道题要求最后一个单词的长度,第一个想到的就是反向遍历字符串,寻找最后一个单词并计算其长度。由于尾部可能会有’ ,所以我们从后往前遍历字符串,找到第一个非空格的字符,然后记录下到下一个空格前依次有多少个字母即…

Elasticsearch 认证模拟题 - 13

一、题目 集群中有索引 task3,用 oa、OA、Oa、oA 查询结构是 4 条,使用 dingding 的查询结果是 1 条。通过 reindex 索引 task3 为 task3_new,能够使 task3_new 满足以下查询条件。 使用 oa、OA、Oa、oA、0A、dingding 查询都能够返回 6 条…

【NUJ PA2】Read a Makefile

这里是NJU的PA2.2里面要求读懂的Makefile,是abstract-machine的。这里会放一些与读懂这个Makefile有关的知识。 下面是用ChatGPT解释的代码。只做大致的了解,写Makefile的时候还是要具体去看官方手册。 官方手册:make.pdf (gnu.org) # Makef…

2024 年勒索软件将比以往更加残酷

如今,世界各地的人们去学校、去医院或去药店时,都会被告知:“抱歉,我们的计算机系统瘫痪了。” 罪魁祸首往往是在世界另一端活动的网络犯罪团伙,他们会要求人们支付系统访问费用或安全归还被盗数据。 尽管警方加大打…

机器学习笔记:focal loss

1 介绍 Focal Loss 是一种在类别不平衡的情况下改善模型性能的损失函数最初在 2017 年的论文《Focal Loss for Dense Object Detection》中提出这种损失函数主要用于解决在有挑战性的对象检测任务中,易分类的负样本占据主导地位的问题,从而导致模型难以…

vector模拟实现

目录 vector介绍 vector示意图 关于vector扩容的问题 vector框架 构造函数 析构函数 vector有关空间容量函数 insert和erase pop_back和push_back 其它构造函数 拷贝构造 迭代器区间构造 运算符重载 关于迭代器失效问题【重点】 有关insert发生迭代器失效 有关…

Linux 基本指令2

cp 指令 cp[选项]源文件 目标文件 将源文件的内容复制到目标文件中,源文件可以有多个,最后一个文件为目标文件,目标文件也可以是一段路径,若目的地不是一个目录的话会拷贝失败。若没有路径上的目录则会新建一个,若源是…

动手学深度学习33 单机多卡并行

单机多卡并行 更多的芯片 https://courses.d2l.ai/zh-v2/assets/pdfs/part-2_2.pdf 多GPU训练 https://courses.d2l.ai/zh-v2/assets/pdfs/part-2_3.pdf 当transformer模型很大,有100GB的时候只能用模型并行。 数据并行,拿的参数是完整的&#xff1f…