1、讲一讲 Spring 框架中 Bean 的生命周期?
在 Spring 框架中,Bean 的生命周期分为以下阶段:
- 实例化:Spring 容器创建 Bean 实例。这可以通过构造函数实现或者使用工厂方法。
- 属性赋值:Spring 容器设置 Bean 的属性和依赖关系。可以使用 XML 配置文件或注解等方式进行配置。
- 初始化方法:如果 Bean 实现了 InitializingBean 接口,那么 Spring 容器会调用 afterPropertiesSet() 方法;如果配置文件中指定了 init-method 属性,则会调用该方法。
- 使用 Bean:Bean 可以被应用程序使用。
- 销毁方法:如果 Bean 实现了 DisposableBean 接口,那么 Spring 容器会在容器关闭时调用 destroy() 方法;如果配置文件中指定了 destroy-method 属性,则会调用该方法。
2、Redis 有哪些数据类型?基础数据结构有几种?你还知道哪些 Redis 的高级数据结构?
Redis 支持以下数据类型:
- 字符串(String):最基本的数据类型,可以存储任何类型的数据,包括二进制数据。字符串类型的值最大能存储 512MB。
- 列表(List):Redis 中的有序字符串列表,可以存储多个元素,每个元素都有一个索引,支持多种列表操作,支持按范围查询。
- 集合(Set):无序字符串集合,可以存储多个元素,但是每个元素都是唯一的,支持添加、删除、查找操作,并且支持交集、并集、差集等集合运算。
- 散列(Hash):字符串字段和字符串值之间的映射表,类似于 Java 中的 Map 数据结构,支持添加、删除、查找操作,以及获取所有字段或所有值的操作。
- 有序集合(Sorted Set:ZSet):有序字符串集合,每个元素都有一个分数(score)与之关联,支持按分数范围查询、按分数排序等操作。
除了上述基础数据结构之外,Redis 还支持一些高级数据结构,包括:文章来源:https://www.toymoban.com/news/detail-437447.html
- 布隆过滤器(Bloom Filter):一种空间效率非常高的随机数据结构,用于检索一个元素是否在一个集合中。
- 基数(HyperLogLog):一种用于估计一个集合中元素数量的算法。
- 发布订阅(Pub/Sub):一种消息传递模式,消息发送者(发布者)将消息发送到频道,而订阅者可以订阅频道以接收消息。
- 地理位置(Geospatial):可以将地理空间坐标与一个标识符相关联,支持距离查询、范围查询等操作。
- 限流器(Rate Limiter):用于限制某个操作的速率,防止系统被恶意攻击或者因为某些原因导致负载过高。
3、有哪些主流的消息队列,它们分别有什么优缺点、各自的适用场景是什么?
主流的消息队列如下文章来源地址https://www.toymoban.com/news/detail-437447.html
消息队列 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
RabbitMQ | 开源、可靠性高、支持多种协议和编程语言、性能稳定 | 需要安装 Erlang 环境、性能较弱 | 适用于吞吐量不高,但对可靠性和多语言支持有要求的场景 |
Apache Kafka | 高吞吐量、分布式、可水平扩展、支持流处理 | 适用于大规模数据处理,但需要额外的复杂配置和运维成本 | |
ActiveMQ | 开源、性能稳定、支持多种协议和编程语言、集成广泛 | 稳定性不如 RabbitMQ、复杂性较高 | 适用于需要多种集成方式和协议的场景 |
RocketMQ | 分布式、高可用、性能高、支持批量发送和顺序消费 | 对于消息存储和网络传输对可靠性要求高 | 适用于高吞吐量和可靠性要求高的场景 |
Amazon SQS | 可靠性高、支持多种协议和编程语言、弹性可扩展 | 有一定的限制,如不能支持 push 模式 | 适用于需要可靠性和弹性可扩展性的场景 |
Google Cloud Pub/Sub | 分布式、高可靠性、支持多种协议和编程语言、可以与 Google Cloud 平台集成 | 可能会受到 Google Cloud 平台的限制 | 适用于需要与 Google Cloud 平台集成的场景 |
Redis消息队列 | 高性能,单机可以处理百万级别的消息。 可以支持多种消费者,从而实现并行消费。 可以支持消息持久化,保证消息不丢失。 支持事务和 Lua 脚本,可以实现复杂的消息处理逻辑 | 不支持消息的顺序消费。 不支持消息的重复消费。 单机容量受限,无法支持大规模数据处理 | 秒杀、抢购等场景 |
到了这里,关于面试题30天打卡-day23的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!