Redis 字节抖音一面
Redis 为啥快?能简单的讲一下原因? 字节抖音三面 redis的渐进式哈希?说一下细节? 渐进式哈希就是要把数据给搬到一个新的hash表里边去?搬这个过程怎么不影响在线服务呢?(怎么渐进式扩容的时候不影响在线服务) 空间换时间去实现,具体怎么实现? 腾讯一面
1 redis有哪些数据结构? String hash list set zset Redis 实现分布式锁?如何实现的?
一个进程持有了这个分布式锁,然后他挂了,那这个锁岂不是永远释放不了吗? 腾讯二面
1 Redis 你最常用的数据结构是? zset zset结构有了解它的实现吗? Redis 字节抖音一面
1 Redis 为啥快?能简单的讲一下原因? 字节抖音三面
1 redis的渐进式哈希?说一下细节? 2 渐进式哈希就是要把数据给搬到一个新的hash表里边去?搬这个过程怎么不影响在线服务呢?(怎么渐进式扩容的时候不影响在线服务) 3 空间换时间去实现,具体怎么实现? 腾讯一面
1 redis有哪些数据结构? 2 Redis 实现分布式锁?如何实现的? 3 一个进程持有了这个分布式锁,然后他挂了,那这个锁岂不是永远释放不了吗? 腾讯二面
1 Redis 你最常用的数据结构是? 2 zset结构有了解它的实现吗? 3 zset这种数据结构一般用在什么场景? 4 Redis 它是可以设置过期的吗? 5 redis中过期的那个策略有了解吗?就是删除策略。 6 分布式的 Redis 你有了解吗? 7 讲一下怎么用 Redis 实现一个分布式锁。 8 你的缓存设计是主要是 DB 和 Redis 之间的,那缓存一致性是怎么保证的? 9 那你还提到了缓存击穿和缓存穿透吗?那这个是怎么解决的? 10 你用过redis中的lua脚本? 11 分布式Redis 分片,要怎么保证你 Redis 的那个 key 到同一个分片?这个有没有了解过? 12 作为一个string的key的这种操作,那 k v这种类型它就存在着一个问题,就比如说多线程去操作的时候,它会有一个覆盖的一个问题。这个问题怎么解决? ● 基于lua脚本? 13 有了解过 Redis 哨兵机制是吧? 阿里淘天一面2
1 那个分布式锁有了解吗?在一般什么情况下会用的嗯,怎么用,怎么实现的? 2 缓存这块有用过吗?存成的数据是怎么保证数据的一致性呢? 3 那可能里面其实比较针对的一些问题,就是就是说就是缓存穿透啊,这类似这种你觉得应该怎么解决呃,缓存穿透是吧? 阿里控股一面
1 聊到了雪花算法分布式情况下的重复问题。然后我讲了引用redis解决该问题。面试官继续问:按照自己的思路实现了雪花算法的分布式情况下重复问题,额外引入了一个外部的依赖redis,有没有考虑这个外部依赖,它万一出现问题会造成什么样的影响? 2 如果让你去选择一种部署的方式,就比如说 Redis 提供的这些方案也好,或者你自己设计一个方案也好,你会怎么去设计这样一个 Redis 的架构? 3 redis在哨兵模式下,如何解决脑裂的问题? 4 你可以抛弃 Redis 自己的实现方案,或者你可以说一下。比如说在这种哨兵模式的部署方案下,如果让你去设计一个一致性算法,或者说选举的这种算法,你要怎么去设计? 阿里健康一面
1 在项目中用了redis实现分布式锁,能给我介绍一下吗?是什么样的一个场景下?然后你才要去做?然后你具体是怎么去实现这个分布式锁? 2 那在秒杀这样的场景下,为什么会使用到分布式锁?我用普通的 lock 或者 synchronized不能用吗? 3 redis去实现。你用redis具体是怎么实现的? 4 介绍一下setnx? 5 加锁命令和解锁命令的原子性?并发的时候会有什么问题? 6 redis一般做缓存嘛,你知道他为什么是能够拿来做缓存? 7 你说redis是内存数据库很快,那也有其他的内存数据库,redis除了内存之外还有什么其他的快的优势嘛? ● 计算操作 ○ 基于内存 ● 读写操作 ○ 网络IO ○ 磁盘IO 阿里健康二面
1 非关系型数据库有用到过吗?说一下 Redis 的常用的一些数据结构 2 Redis 作为这种分布式缓存,他有没有什么一些问题啊? ● 缓存一致性 ○ 延时双删 ○ 先更新数据库,后删除缓存 ○ cancal + mq 8 比如说因为有一些场景,我们就是需要保障数据库和缓存一致性,怎么办?(指强一致性保障) ● 一致性和可用性的平衡,没有一定的方案。 京东零售-网格中台-1面
1 说一下对那个缓存穿透、缓存击穿、缓存雪崩这三个概念的理解吧。 2 缓存击穿的时候说的有两种方案,第一种的话是要先要使用分布式锁,那这种方案有什么问题。 3 LRU 那个实现原理是什么? 京东零售-用户智能运营部-1面
1 Redis 持久化方式有哪几种?分别有什么优点?怎么选型? 2 在项目中有用到 Redis 吗?就是分享一下你项目中怎么用。(分布式缓存) 3 分布式缓存什么时候该引入?引入了以后要怎么使用呢? 4 缓存和数据库的一致性应该怎么解决? 美团到店-1面
1 Redis 这个是在什么场景下去应用的? 2 Redis 这种 KV 的这种,底层的存储有了解吗? 3 怎么去解决哈希冲突的? 4 解决哈希冲突用链表的话,可能会存在一个问题,链表比较长的时候,它的效率会很低,有没有了解过一些优化的思路? 滴滴一面
1 Redis 它的就是底层它有一些什么特殊的这个数据结构的实现吗? 2 讲讲跳表的实现这个优势在于什么? 3 Redis 这块它的这个持久化策略? 4 redis中哨兵机制主要是解决什么问题,可以给我讲讲吧 ● 健康检测 ● 故障转移和恢复 ● 通知客户端 22 之前实习,Redis 的那个集群,它的设计是什么样的?(redis的集群模式) 滴滴三面
1 Redis 是怎么实现这个高性能? 2 Redis在做 RDB 持久化的时候,fork一个子进程来进行,他要把此时的数据进行持久化,同时它的那个主线程又一直在接收那个数据请求对内存进行一些修改,那它在进行持久化的时候,这个数据他怎么能够知道现在是哪个时段的数据呢?因为它在持久化的过程中,那个数据不是也一直在改吗? ● 主从复制中全量更新的repl_baklog环形缓冲区 + offset + 长连接发送(全量复制原理)
3 Redis 那个数据可能是非常大的,那 RDB时在我们 dump 不下来的时候会不会存在比如说你前面一段数据 dump 的是在子进程fork时候的那个数据,后面那段数据因为还在接收客户端的请求在改动,会不会就是一部分数据是前一个时间点的数据,后面那段数据是新的时间点的数据? 华为二面
1 Redis 大概这个部署模式都清楚吗? 2 哨兵模式要不简单给我讲一下。 3 研究这个机制当时想要用在什么样一个场景,或者说为了达到什么样一个目的? 蔚来一面
1 现在有一个 Redis 集群,如果主服务器 down 掉,它会执行一个什么操作?就是怎么样挑选另外一个主服务器,大概的一个流程是什么样? 2 Redis 里面的 zset 结构了解过吗?它有什么使用场景。 3 平常使用 Redis 大概用到哪些场景? 4 Redis 实现过分布式锁吗? 拼多多一面
1 Redis 怎么持久化呢? RDB AOF save阻塞持久化 bgsave 非阻塞 AOF 一般 Redis 会在什么场景下会使用到? 3 比如说数据存在 Redis 里面, Redis 怎么做那种序列化的呢?对于复杂的那种类型怎么来支持呢? 4 比如说自己写个类型,那redis对这种复杂的怎么来做存储?怎么来做序列化呀? 5 你觉得 Redis 他会用Json去序列化吗? 6 哈希表有什么优点? 7 随着元素的插入,哈希表的效率其实会变低的,那这个时候需要去做rehash,那rehash怎么rehash呢? 8 hash之后可能会有碰撞。你了解哪些算法?可能说哈希的那种碰撞率会比较低呢。 ● hashmap中对key的hash值做位运算,二次散列。思想是将数据足够散列来降低碰撞概率 ● redis的分片cluster模式下,基于CRC16+哈希槽的动态扩缩容的哈希算法。
9 现在让你设计一个哈希算法,比如说可能在有千亿级别的数据的时候,想要哈希,用hashmap,哈希算法肯定是有冲突的,但怎么样设计一种哈希算法,保证在有迁移数据的时候,我们还是能够维持一个非常低的一个冲突的概率,或者是就是没有冲突。(真的想骂面试官,这种题hashmap都有问题,你让我设计一个没问题的。。。脑子不好) ● 我回答:拉链法,空间充足的情况下将数据散落到各个槽位上。
10 面试官继续问假如又要求空间填充率又很高,怎么办? ● 我说想到了布隆过滤器。 ● 补充:布隆过滤器往往就是对哈希表在空间上的优化。因为哈希表需要存储数据的全量,但是布隆过滤器只是存储0101,效果是相同的,可以快速判断一个元素在集合中是否存在。但需要注意布隆过滤器有误判率。
11 布隆过滤器一般用在什么场景下? ● 缓存穿透 ● 快速判断一个元素是否存在集合中 米哈游二面
1 对数据库的压力访问,你觉得有什么样的优化方式吗? 2 提到放到Redis,那数据一致性我们一般怎么处理呢? 3 先更新库,再删缓存这种,就是它为什么会出现不一致呢? 4 考虑延时双删的话,为什么还要考虑这种先删缓存呢?它有什么好处吗?或者它适合什么场景? 用友一面
1 Redis的集群模式? 2 用 Redis 作为缓存直接击穿到数据库的主要原因是啥?以及解决方案? 元戎启行一面
1 Redis 是怎么保证高可用的?以及它操作时的安全的? 2 Redis 当前有哪些问题啊?在使用时候需要注意哪些点? 3 redis的cluster模式下,比如说想再加个分片,如果用哈希,它的数据会不会全部混乱的?重新全部需要缓存一遍。 4 Redis 的分布式锁,如果某一个线程在用这个分布锁,突然挂了,服务是怎么去释放的?它是怎么做到的? 5 黑马点评中的乐观锁,是怎么用的? 6 执行sql后的影响函数? Tplink二面
1 缓存问题介绍一下,包括缓存击穿、缓存穿透、缓存雪崩。都是因为什么原因造成的?一般的解决方案都有哪些? 2 说到缓存击穿中的逻辑过期方案。面试官问:过期的时间很久,会导致有一段时间数据不同步嘛,一般怎么处理? 北京博瑞一面
1 Redis的 5 种数据结构? 2 讲一下Zset用到的跳表的数据结构,讲一下? 3 redis的zset采用跳表的机制,jdk中hashmap采用红黑树,数据库的索引采用b+树,是怎么理解各自的考量的? zset这种数据结构一般用在什么场景? 4 Redis 它是可以设置过期的吗? 5 redis中过期的那个策略有了解吗?就是删除策略。 6 分布式的 Redis 你有了解吗? 7 讲一下怎么用 Redis 实现一个分布式锁。 8 你的缓存设计是主要是 DB 和 Redis 之间的,那缓存一致性是怎么保证的? 9 那你还提到了缓存击穿和缓存穿透吗?那这个是怎么解决的? 10 你用过redis中的lua脚本? 11 分布式Redis 分片,要怎么保证你 Redis 的那个 key 到同一个分片?这个有没有了解过? 12 作为一个string的key的这种操作,那 k v这种类型它就存在着一个问题,就比如说多线程去操作的时候,它会有一个覆盖的一个问题。这个问题怎么解决? ● 基于lua脚本? 13 有了解过 Redis 哨兵机制是吧? 阿里淘天一面2
1 那个分布式锁有了解吗?在一般什么情况下会用的嗯,怎么用,怎么实现的? 2 缓存这块有用过吗?存成的数据是怎么保证数据的一致性呢? 3 那可能里面其实比较针对的一些问题,就是就是说就是缓存穿透啊,这类似这种你觉得应该怎么解决呃,缓存穿透是吧? 阿里控股一面
1 聊到了雪花算法分布式情况下的重复问题。然后我讲了引用redis解决该问题。面试官继续问:按照自己的思路实现了雪花算法的分布式情况下重复问题,额外引入了一个外部的依赖redis,有没有考虑这个外部依赖,它万一出现问题会造成什么样的影响? 2 如果让你去选择一种部署的方式,就比如说 Redis 提供的这些方案也好,或者你自己设计一个方案也好,你会怎么去设计这样一个 Redis 的架构? 3 redis在哨兵模式下,如何解决脑裂的问题? 4 你可以抛弃 Redis 自己的实现方案,或者你可以说一下。比如说在这种哨兵模式的部署方案下,如果让你去设计一个一致性算法,或者说选举的这种算法,你要怎么去设计? 阿里健康一面
1 在项目中用了redis实现分布式锁,能给我介绍一下吗?是什么样的一个场景下?然后你才要去做?然后你具体是怎么去实现这个分布式锁? 2 那在秒杀这样的场景下,为什么会使用到分布式锁?我用普通的 lock 或者 synchronized不能用吗? 3 redis去实现。你用redis具体是怎么实现的? 4 介绍一下setnx? 5 加锁命令和解锁命令的原子性?并发的时候会有什么问题? 6 redis一般做缓存嘛,你知道他为什么是能够拿来做缓存? 7 你说redis是内存数据库很快,那也有其他的内存数据库,redis除了内存之外还有什么其他的快的优势嘛? ● 计算操作 ○ 基于内存 ● 读写操作 ○ 网络IO ○ 磁盘IO 阿里健康二面
1 非关系型数据库有用到过吗?说一下 Redis 的常用的一些数据结构 2 Redis 作为这种分布式缓存,他有没有什么一些问题啊? ● 缓存一致性 ○ 延时双删 ○ 先更新数据库,后删除缓存 ○ cancal + mq 8 比如说因为有一些场景,我们就是需要保障数据库和缓存一致性,怎么办?(指强一致性保障) ● 一致性和可用性的平衡,没有一定的方案。 京东零售-网格中台-1面
1 说一下对那个缓存穿透、缓存击穿、缓存雪崩这三个概念的理解吧。 2 缓存击穿的时候说的有两种方案,第一种的话是要先要使用分布式锁,那这种方案有什么问题。 3 LRU 那个实现原理是什么? 京东零售-用户智能运营部-1面
1 Redis 持久化方式有哪几种?分别有什么优点?怎么选型? 2 在项目中有用到 Redis 吗?就是分享一下你项目中怎么用。(分布式缓存) 3 分布式缓存什么时候该引入?引入了以后要怎么使用呢? 4 缓存和数据库的一致性应该怎么解决? 美团到店-1面
1 Redis 这个是在什么场景下去应用的? 2 Redis 这种 KV 的这种,底层的存储有了解吗? 3 怎么去解决哈希冲突的? 4 解决哈希冲突用链表的话,可能会存在一个问题,链表比较长的时候,它的效率会很低,有没有了解过一些优化的思路? 滴滴一面
1 Redis 它的就是底层它有一些什么特殊的这个数据结构的实现吗? 2 讲讲跳表的实现这个优势在于什么? 3 Redis 这块它的这个持久化策略? 4 redis中哨兵机制主要是解决什么问题,可以给我讲讲吧 ● 健康检测 ● 故障转移和恢复 ● 通知客户端 22 之前实习,Redis 的那个集群,它的设计是什么样的?(redis的集群模式) 滴滴三面
1 Redis 是怎么实现这个高性能? 2 Redis在做 RDB 持久化的时候,fork一个子进程来进行,他要把此时的数据进行持久化,同时它的那个主线程又一直在接收那个数据请求对内存进行一些修改,那它在进行持久化的时候,这个数据他怎么能够知道现在是哪个时段的数据呢?因为它在持久化的过程中,那个数据不是也一直在改吗? ● 主从复制中全量更新的repl_baklog环形缓冲区 + offset + 长连接发送(全量复制原理)
3 Redis 那个数据可能是非常大的,那 RDB时在我们 dump 不下来的时候会不会存在比如说你前面一段数据 dump 的是在子进程fork时候的那个数据,后面那段数据因为还在接收客户端的请求在改动,会不会就是一部分数据是前一个时间点的数据,后面那段数据是新的时间点的数据? 华为二面
1 Redis 大概这个部署模式都清楚吗? 2 哨兵模式要不简单给我讲一下。 3 研究这个机制当时想要用在什么样一个场景,或者说为了达到什么样一个目的? 蔚来一面
1 现在有一个 Redis 集群,如果主服务器 down 掉,它会执行一个什么操作?就是怎么样挑选另外一个主服务器,大概的一个流程是什么样? 2 Redis 里面的 zset 结构了解过吗?它有什么使用场景。 3 平常使用 Redis 大概用到哪些场景? 4 Redis 实现过分布式锁吗? 拼多多一面
1 Redis 怎么持久化呢? 2 一般 Redis 会在什么场景下会使用到? 3 比如说数据存在 Redis 里面, Redis 怎么做那种序列化的呢?对于复杂的那种类型怎么来支持呢? 4 比如说自己写个类型,那redis对这种复杂的怎么来做存储?怎么来做序列化呀? 5 你觉得 Redis 他会用Json去序列化吗? 6 哈希表有什么优点? 7 随着元素的插入,哈希表的效率其实会变低的,那这个时候需要去做rehash,那rehash怎么rehash呢? 8 hash之后可能会有碰撞。你了解哪些算法?可能说哈希的那种碰撞率会比较低呢。 ● hashmap中对key的hash值做位运算,二次散列。思想是将数据足够散列来降低碰撞概率 ● redis的分片cluster模式下,基于CRC16+哈希槽的动态扩缩容的哈希算法。
9 现在让你设计一个哈希算法,比如说可能在有千亿级别的数据的时候,想要哈希,用hashmap,哈希算法肯定是有冲突的,但怎么样设计一种哈希算法,保证在有迁移数据的时候,我们还是能够维持一个非常低的一个冲突的概率,或者是就是没有冲突。(真的想骂面试官,这种题hashmap都有问题,你让我设计一个没问题的。。。脑子不好) ● 我回答:拉链法,空间充足的情况下将数据散落到各个槽位上。
10 面试官继续问假如又要求空间填充率又很高,怎么办? ● 我说想到了布隆过滤器。 ● 补充:布隆过滤器往往就是对哈希表在空间上的优化。因为哈希表需要存储数据的全量,但是布隆过滤器只是存储0101,效果是相同的,可以快速判断一个元素在集合中是否存在。但需要注意布隆过滤器有误判率。
11 布隆过滤器一般用在什么场景下? ● 缓存穿透 ● 快速判断一个元素是否存在集合中 米哈游二面
1 对数据库的压力访问,你觉得有什么样的优化方式吗? 2 提到放到Redis,那数据一致性我们一般怎么处理呢? 3 先更新库,再删缓存这种,就是它为什么会出现不一致呢? 4 考虑延时双删的话,为什么还要考虑这种先删缓存呢?它有什么好处吗?或者它适合什么场景? 用友一面
1 Redis的集群模式? 2 用 Redis 作为缓存直接击穿到数据库的主要原因是啥?以及解决方案? 元戎启行一面
1 Redis 是怎么保证高可用的?以及它操作时的安全的? 2 Redis 当前有哪些问题啊?在使用时候需要注意哪些点? 3 redis的cluster模式下,比如说想再加个分片,如果用哈希,它的数据会不会全部混乱的?重新全部需要缓存一遍。 4 Redis 的分布式锁,如果某一个线程在用这个分布锁,突然挂了,服务是怎么去释放的?它是怎么做到的? 5 黑马点评中的乐观锁,是怎么用的? 6 执行sql后的影响函数? Tplink二面
1 缓存问题介绍一下,包括缓存击穿、缓存穿透、缓存雪崩。都是因为什么原因造成的?一般的解决方案都有哪些? 2 说到缓存击穿中的逻辑过期方案。面试官问:过期的时间很久,会导致有一段时间数据不同步嘛,一般怎么处理? 北京博瑞一面
1 Redis的 5 种数据结构? 2 讲一下Zset用到的跳表的数据结构,讲一下? 3 redis的zset采用跳表的机制,jdk中hashmap采用红黑树,数据库的索引采用b+树,是怎么理解各自的考量的?
回复