阿里最新38道Java面试题解析(MyBatis+消息队列+Redis)

  • 时间:
  • 浏览:0
  • 来源:uu快3漏洞_uu快3链接_公式

1、谈下你对 Redis 的了解?

2、Redis 一般都哪些使用场景?

3、Redis 哪些常见的功能?

4、Redis 支持的数据类型哪些?

5、Redis 为哪些是单线程的?

6、Redis 为哪些这样快?

7、哪些是缓存穿透?要怎样会会 解决?

8、哪些是缓存雪崩?该要怎样解决?

9、 要怎样会会 保证缓存和数据库数据的一致性?

10、Redis 持久化有几种法子?

11、Redis 要怎样会会 实现分布式锁?

12、Redis 淘汰策略哪些?

13、Redis 常见性能问题报告 和解决方案?

§ #{} 是预编译解决,${} 是字符串替换

§ 优点:

1、消息队列的基本作用?

2、消息队列的优缺点哪些?

3、要怎样保证消息队列的高可用?

4、要怎样保证消息不被重复消费?可能性说,要怎样保证消息消费的幂等性?

5、要怎样保证消息的可靠性传输?可能性说,要怎样解决消息丢失的问题报告 ?

6、要怎样保证消息的顺序性?

7、极少量消息在 MQ 里长时间积压,该要怎样解决?

8、MQ 中的消息过期失效了要怎样会会 办?

9、RabbitMQ 哪些重要的角色?

10、RabbitMQ 哪些重要的组件?

11、RabbitMQ 有几种广播类型?

12、Kafka 都可不可不能否脱离 zookeeper 单独使用吗?为哪些?

13、Kafka 有几种数据保留的策略?

14、Kafka 的分区策略哪些?

欢迎朋友 关注我的公种浩【线程员追风】,文章都有在上面更新,收集的资料也会倒进上面。

MyBatis 使用 RowBounds 对象进行分页,它是针对 ResultSet 结果集执行的内存分页,而非物理分页。都可不可不能否在 SQL 内直接书写带有物理分页的参数来完成物理分页功能,也都可不可不能否使用分页插件来完成物理分页。

分页插件的基本原理是使用 MyBatis 提供的插件接口,实现自定义插件,在插件的拦截法子内拦截待执行的 SQL,或者重写 SQL,根据 dialect 方言,再加对应的物理分页语句和物理分页参数。

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

二级缓存:与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap 存储,不同在于其存储作用域为 Mapper(Namespace),或者可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类须要实现 Serializable 序列化接口(可用来保存对象的具体情况),可在它的映射文件中配置 ;

对于缓存数据更新机制,当某一2个多 多作用域(一级缓存 Session / 二级缓存 Namespaces)的进行了 C/U/D 操作后,默认该作用域下所有 select 中的缓存将被 clear。

Mybatis 仅支持 association 关联对象和 collection 关联集合对象的延迟加载,association 指的也不我一对一,collection 指的也不我一对多查询。在MyBatis配置文件中,都可不可不能否配置是是是不是启用延迟加载lazyLoadingEnabled=true|false。

它的原理是,使用 CGLIB 创建目标对象的代理对象,当调用目标法子时,进入拦截器法子,比如调用 a.getB().getName(),拦截器 invoke() 法子发现 a.getB() 是 null 值,这样就会单独发送随后保存好的查询关联 B 对象的 SQL,把 B 查询上来,或者调用 a.setB(b),于是 a 的对象 b 属性都有值了,接着完成 a.getB().getName() 法子的调用。这也不我延迟加载的基本原理。

Mybatis 有 3 种基本的执行器(Executor):

最后

欢迎朋友 同去交流,喜欢文章记得点个赞哟,感谢支持!