当前位置:首页 > 开发语言 > 正文

redis面试中常被问到的,redis怎么保证数据一致性

redis面试中常被问到的,redis怎么保证数据一致性

其实redis面试中常被问到的的问题并不复杂,但是又很多的朋友都不太了解redis怎么保证数据一致性,因此呢,今天小编就来为大家分享redis面试中常被问到的的一些知识...

其实redis面试中常被问到的的问题并不复杂,但是又很多的朋友都不太了解redis怎么保证数据一致性,因此呢,今天小编就来为大家分享redis面试中常被问到的的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

字节跳动资质审核面试流程

第一面主要考察基础,先简单自我介绍,以及介绍一下项目,然后开始考察基础。

TCP相关基础知识

问题1:请详细描述三次握手和四次挥手的过程

要求熟悉三次握手和四次挥手的机制,要求画出状态图。

缓存和数据库的基础知识

问题1:描述一下redis有哪些数据结构。

基础的数据结构有5种,String/List/Hash/Set/Zset,还答了高级数据结构HyperLogLog/BitMap/BloomFilter/GeoHash。面试官还问了BloomFilter的原理以及Zset的实现原理,主要讲解跳跃表;延时队列如何实现,分布式锁原理。

问题2:MySQL场景题目

面试官提供场景,要求写出查询SQL,考察联合语句,如何分页以及复杂语句的优化。

?

第二面:

第二面是电话面试,主要考察项目,通过项目提出基础问题。时间30分钟。

之前有微服务经验,面试官就详细问到微服务的架构、框架的实现、服务治理、分布式一致性等问题。

之前有玩过日志监控系统,首先还是考察架构,ELK的相关知识,重点描述Elasticsearch的一些架构原理,比如倒排索引的原理。

问消息队列的相关知识,接触过Kafka,问了Kafka中消息可以被多个消费者消费吗?;以及选举机制和HW机制。

开放性问题,讲一个之前遇到的问题,并如何解决的。这个描述生产过程中运行的问题,并描述排查问题。

裸写算法

二叉树多个节点的最近公共祖先

第三面、第四面

第三面和第四面是组长和总监面试,聊解题思路和项目,这二面的特点是根据项目经验问相关的问题,要求广度,尤其考察架构广度,会将目前的项目量级扩大几十倍,重新设计架构,同时涉及到一些压力面试。

神奇面试官一般都问什么

1.神奇面试官一般会问关于应聘者个人背景、经历和技能方面的问题,以了解他们是否适合公司的需求。2.原因是因为公司需要找到最适合的人才来完成工作,并且面试官需要尽可能了解应聘者的背景和技能,以便作出最佳决策。3.神奇面试官也可能会问一些与公司文化、价值观和团队合作有关的问题,以确保应聘者与公司的价值观相符,能够与团队融洽合作。此外,他们也可能会问一些案例和场景问题,以测试应聘者的解决问题和承受压力的能力。

JAVA面试中常常问到的无锁CAS是什么

在缓存领域有一对奇葩,多线程的缓存和单线程的redis,而两者的性能是差不多的,之所以redis能凭借单线程提供强大的性能并且线程安全操作:

一是不存在多线程直接切换的资源开销,

二是大部分的指令都是原子的,原子的指令拥有更高的效率,并且保证线程安全!

在java中的原子操作主要封装在并发包下,以Atomic打头的类中,如下截图:

观察这些类发现,其中的原子操作主要依赖于UnSafe包中类似unsafe.compareAndSwapInt这样的算法,取单词首字母,也即是CAS操作,这也是实现无锁操作保证线程安全的基石,乐观锁因为建立在CPU的底层指令原子操作,效率比起同步锁相当高;

CAS:compare,and,swap:顾名思义,就是比较并交换,这属于一种乐观锁思想,悲观锁通常是把共享资源的持有者当做互斥的,由此保证针对共享资源操作的只会是持有锁的程序!

而乐观锁之所以称为乐观,就是假设数据在操作之前都是没有被修改过的,如果已经被修改过,则不进行操作,降低了阻塞的可能性!

CAS的思想在sql操作中常常用到,比如未付款status=1,已付款status=2,sql:updatesetstatus=2,version=version+1whereid=xxandstatus=1andversion=${version},即是如果是还未付款的状态则付款,如果已经付过款(status=2),则操作失败;

但是CAS也存在问题:

①,ABA问题,比如上面的sql,如果status是会从1(A)到2(B)再到1(A)的,那么就会存在线程一已经从1->2->1了,而线程二还认为整个数据都没有变过,继续修改数据;

②,性能浪费:CAS的操作依赖于自旋(不断循环到满足条件),如果条件一直不满足,则CPU开销一直存在;

下面以AtomicInteger为例说下CAS的应用类特性:

1,从构造器和get,set方法来看,处理的值需要修饰为内存可见的valatile。

2,大多数的方法都是使用了unsafe中的compareAndSwap方法,都是native方法,说明是底层封装;

直接看案例,如下截图:

案例中的AtomicInteger,如果改成Integer,结果基本都会小于100,说明数据计算错误了!

CAS作为AQS模型的基石,两者都是面试过程中常常问到的,下次再讲AQS,喜欢的童鞋欢迎点赞关注。。

redis面试必问的三大问题

三大问题:

1.缓存穿透

2.缓存击穿

3.缓存雪崩

详细介绍:

缓存穿透正常情况下,如果用户在redis缓存中没有查询到自己想要的数据,就会去mysql数据库中查询。

面试官都爱问的Redis是如何帮我们解决各种项目难题的

太多了

缓存内存和网络的速度远远大于传统硬盘的速度,网站开发中常用的会话缓存。热点数据缓存。

计数器网站访问量累加器

消息队列生产者消费者模式进行数据异步处理

发布订阅五大数据结构且支持数据持久化服务。

【面试题】dubbo的工作原理,注册中心挂了可以继续通信吗

说一下的dubbo的工作原理?注册中心挂了可以继续通信吗?说说一次rpc请求的流程?面试官心理分析

MQ、ES、Redis、Dubbo,上来先问你一些思考性的问题、原理,比如kafka高可用架构原理、es分布式架构原理、redis线程模型原理、Dubbo工作原理;之后就是生产环境里可能会碰到的一些问题,因为每种技术引入之后生产环境都可能会碰到一些问题;再来点综合的,就是系统设计,比如让你设计一个MQ、设计一个搜索引擎、设计一个缓存、设计一个rpc框架等等。

那既然开始聊分布式系统了,自然重点先聊聊dubbo了,毕竟dubbo是目前事实上大部分公司的分布式系统的rpc框架标准,基于dubbo也可以构建一整套的微服务架构。但是需要自己大量开发。

当然去年开始springcloud非常火,现在大量的公司开始转向springcloud了,springcloud人家毕竟是微服务架构的全家桶式的这么一个东西。但是因为很多公司还在用dubbo,所以dubbo肯定会是目前面试的重点,何况人家dubbo现在重启开源社区维护了,捐献给了apache,未来应该也还是有一定市场和地位的。

既然聊dubbo,那肯定是先从dubbo原理开始聊了,你先说说dubbo支撑rpc分布式调用的架构啥的,然后说说一次rpc请求dubbo是怎么给你完成的,对吧。面试题剖析dubbo工作原理

第一层:service层,接口层,给服务提供者和消费者来实现的

第二层:config层,配置层,主要是对dubbo进行各种配置的

第三层:proxy层,服务代理层,无论是consumer还是provider,dubbo都会给你生成代理,代理之间进行网络通信

第四层:registry层,服务注册层,负责服务的注册与发现

第五层:cluster层,集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务

第六层:monitor层,监控层,对rpc接口的调用次数和调用时间进行监控

第七层:protocal层,远程调用层,封装rpc调用

第八层:exchange层,信息交换层,封装请求响应模式,同步转异步

第九层:transport层,网络传输层,抽象mina和netty为统一接口

第十层:serialize层,数据序列化层工作流程

第一步:provider向注册中心去注册

第二步:consumer从注册中心订阅服务,注册中心会通知consumer注册好的服务

第三步:consumer调用provider

第四步:consumer和provider都异步通知监控中心

redis面试中常被问到的的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于redis怎么保证数据一致性、redis面试中常被问到的的信息别忘了在本站进行查找哦。

最新文章