JAVA面试题4

1,Mybatis的一级缓存和二级缓存

一级缓存:基于PerpetualCache(永久缓存)的HashMap本地缓存,其储存作用域为Session,当Session flush或close之后,该Session中的所有Cache将清空,默认打开一级缓存

二级缓存:和一级缓存的机制相同,也是使用PerpetualCache,HashMap储存,

不同的是二级缓存的储存作用域是Mapper(Namespace),并且可自定义储存源,

二级缓存不是默认打开的,要开启二级缓存,使用二级缓存属性类实现Serializabe序列化接口,(可用来保存对象状态)可以在它的映射文件中配置

对于缓存数据更新机制,当某个作用域(一级缓存时Session/二级缓存Namespace)进行了CUD操作后,默认该作用域下所以select中的缓存将被clear

2,简述 Mybatis 的插件运行原理,以及如何编写一个 插件

编写插件三个过程

1,编写一个Intercepror接口实现类

2,设置插件的签名,告诉mybatis需要拦截哪个对象的哪个方法

3,最后将插件注册到全局配置文件中

运行原理

mybatis可以编写针对Executor,statementHandler,ParameterHandler,ResultSerHandler四个接口的插件,mybatis使用JDK的动态代理为需要拦截的接口生成代理对象,然后实现接口的拦截方法,所以当需要执行拦截方法的时候,会进入拦截方法(AOP面向切面编程)

3,MyBatis 实现一对一,一对多有几种方式,怎么操 作的

有联合查询和嵌套查询

联合查询:几个表联合查询,然后通过在resultMap里面的association,collection节点配置一对一,一对多的类就可以完成

嵌套查询是:先查询一个表,在根据这个表里面的外键ID,然后去查另一个表里面的数据也可以通过association,collection,但另一个表的查询通过select节点配置

4,什么是反射机制

在运行状态中,能获取一个类的所有属性和方法,任何对象,都能调用它任意一个方法和属性,这种动态获取信息以及动态调取对象的方法称为JAVA反射

静态编译和动态编译

静态编译:编译时确定对象类型,绑定对象

动态编译:运行时确定类型,绑定对象

5,深拷⻉和浅拷⻉区别是什么

最大的区别就是是不是真的获取一个对象的复制实体,而不是引用

分为基本数据类型和引用数据类型

基本数据类型:数据直接储存在栈中

引用数据类型:储存在栈中的只是引用对象的地址,真正的对象储存在堆中

浅拷贝:对于基本数据类型,就是直接复制数据的值,

对于引用数据类型,只复制引用的对象地址,两个地址指向同一个对象,这样修改一个另一个要会修改

深拷贝:对于基本数据类型,直接复制数据的值,

对引用数据类型,就是开辟一个新的内存空间,在新空间里复制一个一模一样的对象,新老对象不共享内存修改其中一个不会影响另外一个

6,并发和并有什么区别

并发:两个或多个事情在同一时间间隔发生,就是在同一时刻只会做一件事情

并行:两个或多个事件在同一时刻发生,同一时刻做多件事情

7,面向对象和面向过程的区别

面向对象

优点:易维护,易复用,易扩展,有继承,封装,多态的特性,更容易设计出耦合的系统

缺点:性能比面向过程低

面向过程

优点:性能比面向对象高,因为类的调用时需要实例化,开销比较大,比较耗资源,所以当性能是最重要的因素时,可以选择面向过程

缺点:没有易维护,易扩展,易复用

8,final finally finalize 区

final:可以修饰类,变量,方法,修饰类表示这个类不能被继承,修饰方法表示这个方法不能被重写

修饰变量表示这个变量不能被重新赋值

finally:一般用于try-catch中,一般用于一些需要关闭资源的代码,finally表示不管是否出现异常,finally里面的代码都会执行

finalize:就是垃圾回收器调用这个方法来判断这个对象是否被引用,

9,this 与 super 的区

1,super()主要是对父类构造函数的调用,this()是对重载构造函数的调用

2,super()主要是在继承了父类的子类的构造函数的使用,在不同的类中使用,this()主要是在同一个类中不同的构造函数使用

相同点:

        super()和this()都需要在构造函数的第一行进行使用,不然会报错


10,static 存在的主要意义

1,创建独立于具体对象域变量或方法,以至于既使没创建对象,也能使用属性和调用方法

2,用来形成静态代码块,以优化程序性能,static代码块可以在程序任意地方,可以有多个static代码块,并且只执行一次

3,

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值