排序
面试题:RabbitMQ 怎么实现延迟队列?
1. 使用 RabbitMQ 官方插件 rabbitmq_delayed_message_exchange 这是最直接的方式。RabbitMQ 提供了一个官方插件 rabbitmq_delayed_message_exchange,它允许你创建一个延迟交换机,...
面试题:1000 个任务,每个任务 0.1s,最大响应时间 1s,线程池参数怎么设置?
我们需要设计一个线程池来处理 1000 个任务,每个任务耗时 0.1 秒,且最大响应时间为 1 秒。这意味着: 任务总耗时: 1000 个任务 × 0.1 秒 = 100 秒。 最大响应时间: 1 秒,即从任务提交到...
面试题:有一张表里面有三个字段,分别是(id,开始时间,结束时间),表中数据量为 5000W,如何统计流量最大的时候有多少条数据?
我们需要统计在某个时间段内,表中数据量最大的时候有多少条记录。具体来说,就是找到在某个时间点,有多少条记录的“开始时间”和“结束时间”区间覆盖了这个时间点。 解决方案 方法一:基于时...
面试题:即时通讯项目中怎么实现历史消息的下拉分页加载?
在即时通讯项目中,历史消息的下拉分页加载是一个常见的需求。用户可以通过下拉刷新或滚动到顶部的方式加载更早的历史消息。以下是实现这一功能的思路和步骤: 1. 数据结构设计 为了实现分...
面试题:HashMap 是不是线程安全的?如果让你来实现一个线程安全的 HashMap 你要怎么设计?如果不用加锁你要怎么设计?
1. HashMap 是不是线程安全的? 回答:HashMap 不是线程安全的。在多线程环境下,多个线程同时操作 HashMap 可能会导致数据不一致或死循环等问题。例如,当一个线程在扩容时,另一个线程同时进...
面试题:Redis Zset 的实现原理是什么?
Redis 的有序集合(Zset)是一个复合数据结构,它结合了 跳表(Skip List) 和 哈希表(Hash Table) 来实现高效的数据存储和操作。以下是 Zset 的实现原理: 1. Zset...
面试题:为什么 Redis Zset 用跳表实现而不是红黑树?B+树?
Redis 选择跳表(Skip List)作为 Zset 的底层实现,而不是红黑树或 B+ 树,主要基于以下几个原因: 1. 性能方面的考量 查询性能: 跳表的查询、插入、删除操作的时间复杂度都是 O(log N)...
面试题:Redisson 看门狗(watch dog)机制了解吗?
在分布式系统中,Redisson 是一个常用的 Redis 客户端,它提供了分布式锁的实现。Redisson 的分布式锁中有一个“看门狗”(Watch Dog)机制,你能解释一下这个机制的作用以及它是如何工作的吗?...