1、Spring如何实现异步调用?什么情况会导致异步调用失效?

有了解。在启动类上开启异步线程调用@EnableAsync,在需要异步调用的业务方法添加@Async,如果对线程有要求,还创建多一个配置类新建ThreadPoolTaskExecutor()对象对线程7个参数进行设置;

以下情况会导致@Async失效:
1)该方法非pubic,会失效
2)该方法被当前类的其他方法调用,也会失效。
3)该方法所在类没有放在Spring容器中进行管理

2、RabbitMQ的消息发送模式?

1)简单模式(
2)工作队列模式
3)发布订阅模式
4)路由模式(

5)主题topic模式(*)

3、RabbitMQ 和 Kafka 有什么区别?

RabbitMQ:
优势:
1)支持语言非常广
2)稳定性很好,采用Erlang语言开发
3)吞吐量不算低,万级
4)RabbitMQ官方提供7种消息发送模式,开发者轻松选择合适的模式进行开发即可
缺点:
1)采用Erlang,太小众,研究源码很难

Kafka:
优势:
1)高吞吐量,百万级
2)稳定性好,采用zookeeper进行注册(Zookeep采用CP模式,高一致模式)
3)可以应用在大数据数据处理领域(KafkaStream)
缺点:
1)支持的开发语言比较少
2)耦合zk,依赖zookeeper进行注册

4、HashMap的扩容因子?ArrayList的初始容量和扩容机制?(必问)

HashMap初始容量为16,扩容因子为0.75,扩容2倍。
ArrayList默认容量为10。超过容量上限则扩容,扩容量为原来的1.5倍