当前位置: 首页 > news >正文

java面试中高频问题----1

一、乐观锁和悲观锁定义、场景怎么判断用什么?

1.乐观锁:
    定义:乐观锁假设大多数情况下,资源不会发生冲突。因此,允许多个线程同时访问资源。
    场景:读操作多,写操作少,数据冲突概率低的场景。多用于查询操作。
2.悲观锁:
    定义:悲观锁假设资源会发生冲突,在对资源操作时,会将资源锁定,其他线程无法访问,直到当前线程完成操作释放锁。
    场景:写操作多,读操作少,数据冲突概率高的场景。
3.采用何种锁机制?
****数据访问模式:分析应用程序的数据访问模式,包括读写操作的频率,读写比例;读多于写,冲突概率低用乐观锁;写多于读,冲突概率高用悲观锁。
****系统负载
****数据一致性要求:对数据一致性要求较高,不能容忍数据冲突或者并发更新导致的数据不一致,选悲观锁;对数据一致性要求低,可容忍一定程度的数据冲突或者延迟,选乐观锁。
****开发成本和复杂度:悲观锁,通常会引入锁定机制,可能会导致系统复杂度增加,同时也会增加开发和维护成本;乐观锁通常不需要引入锁定机制,因此开发成本和复杂度低。

二、ArrayList和LinkedList的区别?

********************************************************
ArrayList适合于需要频繁访问元素的场景,而LinkedList适合于需要频繁插入和删除元素的场景。
ArrayList的内存空间是连续的,支持快速随机访问,但插入和删除元素时需要移动后续元素,效率较低。
LinkedList的内存空间不是连续的,不支持快速随机访问,但插入和删除元素时效率较高,只需修改相邻节点的引用即可。

三、IOC原理

IOC,控制反转,以前创建对象的主动权和时机由自己把握,而现在这种权力转移到spring容器中,并由容器根据配置文件创建和管理实例之间的依赖关系,松散耦合,也有利于功能的复用。IOC的具体实现方式之一是依赖注入,通过依赖注入,容器负责在创建对象的同时,将对象所需的依赖关系注入到对象中。IOC的注入方式有三种:构造器注入,setter方法注入,根据注解注入。

四、双亲委派模型解决了什么问题?

双亲委派的基本原理:当一个类加载器收到加载类的请求时,它首先将该请求委派给父类加载器来完成加载。如果父类加载器无法完成加载,则该类加载器才尝试自己加载。这样一层一层的委派下去,直到达到最顶层的启动类加载器。如果所有父类加载器都无法完成加载,则抛出类找不到异常。

五、AOP原理

AOP,面向切面编程,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被称为“切面”。AOP通过代理模式和动态代理技术来实现,可以在方法执行前、执行后或者抛出异常时执行相应的切面逻辑。AOP的动态代理有两种方式:JDK动态代理和CGLIB动态代理。
http://www.lryc.cn/news/357702.html

相关文章:

  • ABB 控制柜
  • 【错误记录】HarmonyOS 运行报错 ( Failure INSTALL_PARSE_FAILED_USESDK_ERROR )
  • 使用C语言openssl库实现 RSA加密 和 消息验证
  • 海外投放面试手册
  • 第十三章 进程与线程
  • Flink面试整理-对Flink的高级特性如CEP(复杂事件处理)、状态后端选择和调优等有所了解
  • 算法:树状数组
  • Kafka SASL_SSL集群认证
  • 同城交友论坛静态页面app Hbuild
  • spring session+redis存储session,实现用户登录功能,并在拦截器里面判断用户session是否过期,过期就跳转到登录页面
  • Debug-013-el-loading中显示倒计时时间
  • 5月29日,每日信息差
  • 2024年弘连网络FIC大会竞赛题线下决赛题
  • Element-UI 入门指南:从安装到自定义主题的详细教程
  • vs工程添加自定义宏
  • shell脚本:将一维数组以二维数组显示
  • QT C++ 读写mySQL数据库 图片 例子
  • Unix环境高级编程--8-进程控制---8.1-8.2进程标识-8.3fork函数-8.4 vfork函数
  • Facebook之魅:数字社交的体验
  • 【重装windows遇到网络适配器无法更改】
  • FFmpeg+QT播放器实战1---UI页面的设计
  • C/C++语法|pthread线程库的使用
  • 四川汇聚荣聚荣科技有限公司是正规的吗?
  • tomcat学习--部署java项目
  • 用 vue3 + phaser 实现经典小游戏:飞机大战
  • 【Linux|数据恢复】extundelete和ext4magic数据恢复工具使用
  • 用户接入和认证技术
  • 【面试】Java虚拟机的生命周期
  • Nginx高可用性架构:实现负载均衡与故障转移的探索
  • 计算机网络-运输层