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查询附近位置

希望这些面试题能帮助你准备秋招!建议结合实际项目经验来回答,展示你的实战能力。
#秋招#
全部评论

相关推荐

头像
08-12 10:14
门头沟学院 Java
点赞 评论 收藏
分享
卖萌的外卷侠风度翩翩:这日语比赛都是开卷,而且也没证书,并且写这么多日语的而且是个二本,基本说明英语水平一点没有,而且找计算机专业的,把英语水平这么差暴露出来应该都不想要吧
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务