当前位置: 首页 > news >正文

【5】阿里面试题整理

[1]. 介绍一下ZooKeeper

ZooKeeper是一个开源的分布式协调服务,核心功能是通过树形数据模型(ZNode)和Watch机制,解决分布式系统的一致性问题。

它使用ZAB协议保障数据一致性,典型场景包括分布式锁、配置管理和服务注册发现、集群管理等。

ZooKeeper通常以集群的方式部署,由多个ZooKeeper服务器组成。集群中有一个领导者服务器,负责处理客户端的写请求,并将数据同步到其他服务器;其他服务器是追随者,负责处理客户端的读请求。

[2]. ZAB协议

ZAB协议是一种基于Paxos算法的改进协议,专门为ZooKeeper这种分布式协调服务而设计,保证了在ZooKeeper集群中,数据变更能够以原子性和顺序性广播到所有节点,从而实现最终一致性。

ZAB协议主要有两种模式:消息广播模式崩溃恢复模式

在消息广播模式下,Leader接收到客户端的写请求后,会将这个请求封装成一个Proposal广播给所有Follower。Follower收到Proposal后,写入本地事务日志,并向Leader发送ACK确认。当Leader收到超过半数的Follower的ACK后,就认为这个Proposal已经提交,然后Leader会向所有Follower发送Commit命令。

在崩溃恢复模式下,集群会进行Leader选举,选出一个新的Leader,然后新的Leader会从事务日志中恢复数据,并确保所有节点的数据保持一致。

[3]. ZooKeeper的选举机制

ZooKeeper使用一种Leader选举机制来保证集群的高可用性。

当集群启动或Leader服务器发生故障时,就会触发选举。选举过程中,每个服务器都会将自己作为候选Leader进行投票,投票信息包括服务器ID和事务ID(zxid)。

服务器会将自己的投票广播给其他服务器,并接收其他服务器的投票。在接收到投票后,如果发现收到的投票信息中的zxid比自己的大,或者zxid相同但服务器ID比自己的大,则更新自己的投票信息。

最后,每个服务器统计收到的投票信息,如果某个服务器收到了超过半数服务器的投票,则该服务器成为新的Leader。选举过程中,zxid最大的服务器会被优先选为Leader,如果多个服务器的zxid相同,则服务器ID较大的服务器会被选为Leader。

[4]. Memcached的缓存机制

Memcached是一个高性能的分布式内存对象缓存系统,用于加速动态Web应用程序。

Memcached使用哈希表来存储键值对,并使用slab分配机制来管理内存。当Memcached的内存空间不足时,会使用LRU算法来淘汰最近最少使用的数据。

在分布式缓存方面,Memcached通常使用一致性哈希算法来实现数据的分片。

Memcached具有高性能、简单易用、可扩展性强等优点,但同时也存在无持久化机制和内存限制等缺点

[5]. 基本数据类型和包装类的区别

基本数据类型存储在栈中,效率高,占用内存少;包装类存储在堆中,需要更多的内存。

基本数据类型功能简单,只能进行基本运算;包装类提供了丰富的方法,方便操作。

基本数据类型主要用于数值运算等场景;包装类通常用于需要对象的地方,比如集合框架,或者需要使用包装类提供的方法,以及进行类型转换等。

http://www.lryc.cn/news/533959.html

相关文章:

  • 计算机毕业设计hadoop+spark+hive物流预测系统 物流大数据分析平台 物流信息爬虫 物流大数据 机器学习 深度学习
  • Wpf美化按钮,输入框,下拉框,dataGrid
  • 搜索插入位置:二分查找的巧妙应用
  • Cocos2d-x 游戏开发-打包apk被默认自带了很多不必要的权限导致apk被报毒,如何在Cocos 2d-x中强制去掉不必要的权限-优雅草卓伊凡
  • 自动化xpath定位元素(附几款浏览器xpath插件)
  • String类(6)
  • 动态表格html
  • ZU47DR 100G光纤 高性能板卡
  • mysql8.0使用pxc实现高可用
  • Kotlin 使用 Chrome 无头浏览器
  • Arbess基础教程-创建流水线
  • vscode安装ESP-IDF
  • 第31周:文献阅读
  • GenAI + 电商:从单张图片生成可动态模拟的3D服装
  • 进程(1)
  • ChatGPT搜索免费开放:AI搜索引擎挑战谷歌霸主地位全面分析
  • hadoop之MapReduce:片和块
  • GitPuk快速安装配置教程(入门级)
  • 在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。
  • 深入浅出Java数组:从基础到高阶应用
  • 基于 Nginx 的 CDN 基础实现
  • 讲人话的理解ai学习原理
  • Spring boot整合quartz方法
  • 网站改HTTPS方法
  • 数据中台是什么?:架构演进、业务整合、方向演进
  • Java Stream API:高效数据处理的利器引言
  • qml之Text 组件显示当前时间
  • 两栏布局、三栏布局、水平垂直居中
  • Hanoi ( 2022 ICPC Southeastern Europe Regional Contest )
  • Matplotlib基础01( 基本绘图函数/多图布局/图形嵌套/绘图属性)