首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
每日一求
南京航空航天大学 Java
发布于安徽
关注
已关注
取消关注
@、烟雨:
面试官:Zookeeper是什么,它有什么特性与使用场景?
文章目录 一、前言 二、面试 三、Zookeeper是什么 四、Zookeeper有哪些数据结构 五、Zookeeper有哪些核心功能 六、Zookeeper有哪些权限控制 七、Zookeeper数据持久化 八、总结 一、前言 作为一名Java程序员,Zookeeper底层的一些原理是我们不必学会就可以搬砖工作的一种技能点,但是为什么还要讲一下呢?难道就是为了浪费大家1分钟的宝贵时间,一个人1分钟,50万人就是1年,5000万人就是100年,赚了,以一己之力成功搞挂一个人(血赚)。 当然不是,并且小奇的文章也没有那么多人看,最多也就浪费个肾吧。 学习Zookeeper底层原理是因为面试官要问啊!,所以我们就要学,什么?不实用的你不学?那我 可要使劲学啦,到时候面试官只要w我不要你。 至于你问为什么面试官要问Zookeeper底层原理呢,这个。。。我把这次机会留给你,下次你面试的时候面试官问:“讲一下Zookeeper底层原理”。你:“面试官你好,请问为什么你要问Zookeeper底层原理呢,你给我台电脑,我五分钟给你搭建好图书管理系统他不香吗,咱们键盘上见真章”。 二、面试 在一个晴朗的周日,我来到了一个陌生的园区(别问为什么是周日,问就是997,不过为了填饱肚子的打工人,只能明知山有虎、偏向虎山行),坐在陌生的会议室,等待HR小姐姐去叫面试官,此时我的心情和各位小伙伴一样五味杂陈,担心面试官问的会不会很难?问到我的知识盲区我该怎么办?一会自我介绍的时候要不要吹一下我和小奇的关系? 一位英俊潇洒,眼神犀利的面试官走了进来,看到他那犀利、仿佛能看穿一切的眼神 ,我在想要不然一会就不要20k了,要8k得了,这个面试官一看就不好糊弄啊,但是我想起来我来之前刚看了的趣学编程系列,我已经完全学会了的精髓,我顿时就来了底气,决定一会要30k,不给就赖着不走(哈哈) 面试官:烟雨是吧,带简历了吗? 我:没带,现在彩印两块一张,我简历五张,每次面试都要花费十块,我朋友说了还没工作就先让你掏钱的工作不要去。 面试官:。。。那你靠什么来征服我,让我录用你 我:气质? (此时面试官并没有叫保安,而是从门后拿出了恭候我多时的棍子,我瞬间怂了) 我只好从我的双肩包中拿出了我上午从其他公司面试官手中要回的简历,上午的情形是这样的。 上午的面试官:今天的面试就到这吧,回去等通知吧! 我:面试官你好,如果贵公司不打算录取我的话,能不能把我的纸质简历还给我,我下午还有一家面试。 上午的面试官:我说你的简历怎么皱皱巴巴,原来你一直在循环利用啊!这个症状出现多久了? 我:半拉月了。。。 (当我把皱皱巴巴的简历交给面试官后,这场面试才得以继续进行。。。) 三、Zookeeper是什么 面试官:我看你简历上写的精通Zookeeper?(哼,面试官轻蔑的一笑) 我:本来不想写精通的,但是同行们抬爱,非逼着写,但是也无可厚非,虽说没有到达炉火纯青,但是也差不多登峰造极了吧。 面试官:呵呵、那你先说一说Zookeeper是什么吧 我:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,主要为了解决分布式架构下数据一致性问题,典型的应用场景有分布式配置中心、分布式注册中心、分布式锁、分布式队列、集群选举、分布式屏障、发布/订阅等场景。 面试官:嗯,Zookeeper是怎样的一个数据结构呢? 我:Zookeeper是一个类似于文件系统的数据结构,最外层我们可以想象成一个大的文件夹,里面都是一些小的文件夹。 四、Zookeeper有哪些数据结构 面试官:嗯,Zookeeper有几种常用的数据格式呢? 我:Zookeeper中每一个子目录项都是一个znode(目录节点),这些目录节点和我们普通的目录一样可以新建、删除、修改,我们常用的主要有四种类型的znode。 1、持久化目录节点: 客户端与zookeeper断开连接后,该节点依旧存在,只要不手动删除该节点,他将永远存在。 2、持久化顺序编号目录节点: 客户端与zookeeper断开连接后,该节点依旧存在,只是zookeeper给该节点名称进行顺序编号。 3、临时目录节点: 客户端与zookeeper断开连接后,该节点被删除。 4、临时顺序编号目录节点: 客户端与zookeeper断开连接后,该节点被删除,只是zookeeper给该节点名称进行顺序编号。 五、Zookeeper有哪些核心功能 面试官:嗯,Zookeeper有哪些核心的功能呢? 我:zookeeper有监听通知机制,如果对某个节点进行监听,当这个节点被删除,或者被修改时,监听方会感知到修改消息。 面试官:嗯,既然zookeeper有监听机制,那么可以监听到几种类型的变化呢? 我:可以监听到七种类型变化: 1、None:连接建立事件 2、NodeCreated:节点创建 3、NodeDeleted:节点删除 4、NodeDataChanged:节点数据变化 5、NodeChildrenChanged:子节点列表变化 6、DataWatchRemoved:节点监听被移除 7、ChildWatchRemoved:子节点监听被移除 面试官:我们在开发中使用Synchronized就可以保证线程安全了,为什么还需要使用zookeeper来实现分布式锁呢? 我:如果我们是单机情况下也就是只有一个进程的情况下使用Synchronized是可以保证线程安全的。但是分布式情况下是多个不同的进程,而不是一个进程里面不同的线程,所以Synchronized是无法保证多个进程安全的。 面试官:zookeeper节点有哪些重要信息呢,怎么进行查看? 我:zookeeper节点可以通过stat命令来查看主要信息,其中信息有: 1、cZxid:创建znode的事务id(Zxid的值)。 2、mZxid:最后修改znode的事务id。 3、pZxid:最后添加或删除子节点的事务id(子节点列表发生变化才会发生改变)。 4、ctime:znode创建时间。 5、mtime:znode最近修改时间。 6、dataVersion:znode的当前数据版本。 7、cversion:znode的子节点结果集版本(一个节点的子节点增加、删除都会影响这个版本)。 8、aclVersion:表示对此znode的acl版本。 9、ephemeralOwner:znode是临时znode时,表示znode所有者的sessionid,如果znode不是临时节点,则该字段设置为零。 10、dataLength:znode数据字段的长度。 面试官:zookeeper创建节点,和监听节点有哪些命令? 我: 1、创建持久节点:create /节点名称 2、创建持久顺序节点:create -s /节点名称 3、创建临时节点:create -e /节点名称 4、创建临时顺序节点:create -e -s /节点名称 5、监听节点:get -w /节点名称 六、Zookeeper有哪些权限控制 面试官:zookeeper有哪些权限控制呢? 我:应该是按照大小个吧,谁个高谁说了算。 面试官:你特么找打是吧,数据那特么有大小个。。。 我:zookeeper有ACL( Access Control List )权限控制,可以控制节点的读写操作,保证数据的安全性,不然的话谁都可以创建和删除节点,那不就乱了套了。 面试官:ACL权限设置有几部分组成呢? 我:有三部分组成,分别是权限模式、授权对象、权限信息。 面试官:能具体说一说这三部分都代表什么吗? 我:权限模式: 就是zookeeper服务器进行权限验证的方式,比如手机解锁是用指纹还是用密码呢,如果用密码,知道密码的都可以解锁你的手机,如果用指纹,只有你自己的手指头可以解锁。所以权限模式大体分为两种类型: 1、范围验证: 范围就是zookeeper可以针对一个ip或者一段ip地址授予权限,相当于指纹解锁,我给我一个手指头,或者所有的脚指头都授予权限。 2、口令验证: 可以理解为用户名密码的方式,这种就相当于密码解锁了,知道了用户名密码后所有的人都相当于授予了权限。 授权对象: 授权对象就是把权限授予给谁,如果是范围验证方式,那么授权对象就是ip地址,如果是口令验证,授权对象就是用户名。 授权信息: 授权信息就是指我们具体的权力是什么,比如我们解锁手机后可以打游戏还是可以听歌,还是可以用手机砸核桃呢。 zookeeper中定义好的权限有5种: 1、数据节点(c:create)创建权限,授予权限的对象可以在数据节点下创建子节点。 2、数据节点(w:wirte)更新权限,授予权限的对象可以更新该数据节点。 3、数据节点(r:read)读取权限,授予权限的对象可以读取该节点的内容以及子节点的列表信息。 4、数据节点(d:delete)删除权限,授予权限的对象可以删除该数据节点的子节点。 5、数据节点(a:admin)管理者权限,授予权限的对象可以对该数据节点体进行ACL权限设置。 面试官:我们怎么查看和设置某个节点的ACL权限信息呢 我:可以通过getAcl来获取某个节点的权限信息,通过setAcl来设置某个节点的权限信息。 七、Zookeeper数据持久化 面试官:zookeeper的数据是存储在内存中的吗,怎么进行持久化操作呢? 我:zookeeper和redis很像,数据都是在内存中的,持久化也是两种方式,一种是记录事务日志,一种是快照方式。 记录事务日志磁盘会进行IO操作,事务日志的不断增多会触发磁盘为文件开辟新的磁盘块,所以为了提升磁盘的效率,可以在创建文件的时候就向操作系统申请一块大一点的磁盘块,通过参数zookeeper.preAllocSize配置。 事务日志的存放地址通过zoo.cfg配置文件中的dataDir来指定。 面试官:小伙子真厉害啊,我这边没有什么要问的了,你还有什么问题要问(面试官两眼放光) 我:额。。。面试官这个我的纸质简历可以给我吗,可以不往我的简历上写写画画吗,我明天的面试还要用。 面试官:还面啥别的公司啊,就来我这吧,条件随便开 我:那就100k吧(此时面试官又拿起了他准备好的棍子) 面试官:你要是不来就给我推荐一下,让别人来我这面试一下 我:你先好好学习一下zookeeper吧,今天幸亏只是我来了。 八、总结 这里关于zookeeper还没有整理完毕,文章后面持续更新。
点赞 2
评论 2
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
03-30 18:47
门头沟学院 前端工程师
小红书前端日常实习一面
今天刚面完,有点无聊,攒一下人品,依旧自我介绍起手用的是赛码网,拷打实习和项目部分略过,都是跟@前端小圆学的vue和react简历上都写了所以仔细问了下区别,选型,场景性能优化虚拟列表强弱缓存以及使用场景http和https的区别http1.0和http1.1的主要区别实习中感觉困难的事情大文件上传skills和rules的区别,顺带聊了下mcp和平时业务中使用等场景react的fiber机制typescript的interface和type的区别算法:https://leetcode.cn/problems/valid-parentheses/?envType=study-plan-v2&a...
查看14道真题和解析
点赞
评论
收藏
分享
03-29 12:00
门头沟学院 golang
字节财经实习一面(40分钟)
1、自我介绍2、解释项目中预扣减,场景题:如果redis预扣减后的假成功,如何解决?没想过这种情况,说了消息队列的异步下单失败回滚,数据库层幂等建唯一id查订单是否存在。3、场景题:怎么做用户支付不多扣?在自我介绍的时候解释了项目的防重和状态机,又说了一遍redis预扣,lua原子操作,卡夫卡异步下单,数据库幂等表,不知道怎么答。4、对账怎么实现?没做过这部分,说了思路,应该不对。5、go的slice,array区别6、go的map是否并发安全7、redis的持久化操作8、如果AOF写的日志太多,怎么办?9、数据库索引种类,又解释了一下10、算法:lru11、反问:没问。#牛客AI配图神器#
查看10道真题和解析
点赞
评论
收藏
分享
03-10 11:23
门头沟学院 Java
现在还有不用AI写代码的人吗?
你在leetcode上练的都是死代码能力🤣
迷茫的大四🐶:
我还有古法纯手工编程呢
点赞
评论
收藏
分享
03-27 00:42
蚌埠坦克学院 C++
社招 硕1.5 wxg 面委凉经
岗位:客户端开发timeline3.4 简历给到猎头3.9 一面 3.11 二面3.13 面委笔试3.18 三场面委面,早中晚各一场前两场面委面聊的很好,被最后一个面委面试官一票否决一面1.深入讲讲工作项目中遇到的挑战和解决办法2.性能优化问题的解决思路3.在做方案设计的时候怎么做好可维护性,比如从设计模式出发4.常规八股 线程和协程的区别,协程的底层实现原理 TCP的流量控制和拥塞避免5.一道算法题 能被三整除的最大和二面1.分享一下在工作中遇到的难题2.深挖工作项目中的技术原理3.mac上对客户端进程的权限管理,内核事件的安全性如何保证4.两道算法题: 把中文数字转换为int; 给定字符串...
查看16道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
Vibe Coding开发前的 7 个关键步骤
6721
2
...
我放弃互联网大厂了。。
5398
3
...
字节实习一、二、三、HR面面经
3907
4
...
双非前端字节一面面经(难度 plus ultra 版)
3406
5
...
4.1 美团后端暑期实习面经
3293
6
...
京东零售平台产品与研发中心一面
3046
7
...
美团后端暑期实习一面
2600
8
...
美团暑期二面
2545
9
...
如何把面试主动权握在手里?Ai岗面试焚诀!
2545
10
...
我招了!当年就是被招行这么招进去的
2389
创作者周榜
更多
正在热议
更多
#
你觉得大几开始实习最合适?
#
11995次浏览
123人参与
#
你都用vibe coding做过什么?
#
6782次浏览
247人参与
#
厦门银行科技岗值不值得投
#
13135次浏览
309人参与
#
面试被问到不会的问题,你怎么应对?
#
10472次浏览
91人参与
#
你现在一天AI几次?
#
5374次浏览
70人参与
#
你见过哪些招聘隐形歧视?
#
8671次浏览
76人参与
#
开放七大实习专项,百度暑期实习值得冲吗
#
31429次浏览
591人参与
#
Vibe Coding 会干掉初级岗位吗?
#
10184次浏览
142人参与
#
AI Coding实战技巧
#
3883次浏览
97人参与
#
做完笔试后你收到面试了吗?
#
11514次浏览
105人参与
#
大厂实习和小厂实习最大的区别是什么?
#
20836次浏览
152人参与
#
如果人生可以debug你会改哪一行?
#
4619次浏览
86人参与
#
牛友の3月总结
#
14902次浏览
135人参与
#
秋招OC许愿
#
425026次浏览
2705人参与
#
金融财经春招备战日记
#
60760次浏览
253人参与
#
面试中,你被问过哪些奇葩问题?
#
91728次浏览
856人参与
#
uu们,春招你还来吗?
#
51672次浏览
253人参与
#
面试吐槽bot
#
182892次浏览
874人参与
#
节后第一天上班,我的精神状态
#
19925次浏览
139人参与
#
降低公积金和取消房补怎么选
#
29626次浏览
90人参与
#
七猫笔试
#
6118次浏览
43人参与
#
Claude Code泄露源码
#
3719次浏览
56人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务