朋友去面试遇到Redis的夺命12问,面试过程让他至今难忘。

事故发生:

昨天一朋友去面试,其中有一幕场景他是永生难忘,因为他就是在这被刷了哈哈哈哈哈哈。
当时回来跟我们讲,前面问的JVM和MySQL回答的还好,到了Redis他就有点小慌了,然后独自承受了面试官的夺命连环12问,他回来后就是下面的表情。
在这里插入图片描述

正片开始

场景回放:

面试官:

我看你每个项目中都用到了Redis,你能说说你是怎样使用Redis的吗?

小A同学:

主要用来做缓存,分布式Session, 阅读量/点赞数统计。

面试官:

嗯,好的,Redis如何做持久化的?

小A同学:

bgsave做全量持久化到RDB二进制文件中,aof做增量持久化,存储的是文本协议数据。

面试官:

它们的优缺点呢?

小A同学:

rdb二进制文件启动加载速度可以更快,aof要重放命令,所以速度比较慢。(略骄傲…)
在这里插入图片描述
面试官:

Redis持久化期间,主进程还能对外提供服务吗?

小A同学:

能 !

面试官:

那Redis如何处理新写入的数据呢,这个数据也会直接进行持久化吗?

小A同学:

这个…可能吧…(开始慌了)

面试官:

Reids可以设置最大内存大小,如果数据达到了内存最大限制,Redis如何处理呢?

小A同学:

可以配置淘汰策略 LRU 或者 LFU 淘汰策略。

面试官:

Redis 的LRU算法实现原理,可以讲讲吗?

小A同学:

这个不太清楚。
在这里插入图片描述
面试官:

Redis 核心数据类型有哪些?

小A同学:

string, hash, list, set, zset.

面试官:

存储数据用 string 类型 和 hash 类型,你是如何选择的呢?

小A同学:

string 对大量字段的对象中的某个数据进行获取,需要进行整体的数据获取,在客户端完成反序列化,而hash可以获取指定字段获取数据。所以根据访问需求来选择。

面试官:

还有其他的考虑吗?

小A同学:

没有

面试官:

zset 底层的实现原理有了解过吗?

小A同学:

好像是跳表实现的吧!

面试官:

你能讲讲它的实现原理以及时间复杂度分析吗?

小A同学:

这个不太清楚。(内心焦急)
在这里插入图片描述
下面这个链接,暗号: csdn 。加入即可获得。
就是这个,点它

面试官:

你能说说缓存穿透是怎么回事吗?

小A同学:

要查询的数据,缓存中不存在,直接打到了数据库,这种请求如果很多的话,全都穿透到数据库, 就会导致数据库奔溃,

面试官:

解决方案呢?

小A同学:

可以用布隆过滤器来阻挡。

面试官:

布隆过滤器的实现原理是什么?能讲讲么?

小A同学:

不清楚。(放弃抵抗)

面试官:

好的,感谢你参加我们公司的面试,咱们今天就先到这里 (职业微笑)

结束后话:

是很奇怪,为什么面试老是遇到Redis问题?

Redis的底层设计原理明明懂一些,可就是说不到点子上?

以后还遇到这些Redis的面试题可怎么办?想想就慌有没有!

别忙着慌,我也有一哥们一个月里拿了8个一线大厂offer,就是在面试前看了一波面试资料,恶补了一把底层原理。

之前通过一些大厂的朋友要到了他们内部的Java面试题,资料难得,而且还是近一年的真实面试题。

内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_48011329/article/details/107541841
今日推荐