其他分享
首页 > 其他分享> > 华资软件第一面HR面-面经

华资软件第一面HR面-面经

作者:互联网

1.自我介绍

2.聊了一下项目

3.Java中有哪些常用集合

4.线程安全的是哪些?

HashTable Vector

Collections包装方法实现的线程安全集合:

// 实际上是一个返回了一个内部类 它重写了要创建集合的方法,为其添加了synchronized代码块,竞争的锁是:Object mutex
Map<Object, Object> map = Collections.synchronizedMap(new HashMap<>());

juc包下的集合

5.spring中bean的作用域?

singleton(单例)

prototype(原型)

request()

session()

global session()

6.Mybatis中一二级缓存

使用缓存之前需要pojo实现序列化接口,是为了将缓存数据取出时做反序列化操作。

一级缓存作用于一个sqlSession

一级缓存使用Hashmap实现缓存,当发生读数据会直接获取数据,没有缓存则从数据库中获取,发生增删改数据的commit;会清空缓存(刷新)。

HashMap<K, V>,key:hashcode + statementid+ sql语句;value: 映射的Java对象

二级缓存是作用于全局的也可以说是对于Mapper级别的缓存,对于多个sqlSession操作同一个mapper中的sql语句都起作用

如何开启二级缓存?

由于二级缓存是mapper级别的,所以要在对应的mapper中开启缓存标签。

核心配置文件 settings中配置 可以配置 刷新缓存周期

mapper文件 cache标签

对应语句 useCache = true

<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>

eviction:回收策略:FIFO LRU SOFT WEAK

flushInterval:刷新缓存间隔

size:引用数目

7.Mybatis中一二级缓存刷新时间

一级缓存刷新时间:增删改数据的commit;会清空缓存(刷新)。

二级缓存刷新时间:可以在配置文件中配置二级缓存的刷新周期,默认情况下,每执行一次commit;也就是增删改就会刷新二级缓存。也可以在sql语句标签上设置是否允许刷新。(这里的刷新就是清空缓存)。

面试体验很好

标签:语句,mapper,缓存,HR,面经,华资,二级缓存,刷新,commit
来源: https://www.cnblogs.com/sqzr316/p/16281988.html