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

  • 时间:
  • 浏览:0
  • 来源:大发彩神UU快三_大发神彩UU快三官方

§ #{} 是预编译外理,${} 是字符串替换

§ 优点:

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

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

3、如保保证消息队列的高可用?

4、如保保证消息不被重复消费?后会说,如保保证消息消费的幂等性?

5、如保保证消息的可靠性传输?后会说,如保外理消息丢失的大问题?

6、如保保证消息的顺序性?

7、少许消息在 MQ 里长时间积压,该如保外理?

8、MQ 中的消息过期失效了怎莫办?

9、RabbitMQ 有有些重要的角色?

10、RabbitMQ 有有些重要的组件?

11、RabbitMQ 有几种广播类型?

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

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

14、Kafka 的分区策略有有些?

欢迎有人 关注我的公种浩【tcp连接运行员追风】,文章后会在上方更新,分发的资料也会放上去上方。

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

最后

欢迎有人 一并交流,喜欢文章记得点个赞哟,感谢支持!

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

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

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() 土法律最好的办法的调用。这要是延迟加载的基本原理。

1、谈下你对 Redis 的了解?

2、Redis 一般全是有些使用场景?

3、Redis 有有些常见的功能?

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

5、Redis 为有些是单tcp连接运行的?

6、Redis 为有些越来越 快?

7、有些是缓存穿透?为什么会么会外理?

8、有些是缓存雪崩?该如保外理?

9、 为什么会么会保证缓存和数据库数据的一致性?

10、Redis 持久化有几种土法律最好的办法?

11、Redis 为什么会么会实现分布式锁?

12、Redis 淘汰策略有有些?

13、Redis 常见性能大问题和外理方案?

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

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

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