Redis面试题
面试官:我看你做的项目中,都用到了Redis,你在最近的项目中那些场景用了Redis?
候选人:一定要结合项目,1. 为了验证项目场景的真实性;2. 为了作为深入发问的切入点;
- 缓存(缓存三兄弟:穿透、击穿、雪崩;双写一致性、持久化、数据过期策略、数据淘汰策略)
- 分布式锁(setnx、redisson)
- 消息队列、延迟队列 (何种数据类型)
缓存穿透、击穿、雪崩
大约 36 分钟
面试官:我看你做的项目中,都用到了Redis,你在最近的项目中那些场景用了Redis?
候选人:一定要结合项目,1. 为了验证项目场景的真实性;2. 为了作为深入发问的切入点;
面试官:Spring框架中的单例bean是线程安全的吗?
Spring框架中的Bean是单例的吗?
Spring框架中的Bean是单例的,在注册Bean时,可以通过使用Scope注解声明当前的Bean是singleton或者prototype。如果不显示声明,默认为单例。
如何判断Spring开发中的线程安全问题?
Controller方法中接收的参数是局部变量,一般没有线程安全问题;但是如果在Controller类中定义了全局变量,并且这个全局变量是可修改的,则这个变量就有线程安全问题。如果这个全局变量没有状态(不可被修改,例如注入的Service对象、dao对象),则这个全局变量就是线程安全的。
所以在日常开发过程中应该注意,在Bean中尽量避免定义可被修改的全局成员变量,因为并不能保证他的线程安全。
讲解知识点架构:
RabbitMQ的使用场景:
面试官:RabbitMQ-如何保证消息不丢失