华资软件第一面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