Spring面试题2

1、compareable和compactor区别

定义与包位置:Comparable是一个接口,位于java.lang包,需要类去实现接口;而Compactor是一个外部比较器,位于java.util包

用法:Comparable只需要实现int compareTo(T o) 方法,比较当前对象与参数对象的顺序

Compactor实现int compare(T o1, T o2) 方法,比较两个外部对象的顺序

排序逻辑:Comparable由类自身定义唯一排序规则,Compactor可以自定义多种排序规则

2、SpringIOC,什么是控制反转,什么是依赖注入?

IOC其实就是控制反转,依赖注入(DI)是SpringIOC的一种实现方式

IOC(Inversion of Control):IOC指将对象的创建和管理权交给Spring容器(如ApplicationContext)统一控制。传统开发中,对象通过new主动创建依赖,而IoC模式下,容器负责对象的生命周期和依赖关系

DI(Dependency Injection):是IoC的具体实现方式,指容器在运行时动态将依赖对象注入到目标组件中

依赖注入的两种实现方式

  • XML配置:通过<bean>标签定义对象及依赖关系。
  • 注解:如@Autowired(按类型注入)、@Resource(按名称注入)、@Component等,简化配置

依赖注入的三种方式

构造方法注入

Setter方法注入

属性注入:@Autowired,@Resources

spring容器的核心作用

创建和管理bean、依赖注入、管理bean生命周期

SpringAOP是什么?特点是什么

Spring AOP(面向切面编程)是 Spring 框架的核心模块之一,通过动态代理技术将横切关注点(如日志、事务、权限等)与核心业务逻辑解耦

核心是:

切面(Aspect)
封装横切逻辑的模块化单元,通过@Aspect注解定义。例如日志切面类中可包含记录方法执行时间的代码

连接点(JoinPoint)
程序执行过程中的可插入点,如方法调用、异常抛出等。Spring AOP仅支持方法级别的连接点

通知(Advice)

通知类型:

  • 前置通知(@Before):在方法执行前触发(如权限校验)。
  • 后置通知(@After):在方法执行后触发(如日志记录)。
  • 环绕通知(@Around):包裹目标方法,可控制执行流程(如事务管理)。
  • 异常通知(@AfterThrowing):在方法抛出异常时触发(如错误处理)。
  • 返回通知(@AfterReturning):在方法正常返回后触发

优点:与业务代码解耦,提高代码复用性,代码灵活性提高

代理

静态代理

动态代理

JDK动态代理:需要实现至少一个接口,这个接口可以是任意接口,spring会扫描是否使用了接口,如果有接口就用JDK动态代理,运行时动态生成接口实现类,用代理去掉用实现类的方法

CGLIB动态代理:是一个外部的类库,支持去代理未实现接口的普通类

JDK动态代理与CGLIB在Spring中互补使用,前者适用于接口代理,后者覆盖无接口场景

3、BIO/NIO/AIO区别

同步:同步就是发起一个调用后,被调用者未处理完请求之前,调用者不返回

异步:异步就是发起一个调用后,但是被调用者并没有返回结果,此时调用者可以处理其他请求。

阻塞:阻塞就是发起一个请求,调用者一直等待请求结果返回,也就是当前线程会被挂起,无法从事其他任务,只有当条件就绪才能继续。

非阻塞:非阻塞就是发起一个请求,调用者不用一直等着结果返回,可以先去干其他事情

  • BIO同步阻塞I/O模型,它使用一个线程来处理一个请求,如果这个请求没有被处理完,这个线程就会一直等待,直到请求处理完成。

  • NIO同步非阻塞I/O模型,它使用单个线程来处理多个请求,这些请求可以同时被这个线程处理,它通过轮询的方式来处理I/O请求,如果有I/O请求就处理,没有就继续轮询。这种模型适用于连接数较多但是连接时间短的情况

  • AIO异步非阻塞I/O模型,这种模型不需要为每个请求创建一个线程,由操作系统内部的线程来处理I/O请求,同时它也具有非阻塞的特性,I/O请求不会一直等待,而是异步执行。这种模型适用于连接数很多的情况

举个生活中简单的例子,你妈妈让你烧水,小时候你比较笨啊,在那里傻等着水开(同步阻塞)。等你稍微再长大一点,你知道每次烧水的空隙可以去干点其他事,然后只需要时不时来看看水开了没有(同步非阻塞)。后来,你们家用上了水开了会发出声音的壶,这样你就只需要听到响声后就知道水开了,在这期间你可以随便干自己的事情,壶响了你需要去倒水了(异步非阻塞)。

4、final 在 Java 中有什么作用?

  • final 修饰的类叫最终类,该类不能被继承。

  • final 修饰的方法不能被重写。

  • final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。

5、Java中的容器都有哪些?

6、http和https区别

传输形式:http是明文传输的,https加密传输,采用对称加密和非对称加密结合的方式

传输协议:http基于TCP协议,而https基于SSL/TLS 协议

端口不同:http端口为80,https端口为443

证书:https需要证书认证,而http不需要证书

7、Array 和 ArrayList 有何区别

  • Array 可以存储基本数据类型和对象,ArrayList 只能存储对象

  • Array 是指定固定大小的,而 ArrayList 大小是自动扩展的。

  • Array 内置方法没有 ArrayList 多,比如 addAll、removeAll、iteration 等方法只有 ArrayList 有。

8、哪里用到了对称加密和非对称加密?

对称加密:JWT生成token

非对称:https,阿里云效代码仓库

9、spring框架哪里用到了反射?

1、bean的实例化:Spring通过反射动态创建对象实例,无需硬编码new操作

2、依赖注入:通过反射调用setter方法或直接修改字段(如Field.set() ),将依赖对象注入目标Bean

3、Spring AOP利用反射生成代理对象

4、Spring MVC处理请求:Spring MVC通过反射解析@RequestMapping标记的方法,动态匹配请求参数并执行目标方法

5、数据库访问:Spring JDBC通过反射将ResultSet数据映射到实体类字段

10、

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

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

相关文章

react(9)-redux

使用CRA快速创建react项目 npx create-react-app react-redux 安装配套工具 npm i reduxjs/toolkit react-redux 启动项目 在创建项目时候会出现一个问题 You are running create-react-app 5.0.0, which is behind the latest release (5.0.1). We no longer support…

HTTP SSE 实现

参考&#xff1a; SSE协议 SSE技术详解&#xff1a;使用 HTTP 做服务端数据推送应用的技术 一句概扩 SSE可理解为&#xff1a;服务端和客户端建立连接之后双方均保持连接&#xff0c;但仅支持服务端向客户端推送数据。推送完毕之后关闭连接&#xff0c;无状态行。 下面是基于…

STL —— 洛谷字符串(string库)入门题(蓝桥杯题目训练)(二)

目录 一、B2121 最长最短单词 - 洛谷 算法代码&#xff1a; 代码分析 变量定义 输入处理 单词长度计算 更新最长和最短单词的长度 输出最长单词 输出最短单词 评测记录&#xff1a;​编辑 二、B2122 单词翻转 - 洛谷 算法代码&#xff1a; 代码分析 引入头文件和定…

74. 搜索二维矩阵(LeetCode 热题 100)

题目来源; 74. 搜索二维矩阵 - 力扣&#xff08;LeetCode&#xff09; 题目内容&#xff1a; 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &am…

JUC并发—9.并发安全集合四

大纲 1.并发安全的数组列表CopyOnWriteArrayList 2.并发安全的链表队列ConcurrentLinkedQueue 3.并发编程中的阻塞队列概述 4.JUC的各种阻塞队列介绍 5.LinkedBlockingQueue的具体实现原理 6.基于两个队列实现的集群同步机制 4.JUC的各种阻塞队列介绍 (1)基于数组的阻塞…

SQL Server导出和导入可选的数据库表和数据,以sql脚本形式

一、导出 1. 打开SQL Server Management Studio&#xff0c;在需要导出表的数据库上单击右键 → 任务 → 生成脚本 2. 在生成脚本的窗口中单击进入下一步 3. 如果只需要导出部分表&#xff0c;则选择第二项**“选择具体的数据库对象(Select specific database objects)”**&am…

DDoCT:形态保持的双域联合优化用于快速稀疏视角低剂量CT成像|文献速递-医学影像人工智能进展

Title 题目 DDoCT: Morphology preserved dual-domain joint optimization for fast sparse-view low-dose CT imaging DDoCT&#xff1a;形态保持的双域联合优化用于快速稀疏视角低剂量CT成像 01 文献速递介绍 计算机断层扫描&#xff08;CT&#xff09;是当今广泛应用的…

【Linux】多线程 -> 线程同步与基于BlockingQueue的生产者消费者模型

线程同步 条件变量 当一个线程互斥地访问某个变量时&#xff0c;它可能发现在其它线程改变状态之前&#xff0c;它什么也做不了。 例如&#xff1a;一个线程访问队列时&#xff0c;发现队列为空&#xff0c;它只能等待&#xff0c;直到其它线程将一个节点添加到队列中。这…

WPF的页面设计和实用功能实现

目录 一、TextBlock和TextBox 1. 在TextBlock中实时显示当前时间 二、ListView 1.ListView显示数据 三、ComboBox 1. ComboBox和CheckBox组合实现下拉框多选 四、Button 1. 设计Button按钮的边框为圆角&#xff0c;并对指针悬停时的颜色进行设置 一、TextBlock和TextBox…

Ubuntu24.04LTS的下载安装超细图文教程(VMware虚拟机及正常安装)

&#x1f638;个人主页&#x1f449;&#xff1a;神兽汤姆猫 &#x1f4d6;系列专栏&#xff1a;开发语言环境配置 、 Java学习 、Java面试 、Markdown等 学习上的每一次进步&#xff0c;均来自于平时的努力与坚持。 &#x1f495;如果此篇文章对您有帮助的话&#xff0c;请点…

buu-get_started_3dsctf_2016-好久不见39

栈溢出外平栈 1外平栈与内平栈的区别 外平栈&#xff1a; 栈帧的局部变量和返回地址之间没有额外的对齐或填充。返回地址直接位于局部变量的上方&#xff08;即栈顶方向&#xff09;。在计算偏移时&#xff0c;不需要额外加 4&#xff08;因为返回地址紧邻局部变量&#xff09…

QML Component 与 Loader 结合动态加载组件

在实际项目中&#xff0c;有时候我们写好一个组件&#xff0c;但不是立即加载出来&#xff0c;而是触发某些条件后才动态的加载显示出来&#xff0c;当处理完某些操作后&#xff0c;再次将其关闭掉&#xff1b; 这样的需求&#xff0c;可以使用 Component 包裹着组件&#xff…

vim修改只读文件

现象 解决方案 对于有root权限的用户&#xff0c;在命令行输入 :wq! 即可强制保存退出

UML顺序图的建模方法及应用示例

《UML 2.5基础、建模与设计实践》(李波&#xff0c;姚丽丽&#xff0c;朱慧)【摘要 书评 试读】- 京东图书 顺序图是强调消息时间顺序的交互图&#xff0c;它描述了对象之间传送消息的时间顺序&#xff0c;用于表示用例中的行为顺序。顺序图将交互关系表示为一个二维图&#x…

docker 安装jenkins

使用docker 容器安装jenkins比较方便&#xff0c;但是细节比较重要&#xff0c;这里实战安装了一遍&#xff0c;可用&#xff1a; 拉取最新的jenkins镜像 docker pull jenkins/jenkins 如果没有翻墙的话&#xff0c;可以会有下面的报错&#xff1a; Error response from dae…

My Metronome for Mac v1.4.2 我的节拍器 支持M、Intel芯片

应用介绍 My Metronome 是一款适用于 macOS 的专业节拍器应用程序&#xff0c;旨在帮助音乐家、作曲家、学生和任何需要精确节奏控制的人进行练习。无论是进行乐器练习、音乐创作还是演出排练&#xff0c;My Metronome 都能为用户提供精准的节拍支持和灵活的功能&#xff0c;确…

第1章大型互联网公司的基础架构——1.12 多机房:主备机房

除了要考虑机房内的各个组件&#xff0c;也要考虑机房自身的高可用问题。使用单机房架构搭建互联网应用后台&#xff0c;虽然接入层、业务服务层、存储层均具备高可用架构&#xff0c;但由于机房是单点&#xff0c;所以还是避免不了机房故障会造成整个应用无法访问的问题。可能…

EasyRTC:基于WebRTC与P2P技术,开启智能硬件音视频交互的全新时代

在数字化浪潮的席卷下&#xff0c;智能硬件已成为我们日常生活的重要组成部分&#xff0c;从智能家居到智能穿戴&#xff0c;从工业物联网到远程协作&#xff0c;设备间的互联互通已成为不可或缺的趋势。然而&#xff0c;高效、低延迟且稳定的音视频交互一直是智能硬件领域亟待…

项目设置内网 IP 访问实现方案

在我们平常的开发工作中&#xff0c;项目开发、测试完成后进行部署上线。比如电商网站、新闻网站、社交网站等&#xff0c;通常对访问不会进行限制。但是像企业内部网站、内部管理系统等&#xff0c;这种系统一般都需要限制访问&#xff0c;比如内网才能访问等。那么一个网站应…

ProfiNet转EtherNet/IP罗克韦尔PLC与监控系统通讯案例

一、案例背景 在新能源产业蓬勃发展的当下&#xff0c;大型光伏电站作为绿色能源的重要输出地&#xff0c;其稳定高效的运行至关重要。某大型光伏电站占地面积广阔&#xff0c;内部设备众多&#xff0c;要保障电站的稳定运行&#xff0c;对站内各类设备进行集中监控与管理必不可…