Redis面试题精选(秋招备战)
# Redis面试题精选(秋招备战)
## 基础概念
📒提前批投递!
🔔多一次机会!
🔉正式秋招还能继续投!
💬快来试试!
🀄️机会多多!
👏欢迎私聊了解情况!
【拼多多集团-PDD校园招聘】内推链接:https://careers.pddglobalhr.com/campus/grad/detail?t=DBh7T7ZBAy,内推码:DBh7T7ZBAy。服务端研发工程师 期待你的加入!我们一起,无拼不青春!(通过此链接投递计入内推,内推简历优先筛选~)
1. **Redis是什么?它有哪些特点?**
- 内存数据库,键值存储系统
- 支持多种数据结构:String, Hash, List, Set, Sorted Set等
- 高性能(基于内存操作)
- 支持持久化(RDB/AOF)
- 支持主从复制、哨兵、集群
2. **Redis与Memcached的区别?**
- 数据结构:Redis更丰富
- 持久化:Redis支持,Memcached不支持
- 集群:Redis原生支持,Memcached需要客户端实现
- 线程模型:Redis单线程,Memcached多线程
## 数据结构
3. **Redis支持哪些数据结构?各自的使用场景?**
- String:缓存、计数器
- Hash:存储对象
- List:消息队列、最新消息排行
- Set:标签、共同好友
- Sorted Set:排行榜、带权重的队列
- Bitmap:用户签到、活跃统计
- HyperLogLog:基数统计
- GEO:地理位置
4. **Redis的跳跃表(Skip List)是如何实现的?为什么不用红黑树?**
- 多层链表结构,查询复杂度O(logN)
- 相比红黑树:实现简单、范围查询更高效、并发控制更容易
## 持久化
5. **RDB和AOF的区别?各自的优缺点?**
- RDB:定时快照,文件紧凑,恢复快;但可能丢失数据
- AOF:记录写命令,数据更安全;但文件大,恢复慢
- 4.0后支持混合持久化
6. **AOF重写的过程是怎样的?**
- 创建子进程
- 子进程读取数据库当前状态
- 生成新的AOF文件
- 期间的新命令写入缓冲区
- 完成后替换旧文件
## 高可用
7. **Redis主从复制原理?**
- 全量同步:主节点生成RDB发送给从节点
- 增量同步:通过复制缓冲区同步写命令
- 2.8后支持PSYNC,避免全量同步
8. **哨兵模式的工作原理?**
- 监控:检查主从节点状态
- 通知:向管理员报告故障
- 自动故障转移:选举新主节点
- 配置提供者:客户端发现当前主节点
9. **Redis Cluster如何实现数据分片?**
- 16384个哈希槽
- 每个节点负责部分槽
- 客户端或代理路由请求
- 支持重分片
## 高级特性
10. **Redis事务与数据库事务的区别?**
- 不保证原子性(单条命令原子,事务不保证全部成功)
- 没有隔离级别概念
- 通过MULTI/EXEC/WATCH实现
11. **Redis的管道(Pipeline)是什么?**
- 批量发送命令,减少RTT
- 非原子操作
- 显著提升批量操作性能
12. **Redis的过期策略和内存淘汰策略?**
- 过期策略:定期删除+惰性删除
- 淘汰策略:volatile-lru, allkeys-lru, volatile-random, allkeys-random, volatile-ttl, noeviction
## 性能优化
13. **Redis为什么快?**
- 内存操作
- 单线程避免锁竞争
- IO多路复用
- 高效数据结构
14. **Redis大Key问题如何解决?**
- 拆分大Key
- 使用SCAN代替KEYS
- 设置合理的过期时间
- 使用压缩算法
15. **Redis热点Key问题如何解决?**
- 本地缓存
- 读写分离
- 使用Redis集群分散压力
- 使用多级缓存
## 实战场景
16. **如何用Redis实现分布式锁?要注意什么?**
- SETNX + 过期时间
- 注意原子性设置
- 避免误删其他客户端锁
- 考虑锁续期问题
- Redlock算法
17. **如何用Redis实现延时队列?**
- 使用Sorted Set,score为时间戳
- 消费者轮询获取到期的元素
18. **Redis如何实现附近的人功能?**
- GEO数据结构
- GEOADD添加位置
- GEORADIUS查询附近位置
希望这些面试题能帮助你准备秋招!建议结合实际项目经验来回答,展示你的实战能力。
#秋招#
## 基础概念
📒提前批投递!
🔔多一次机会!
🔉正式秋招还能继续投!
💬快来试试!
🀄️机会多多!
👏欢迎私聊了解情况!
【拼多多集团-PDD校园招聘】内推链接:https://careers.pddglobalhr.com/campus/grad/detail?t=DBh7T7ZBAy,内推码:DBh7T7ZBAy。服务端研发工程师 期待你的加入!我们一起,无拼不青春!(通过此链接投递计入内推,内推简历优先筛选~)
1. **Redis是什么?它有哪些特点?**
- 内存数据库,键值存储系统
- 支持多种数据结构:String, Hash, List, Set, Sorted Set等
- 高性能(基于内存操作)
- 支持持久化(RDB/AOF)
- 支持主从复制、哨兵、集群
2. **Redis与Memcached的区别?**
- 数据结构:Redis更丰富
- 持久化:Redis支持,Memcached不支持
- 集群:Redis原生支持,Memcached需要客户端实现
- 线程模型:Redis单线程,Memcached多线程
## 数据结构
3. **Redis支持哪些数据结构?各自的使用场景?**
- String:缓存、计数器
- Hash:存储对象
- List:消息队列、最新消息排行
- Set:标签、共同好友
- Sorted Set:排行榜、带权重的队列
- Bitmap:用户签到、活跃统计
- HyperLogLog:基数统计
- GEO:地理位置
4. **Redis的跳跃表(Skip List)是如何实现的?为什么不用红黑树?**
- 多层链表结构,查询复杂度O(logN)
- 相比红黑树:实现简单、范围查询更高效、并发控制更容易
## 持久化
5. **RDB和AOF的区别?各自的优缺点?**
- RDB:定时快照,文件紧凑,恢复快;但可能丢失数据
- AOF:记录写命令,数据更安全;但文件大,恢复慢
- 4.0后支持混合持久化
6. **AOF重写的过程是怎样的?**
- 创建子进程
- 子进程读取数据库当前状态
- 生成新的AOF文件
- 期间的新命令写入缓冲区
- 完成后替换旧文件
## 高可用
7. **Redis主从复制原理?**
- 全量同步:主节点生成RDB发送给从节点
- 增量同步:通过复制缓冲区同步写命令
- 2.8后支持PSYNC,避免全量同步
8. **哨兵模式的工作原理?**
- 监控:检查主从节点状态
- 通知:向管理员报告故障
- 自动故障转移:选举新主节点
- 配置提供者:客户端发现当前主节点
9. **Redis Cluster如何实现数据分片?**
- 16384个哈希槽
- 每个节点负责部分槽
- 客户端或代理路由请求
- 支持重分片
## 高级特性
10. **Redis事务与数据库事务的区别?**
- 不保证原子性(单条命令原子,事务不保证全部成功)
- 没有隔离级别概念
- 通过MULTI/EXEC/WATCH实现
11. **Redis的管道(Pipeline)是什么?**
- 批量发送命令,减少RTT
- 非原子操作
- 显著提升批量操作性能
12. **Redis的过期策略和内存淘汰策略?**
- 过期策略:定期删除+惰性删除
- 淘汰策略:volatile-lru, allkeys-lru, volatile-random, allkeys-random, volatile-ttl, noeviction
## 性能优化
13. **Redis为什么快?**
- 内存操作
- 单线程避免锁竞争
- IO多路复用
- 高效数据结构
14. **Redis大Key问题如何解决?**
- 拆分大Key
- 使用SCAN代替KEYS
- 设置合理的过期时间
- 使用压缩算法
15. **Redis热点Key问题如何解决?**
- 本地缓存
- 读写分离
- 使用Redis集群分散压力
- 使用多级缓存
## 实战场景
16. **如何用Redis实现分布式锁?要注意什么?**
- SETNX + 过期时间
- 注意原子性设置
- 避免误删其他客户端锁
- 考虑锁续期问题
- Redlock算法
17. **如何用Redis实现延时队列?**
- 使用Sorted Set,score为时间戳
- 消费者轮询获取到期的元素
18. **Redis如何实现附近的人功能?**
- GEO数据结构
- GEOADD添加位置
- GEORADIUS查询附近位置
希望这些面试题能帮助你准备秋招!建议结合实际项目经验来回答,展示你的实战能力。
#秋招#
全部评论
相关推荐
08-12 10:14
门头沟学院 Java 一天代码十万三:故天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其不能
点赞 评论 收藏
分享
点赞 评论 收藏
分享
07-02 19:53
广州软件学院 Java 卖萌的外卷侠风度翩翩:这日语比赛都是开卷,而且也没证书,并且写这么多日语的而且是个二本,基本说明英语水平一点没有,而且找计算机专业的,把英语水平这么差暴露出来应该都不想要吧
点赞 评论 收藏
分享