美文网首页Android技术知识Android开发Spring-Boot
备战跳槽季:来自面试官Redis灵魂45问,问到怀疑人生

备战跳槽季:来自面试官Redis灵魂45问,问到怀疑人生

作者: 70b39f9dc443 | 来源:发表于2019-09-17 15:33 被阅读0次

    八月已经过去了,九月也已经到来的、十月你是否已经准备充分,做好了迎接准备,都说一年有两个黄金季,一个是已经过去的金三银四,你是否抓住机会找到了一份心仪的工作,如果没有,那么没关系金九银十马上来了,这次就要准备充足,不要再让机会在眼前溜走啦。

    说到面试,那就要好好准备下,不准备充分的面试,完全是浪费时间,更是对自己的不负责。那么面试的知识点是哪些呢?

    经过很多数粉丝面试过后的反馈,Java面试重点如下:

    数据结构与算法,JVM内存结构、垃圾回收器、回收算法、GC、并发编程相关(多线程、线程池等)、NIO/BIO、性能优化、设计模式、Spring框架:分布式相关:Redis、一致Hash算法、分布式存储、负载均衡等,微服务以及Docker容器等。在这由于文字很多,我总结了java面试所涉及到的常问范围及常问面试题免费分享给大家,文末有获取地址!

    今天下面就列举的是Redis的相关面试问题,看看你是否能答出来。

    什么是 Redis?简述它的优缺点?

    Redis 与 memcached 相比有哪些优势?

    Redis 支持哪几种数据类型?

    Redis 主要消耗什么物理资源?

    Redis 有哪几种数据淘汰策略?

    Redis 官方为什么不提供 Windows 版本?

    一个字符串类型的值能存储最大容量是多少?

    为什么 Redis 需要把所有数据放到内存中?

    Redis 集群方案应该怎么做?都有哪些方案?

    Redis 集群方案什么情况下会导致整个集群不可用?

    Redis 有哪些适合的场景?

    Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?

    Redis 和 Redisson 有什么关系?

    Jedis 与 Redisson 对比有什么优缺点?

    说说 Redis 哈希槽的概念?

    Redis 集群的主从复制模型是怎样的?

    Redis 集群会有写操作丢失吗?为什么?

    Redis 集群之间是如何复制的?

    Redis 集群最大节点个数是多少?

    Redis 集群如何选择数据库?

    Redis 中的管道有什么用?

    怎么理解 Redis 事务?

    Redis 事务相关的命令有哪几个?

    Redis key 的过期时间和永久有效分别怎么设置?

    Redis 如何做内存优化?

    Redis 回收进程如何工作的?

    上述 Redis 分布式锁的缺点

    使用过 Redis 分布式锁么,它是怎么实现的?

    使用过 Redis 做异步队列么,你是怎么用的?有什么缺点?

    什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?

    redis 和 memcached 什么区别?为什么高并发下有时单线程的 redis 比多线程的 memcached 效率要高?

    redis 主从复制如何实现的?redis 的集群模式如何实现?redis 的 key 是如何寻址的?

    使用 redis 如何设计分布式锁?说一下实现思路?使用 zk 可以吗?如何实现?这两种有什么区别?

    知道 redis 的持久化吗?底层如何实现的?有什么优点缺点?

    redis 过期策略都有哪些?LRU 算法知道吗?写一下 java 代码实现?

    缓存穿透、缓存击穿、缓存雪崩解决方案?

    在选择缓存时,什么时候选择 redis,什么时候选择 memcached

    缓存与数据库不一致怎么办

    主从数据库不一致如何解决

    Redis 常见的性能问题和解决方案

    Redis 的数据淘汰策略有哪些

    Redis 当中有哪些数据结构

    假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如 果将它们全部找出来?

    使用 Redis 做过异步队列吗,是如何实现的

    Redis 如何实现延时队列

    面试答案

    1、什么是 Redis?简述它的优缺点?

    Redis 的全称是:Remote Dictionary.Server,本质上是一个 Key-Value 类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。

    因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的Key-Value DB。

    Redis 的出色之处不仅仅是性能,Redis 最大的魅力是支持保存多种数据结构,此外单个 value 的最大限制是 1GB,不像 memcached 只能保存 1MB 的数据,因此 Redis 可以用来实现很多有用的功能。

    比方说用他的 List 来做 FIFO 双向链表,实现一个轻量级的高性 能消息队列服务,用他的 Set 可以做高性能的 tag 系统等等。

    另外 Redis 也可以对存入的 Key-Value 设置 expire 时间,因此也可以被当作一 个功能加强版的

    memcached 来用。 Redis 的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此 Redis 适合的场景主要局限在较小数据量的高性能操作和运算上。

    2、Redis 与 memcached 相比有哪些优势?

    1.memcached 所有的值均是简单的字符串,redis 作为其替代者,支持更为丰富的数据类型

    2.redis 的速度比 memcached 快很多 redis 的速度比 memcached 快很多

    3.redis 可以持久化其数据 redis 可以持久化其数据

    3、Redis 支持哪几种数据类型?

    String、List、Set、Sorted Set、hashes

    4、Redis 主要消耗什么物理资源?

    内存 。

    5、Redis 有哪几种数据淘汰策略?

    1.noeviction:返回错误当内存限制达到,并且客户端尝试执行会让更多内存被使用的命令。

    2.allkeys-lru: 尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。

    3.volatile-lru: 尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据有空间存放。

    4.allkeys-random: 回收随机的键使得新添加的数据有空间存放。

    5.volatile-random: 回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合的键。

    6.volatile-ttl: 回收在过期集合的键,并且优先回收存活时间(TTL)较短的键,使得新添加的数据有空间存放。

    6、Redis 官方为什么不提供 Windows 版本?

    因为目前 Linux 版本已经相当稳定,而且用户量很大,无需开发 windows 版本,反而会带来兼容性等问题。

    7、一个字符串类型的值能存储最大容量是多少?

    512M

    8、为什么 Redis 需要把所有数据放到内存中?

    Redis 为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。

    所以 redis 具有快速和数据持久化的特征,如果不将数据放在内存中,磁盘 I/O 速度为严重影响 redis 的性能。

    在内存越来越便宜的今天,redis 将会越来越受欢迎, 如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值。

    9、Redis 集群方案应该怎么做?都有哪些方案?

    1.codis

    2.目前用的最多的集群方案,基本和 twemproxy 一致的效果,但它支持在节点数量改变情况下,旧节点数据可恢复到新 hash 节点。

    redis cluster3.0 自带的集群,特点在于他的分布式算法不是一致性 hash,而是 hash 槽的概念,以及自身支持节点设置从节点。具体看官方文档介绍。

    3.在业务代码层实现,起几个毫无关联的 redis 实例,在代码层,对 key 进行 hash 计算,然后去对应的redis 实例操作数据。这种方式对 hash 层代码要求比较高,考虑部分包括,节点失效后的替代算法方案,数据震荡后的自动脚本恢复,实例的监控,等等。

    10、Redis 集群方案什么情况下会导致整个集群不可用?

    有 A,B,C 三个节点的集群,在没有复制模型的情况下,如果节点 B 失败了,那么整个集群就会以为缺少5501-11000 这个范围的槽而不可用。

    由于篇幅限制,太长看下去会很乏味,也会影响阅读体验,下面展现将以图片形式展示。获取原文件以及更多资源的小伙伴们可以加入Java架构技术交流Q群3 2 8 9 9 3 8 1 9既可以获取资料还可以一起探讨面试时的问题与技术上的心得

    最后,分享一份面试宝典《Java核心知识点整理.pdf》,覆盖了JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等等,有兴趣小伙伴也可以一并领取哦

    有需要的小伙伴们可以加入Java架构技术交流Q群3 2 8 9 9 3 8 1 9既可以获取资料还可以一起探讨面试时的问题与技术上的心得

    相关文章

      网友评论

        本文标题:备战跳槽季:来自面试官Redis灵魂45问,问到怀疑人生

        本文链接:https://www.haomeiwen.com/subject/hkznectx.html