2022年Java秋招面试,程序员求职必看的ZooKeeper面试题

2023-10-28

前言

大公司面试特别喜欢问 Zookeeper,因为 Zookeeper 确实是足够的优秀,比如他的 Paxos 算法,Zab 协议,Leader 选举策略,分布式锁等都是大厂面试的高频考点。我们不仅需要熟悉使用 Zookeeper,更要了解他的底层原理,这样不论是工作还是学习都是游刃有余。

2022秋招面试资料合集白嫖:大家可以扫二维码免费领取

小编分享的这份2022年Java秋招备战面试题总计有1000多道面试题,包含了MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Java 并发编程、Java基础、Spring、微服务、Linux、Spring Boot 、Spring Cloud、RabbitMQ、kafka等16个专题技术点,都是小编在今年金三银四总结出来的面试真题,已经有很多粉丝靠这份PDF拿下众多大厂的offer,今天在这里总结分享给到大家!【持续更新中!】

1、ZooKeeper 面试题?

ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群 中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。

Zookeeper 保证了如下分布式一致性特性

1、顺序一致性

2、原子性

3、单一视图

4、可靠性

5、实时性(最终一致性)

客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听器,这个监听器也是由所连接的 zookeeper 机器来处理。对于写请求,这些请求会同时发给其他 zookeeper 机器并且达成一致后,请求才会返回成功。因此,随着 zookeeper 的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。

有序性是 zookeeper 中非常重要的一个特性,所有的更新都是全局有序的,每个更新都有一个唯一的时间戳,这个时间戳称为 zxid(Zookeeper Transaction Id)。而读请求只会相对于更新有序,也就是读请求的返回结果中会带有这个zookeeper 最新的 zxid。

2、ZooKeeper提供了什么?

1、文件系统

2、通知机制

3、Zookeeper文件系统

在这里插入图片描述

4、ZAB协议?

5、四种类型的数据节点 Znode

4、EPHEMERAL_SEQUENTIAL-临时顺序节点

基本特性同临时节点,增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。

6、Zookeeper Watcher 机制 – 数据变更通知

在这里插入图片描述

工作机制

1、客户端注册 watcher

2、服务端处理 watcher

3、客户端回调 watcher

Watcher 特性总结

1、一次性

无论是服务端还是客户端,一旦一个 Watcher 被触发,Zookeeper 都会将其从相应的存储中移除。这样的设计有效的减轻了服务端的压力,不然对于更新非常频繁的节点,服务端会不断的向客户端发送事件通知,无论对于网络还是服务端的

压力都非常大。

2、客户端串行执行

客户端 Watcher 回调的过程是一个串行同步的过程。

3、轻量

3.1、Watcher 通知非常简单,只会告诉客户端发生了事件,而不会说明事件的具

体内容。

3.2、客户端向服务端注册 Watcher 的时候,并不会把客户端真实的 Watcher 对

象实体传递到服务端,仅仅是在客户端请求中使用 boolean 类型属性进行了标记。

4、watcher event 异步发送 watcher 的通知事件从 server 发送到 client 是异步的,这就存在一个问题,不同的客户端和服务器之间通过 socket 进行通信,由于网络延迟或其他因素导致客户端在不通的时刻监听到事件,由于 Zookeeper 本身提供了 ordering guarantee,即客户端监听事件后,才会感知它所监视 znode发生了变化。所以我们使用 Zookeeper 不能期望能够监控到节点每次的变化。 Zookeeper 只能保证最终的一致性,而无法保证强一致性。

5、注册 watcher getData、exists、getChildren

6、触发 watcher create、delete、setData

7、当一个客户端连接到一个新的服务器上时,watch 将会被以任意会话事件触发。当与一个服务器失去连接的时候,是无法接收到 watch 的。而当 client 重新连接时,如果需要的话,所有先前注册过的 watch,都会被重新注册。通常这是完全透明的。只有在一个特殊情况下,watch 可能会丢失:对于一个未创建的 znode的 exist watch,如果在客户端断开连接期间被创建了,并且随后在客户端连接上之前又删除了,这种情况下,这个 watch 事件可能会被丢失。

7、客户端注册Watcher实现

8、服务端处理Watcher实现

9、客户端回调Watche

客户端 SendThread 线程接收事件通知,交由 EventThread 线程回调 Watcher。 客户端的 Watcher 机制同样是一次性的,一旦被触发后,该 Watcher 就失效了。

10、ACL权限控制机制

在这里插入图片描述

2、DELETE:子节点删除权限,允许授权对象删除该数据节点的子节点

3、READ:数据节点的读取权限,允许授权对象访问该数据节点并读取其数据内容或子节点列表等

4、WRITE:数据节点更新权限,允许授权对象对该数据节点进行更新操作

5、ADMIN:数据节点管理权限,允许授权对象对该数据节点进行 ACL 相关设置操作

11、Chroot特性

12、会话管理

在这里插入图片描述

ExpirationTime_ = currentTime + sessionTimeout
ExpirationTime = (ExpirationTime_ / ExpirationInrerval + 1) *
ExpirationInterval , ExpirationInterval 是指 Zookeeper 会话超时检查时间间隔,默认 tickTime

13、服务器角色

在这里插入图片描述

14、Zookeeper 下 Server工作状态

服务器具有四种状态,分别是 LOOKING、FOLLOWING、LEADING、OBSERVING。

1、LOOKING:寻找 Leader 状态。当服务器处于该状态时,它会认为当前集群中没有 Leader,因此需要进入 Leader 选举状态。

2、FOLLOWING:跟随者状态。表明当前服务器角色是 Follower。

3、LEADING:领导者状态。表明当前服务器角色是 Leader。

4、OBSERVING:观察者状态。表明当前服务器角色是 Observer。

15、数据同步

在这里插入图片描述

在这里插入图片描述

16、zookeeper是如何保证事务的顺序一致性的?

17、分布式集群中为什么会有Master?

18、zk节点宕机如何处理?

在这里插入图片描述

19、zookeeper负载均衡和nginx负载均衡区别

zk 的负载均衡是可以调控,nginx 只是能调权重,其他需要可控的都需要自己写插件;但是 nginx 的吞吐量比 zk 大很多,应该说按业务选择用哪种方式。

20、Zookeeper有哪几种几种部署模式?

部署模式:单机模式、伪集群模式、集群模式。

21、集群最少要几台机器,集群规则是怎样的?

集群规则为 2N+1 台,N>0,即 3 台。

22、集群支持动态添加机器吗?

其实就是水平扩容了,Zookeeper 在这方面不太好。两种方式:

全部重启:关闭所有 Zookeeper 服务,修改配置之后启动。不影响之前客户端的会话。

逐个重启:在过半存活即可用的原则下,一台机器重启不影响整个集群对外提供服务。这是比较常用的方式。

3.5 版本开始支持动态扩容

23、Zookeeper对节点的watch监听通知是永久的吗?为什么不是永久的?

在这里插入图片描述

24、Zookeeper的java客户端都有哪些?

java 客户端:zk 自带的 zkclient 及 Apache 开源的 Curator。

25、chubby是什么,和zookeeper比你怎么看?

chubby 是 google 的,完全实现 paxos 算法,不开源。zookeeper 是 chubby的开源实现,使用 zab 协议,paxos 算法的变种。

26、说几个zookeeper常用的命令。

常用命令:ls get set create delete 等。

27、ZAB和Paxos算法的联系与区别?

28、Zookeeper的典型应用场景



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2022年Java秋招面试,程序员求职必看的ZooKeeper面试题 的相关文章

随机推荐

  • 素数之 积

    RSA加密算法在网络安全世界中无处不在 它利用了极大整数因数分解的难度 数据越大 安全系数越高 给定一个32位整数 请对其进行因数分解 找出是哪两个素数的乘积 思路 先判断是否为素数 再跟着条件走即可 JScript代码 let line
  • TortoiseSVN客户端重新设置用户名和密码

    在第一次使用TortoiseSVN从服务器CheckOut的时候 会要求输入用户名和密码 这时输入框下面有个选项是保存认证信息 如果选了这个选项 那么以后就不用每次都输入一遍用户名密码了 不过 如果后来在服务器端修改了用户名密码 则再次检出
  • RabbitMQ的交换机(主题模式)学习笔记

    视频地址 之前我们学习了扇出模式和直接模式 但是他们呢只能完成广播和到指定的某一个routingkey 但是如果我们想要像类似于正则表达式那样完成匹配即可接收就不行了 那么就可以使用主题模式来完成这个需要 主题模式 与扇出和直接模式差不多
  • Win10怎么添加开机启动项?Win10添加开机自动运行软件三种方法

    Win10管理开机启动项的方法相信大家已经非常熟悉 msconfig命令各系统都通用 那么很多用户发觉Win10和Win7 XP等系统不同 没有启动文件夹 那么我们怎么添加开机启动项呢 如晨软件或程序没有开机启动设置的话 是的 在Win10
  • LIMA和QLoRA论文解读

    LIMA Less Is More for Alignment paper https arxiv org abs 2305 11206 Meta在2023年5月发布了论文 LIMA Less Is More for Alignment 基
  • 容器化部署(prometheus+grafana)监控k8s集群

    prometheus images 下所有镜像导入到私有仓库 192 168 92 160 拷贝所有镜像到 master 的 images 目录下 root master images for i in gz do docker load
  • undefined reference to `vtable for’”问题的原因及解决方法

    在使用qt开发新项目时候 添加新的类是非常频繁的操作 有时候 手快 尤其程序员非常迷恋快捷键 doge 会不小心跳过一些关键步骤 导致出现一些问题 例如 undefined reference to vtable for 错误就很常见 QT
  • 获取百度搜索的返回结果

    基于request获取百度返回结果 本文基于request进行访问有可能导致SSLError 这有可能是由于本文是访问https所导致的 但这篇博客较完整地介绍了对html使用etree json对返回结果进行解析的操作 可以借鉴 Pyth
  • [Android studio] 第17节 Adapter适配器

    目录 一 Adapter是什么 二 Adapter详解 一 Adapter是什么 在 Android 开发中 适配器 Adapter 是一个关键的组件 用于将数据源绑定到界面上的视图组件 例如 ListView RecyclerView S
  • (转)自旋锁(spinlock) 解释得经典,透彻

    自旋锁与互斥锁有点类似 只是自旋锁不会引起调用者睡眠 如果自旋锁已经被别的执行单元保持 调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁 自旋 一词就是因此而得名 由于自旋锁使用者一般保持锁时间非常短 因此选择自旋而不是睡眠是非常必
  • docker容器启动报错

    启动容器报错 standard init linux go 178 exec user process caused no such file or directory 报错背景 我需要启动一个golang项目的容器 然后在我的centos
  • mysql中binlog 参数设置 启用binlog 清理binlog mysqlbinlog使用 mysqldump + mysqlbinlog用于数据备份和恢复 代码实现处理binlog

    文章目录 一 二进制日志格式 Binary Logging Formats 1 1 binlog介绍 1 2 启用binlog 1 3 binlog几十种配置说明 1 4 清理binlog日志 1 5 sql命令查看配置 二 mysqlbi
  • AI算力爆发,新职业出现,你发现了吗?

    AI算力 听起来高大上的名字它究竟是什么呢 人工智能 Artificial Intelligence 英文缩写为AI 人工智能 AI 是一种模拟人类智能的技术 它是利用计算机科学和相关技术研究 开发的一种智能型系统 人工智能技术在现代社会中
  • Flutter正在被悄悄放弃?浅析Flutter的未来

    在现如今快速迭代的开发大环境下 能够实现 一套代码 多端运行 是众多互联网开发团队的梦想 阿里 腾讯也都做过很多尝试 美团也一样 重点说说美团的开发团队 他们做了非常多跨平台开发框架的尝试 React Native PWA Weex 等等
  • elementUI+vue实现下拉选既能根据字典项查询下拉选项又能根据字典码查询下拉选项

    需求场景 elementUI vue实现下拉选既能根据字典项查询下拉选项又能根据字典码查询下拉选项 需求分析 一般是能满足查询字典项的需求就可以 我们通常会用elementUI自带的一个查询字典项的方法 也就是在elementUI框架中的
  • SpringMVC 详细教程及源码讲解

    目录 一 SpringMVC简介 1 什么是MVC 2 什么是SpringMVC 3 SpringMVC的特点 二 SpringMVC入门案列 1 开发环境 2 创建Maven工程 2 1 添加web模块 2 2 引入依赖 3 配置web
  • python学习 - copy模块的浅复制(copy)与深复制(deepcopy)

    python学习 copy模块的浅复制 copy 与深复制 deepcopy 简介 copy copy 详解 copy deepcopy 详解 简介 在使用列表或者字典进行传递参数的时候 可能会遇到函数改变了列表的值 但是不希望印象原来列表
  • C语言实现一元多项式加法运算

    说到一元多项式相加 相信很多小伙伴都不会陌生 甚至 合并同类项 已经要脱口而出了 因为上节课本人就是这样的哈哈 回到正题 一元多项式的加法运算 大概是这样的 知道怎么操作了之后就来看看如何储存一元多项式叭 很明显为了方便操作 而且每一项都含
  • CV 经典主干网络 (Backbone) 系列: CSPNet

    CSPNet 引言 1 模型介绍 2 CSPNet的优点 2 1 减少了模型的参数量和FLOPS数值 2 2 解决了梯度信息的重复问题 2 3 减少内存流量 3 融合策略 总结 引言 对于传统深度学习 总是想达到一个增加速度同时精度提高的效
  • 2022年Java秋招面试,程序员求职必看的ZooKeeper面试题

    前言 大公司面试特别喜欢问 Zookeeper 因为 Zookeeper 确实是足够的优秀 比如他的 Paxos 算法 Zab 协议 Leader 选举策略 分布式锁等都是大厂面试的高频考点 我们不仅需要熟悉使用 Zookeeper 更要了