还剩14页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
java分布式面试题和答案
一、选择题(本题型共15题,每题2分,共30分)
1.以下哪项不是分布式系统相比单体系统的核心优势?()A.高可用性B.易扩展性C.开发复杂度低D.容错性强
2.CAP定理中,C指的是()A.可用性(Availability)B.一致性(Consistency)C.分区容错性(Partition tolerance)D.性能(Performance)
3.在分布式系统中,“脑裂”(Split Brain)问题通常发生在哪个协议的实现中?()A.Paxos协议B.Raft协议C.2PC协议D.3PC协议
4.以下哪种负载均衡策略是根据后端服务的当前负载(如CPU、内存使用率)动态调整分配流量?()A.轮询(Round Robin)B.加权轮询(Weighted RoundRobin)C.最小连接数(Least Connections)D.IP哈希(IP Hash)
5.分布式锁的实现方式中,以下哪种方式可能存在“死锁”风险?()A.Redis(SET NXEX)B.ZooKeeper(临时有序节点)C.数据库乐观锁D.以上都不会
6.微服务架构中,服务之间通过以下哪种方式进行通信?()A.本地方法调用B.进程内共享内存C.网络API(如RESTfulAPI、RPC)D.共享数据库
7.以下哪项不属于分布式事务的常见解决方案?()A.TCC(Try-Confirm-Cancel)B.Saga模式C.2PC(两阶段提交)D.本地消息表(最终一致性)第1页共16页
8.Kafka作为分布式消息队列,其核心设计目标不包括()A.高吞吐量B.持久化C.强一致性D.低延迟
9.分布式ID生成方案中,雪花算法(Snowflake)的核心组成部分不包含以下哪项?()A.时间戳B.机器ID C.序列号D.进程ID
10.在分布式缓存中,“缓存穿透”指的是()A.请求的数据在缓存和数据库中都不存在,导致每次请求都穿透缓存访问数据库B.缓存中没有数据,但数据库中有,通过主动更新缓存解决C.缓存中数据过期,导致大量请求访问数据库更新缓存D.缓存数据被恶意篡改,导致读取到错误数据
11.以下关于ZooKeeper的描述,错误的是()A.提供基于“ZAB”协议的分布式一致性服务B.可以作为分布式锁的实现媒介C.不支持临时节点D.是一种分布式协调服务
12.RPC(远程过程调用)框架的核心工作流程顺序是()
①服务端注册服务
②客户端发起调用
③序列化请求数据
④网络传输
⑤服务端处理并返回结果
⑥反序列化响应数据A.
①②③④⑤⑥B.
②③④①⑤⑥C.
①③②④⑤⑥D.
②①③④⑥⑤
13.BASE理论中,“Basically Available”指的是()A.分布式系统在出现故障时,允许损失部分可用性,保证核心功能可用B.分布式系统在出现故障时,数据更新操作必须是原子性的第2页共16页C.分布式系统在出现故障时,数据一致性可以暂时不保证,但最终要达到一致D.分布式系统在出现故障时,系统状态变化必须是顺序执行的
14.以下哪种部署模式不属于分布式系统的常见部署模式?()A.主从架构B.集群部署C.单体部署D.分布式存储
15.在分布式系统中处理“数据倾斜”问题时,以下哪种方法通常不适用?()A.数据分片(Sharding)B.读写分离C.负载均衡算法优化D.增加数据库连接池数量
二、判断题(本题型共10题,每题1分,共10分)
1.分布式系统一定比单体系统具有更高的可用性()
2.微服务架构中,服务之间的依赖关系越简单越好,避免形成循环依赖()
3.2PC协议中,“准备阶段(Prepare)”若协调者宕机,所有参与者会进入阻塞状态()
4.Redis的“分布式锁”方案中,通过“SET keyvalue NXEX30”可以避免死锁问题()
5.CAP定理中,当系统满足分区容错性(P)时,只能在A(可用性)和C(一致性)之间选择其一()
6.分布式事务的“最终一致性”意味着数据在任意时刻都保持一致()
7.负载均衡的“权重”策略可以通过调整不同服务实例的权重来优化资源利用率()
8.Kafka的“分区副本”机制可以保证高可用和数据可靠性()第3页共16页
9.分布式系统中,“异步通信”一定比“同步通信”的性能更好()
10.ZooKeeper通过“临时节点+Watcher机制”可以实现分布式通知功能()
三、简答题(本题型共8题,每题5分,共40分)
1.简述分布式系统的核心挑战(至少列举3点)
2.什么是CAP定理?简述在实际分布式系统中如何权衡C和A
3.微服务架构中常用的服务注册与发现机制有哪些?(至少列举2种)
4.分布式锁的实现方式有哪些?对比Redis和ZooKeeper实现分布式锁的优缺点
5.什么是RPC框架?简述RPC框架的基本工作流程
6.解释分布式缓存中的“缓存雪崩”现象,并说明至少两种解决方案
7.简述Saga模式解决分布式事务的基本原理
8.什么是BASE理论?它与CAP定理的关系是什么?
四、代码片段分析题(本题型共5题,每题10分,共50分)
1.以下是某分布式系统中使用Redis实现分布式锁的代码片段,请分析该代码是否存在问题,并说明原因public booleantryLockString key,long expireTime{String result=jedis.setkey,1,NX,PX,expireTime;return OK.equalsresult;}public voidunlockString key{第4页共16页jedis.delkey;}
2.以下是某RPC框架的服务调用代码片段,根据代码说明RPC框架需要完成的核心步骤(至少列举3点)//客户端UserService userService=RPCProxy.createUserService.class;User user=userService.getUserById1001;//服务端@RPCServicepublic classUserServiceImpl implementsUserService{@Overridepublic UsergetUserByIdLong id{return userMapper.selectByIdid;}}
3.以下是某分布式ID生成器(基于雪花算法)的核心代码片段,分析其可能存在的问题,并提出优化方案public classSnowflakeIdGenerator{private finallong workerId;private finallong datacenterId;private longlastTimestamp=-1L;private longsequence=0L;public synchronizedlong nextId{long timestamp=System.currentTimeMillis;if timestamplastTimestamp{第5页共16页throw newRuntimeExceptionClock movedbackwards.Refusing togenerate idfor+lastTimestamp-timestamp+milliseconds;}if timestamp==lastTimestamp{sequence=sequence+10xFFF;//4096个序列号if sequence==0{timestamp=tilNextMillislastTimestamp;}}else{sequence=0;}lastTimestamp=timestamp;return timestamp-twepochworkerIdBits+datacenterIdBitsdatacenterIdworkerIdBitsworkerIdsequence;}}第6页共16页
4.以下是某分布式事务(基于本地消息表)的实现代码片段,请说明该方案如何保证事务的最终一致性,并指出可能的优化点//订单服务本地事务@Transactionalpublic voidcreateOrderOrder order{orderMapper.insertorder;//插入本地消息表localMessageMapper.insertnew LocalMessageorder.getId,CREATE_ORDER,PENDING;//发送消息到消息队列rabbitTemplate.convertAndSendorder-exchange,order.create,order.getId;}//消息确认消费后更新消息状态@RabbitListenerqueues=order-create-confirmpublic voidhandleOrderCreateLong orderId{//处理订单相关业务(如库存扣减)inventoryService.deductorderId;//更新本地消息状态为“已完成”localMessageMapper.updateStatusorderId,COMPLETED;}
5.以下是某分布式系统中ZooKeeper选举过程的简化代码片段,请简述ZooKeeper的“Zab协议”中“选举阶段”的核心流程(基于该代码片段说明)//节点状态变更时触发选举第7页共16页public voidonNodeDataChangedString path{if path.equals/zookeeper/leader{String leaderId=zkClient.getData/zookeeper/leader;if leaderId!=null{setLeaderleaderId;}else{startElection;}}}
五、案例分析题(本题型共3题,每题15分,共45分)
6.秒杀系统设计某电商平台计划上线“1元秒杀”活动,预计并发用户数10万+,商品库存1000件请分析该场景下需要解决的核心分布式问题,并设计相应解决方案(至少包含高并发处理策略、库存防超卖、流量控制、数据一致性等方面)
7.电商订单系统分布式事务某电商平台订单系统需要与库存、支付、物流三个子系统交互(下单→扣库存→支付→物流),要求保证事务一致性(要么全成功,要么全失败)请分析该场景下适合的分布式事务解决方案,并说明选择该方案的原因及实现要点
8.分布式文件存储系统架构某企业需要设计一个支持多节点扩展、高可用且数据可靠性高的分布式文件存储系统(如类似HDFS的功能),请简述该系统应包含的核心组件(至少5个),并说明每个组件解决的核心问题
六、概念辨析题(本题型共5题,每题4分,共20分)第8页共16页
1.辨析“同步复制”与“异步复制”在分布式系统中的区别及适用场景
2.辨析“集群”与“分布式系统”的概念,说明两者的联系与区别
3.辨析“2PC(两阶段提交)”与“TCC(Try-Confirm-Cancel)”在解决分布式事务时的优缺点
4.辨析“CAP定理”与“BASE理论”的核心思想,说明为何分布式系统中BASE理论常被优先采用
5.辨析“负载均衡”与“流量控制”在分布式系统中的作用,说明两者的关系
七、场景应用题(本题型共4题,每题10分,共40分)
1.分布式聊天系统设计设计一个支持百万级用户在线的分布式聊天系统,要求实现用户注册登录、单聊/群聊、消息实时推送、消息持久化等功能请说明该系统的核心架构(至少包含服务拆分、通信方式选择、数据存储方案、高可用设计等)
2.分布式系统数据倾斜优化某分布式缓存系统中,部分热点Key(如热门商品ID对应的缓存)被大量访问,导致缓存节点负载过高,其他节点资源闲置请设计至少两种优化方案,并说明各自的实现思路和适用场景(需考虑缓存一致性和性能)
3.分布式任务调度系统设计设计一个分布式任务调度系统,支持定时任务(如每日凌晨执行数据统计)和一次性任务(如订单超时取消),要求任务高可用(失败重试)、资源利用率高、任务不重复执行请说明系统的核心模块(至少包含任务存储、调度中心、执行节点、任务分发等)及关键技术点
4.分布式系统网络延迟问题处理某跨境电商系统部署在国内和海外两个数据中心,用户分布在国内外,导致国内用户访问海外数据中心和第9页共16页海外用户访问国内数据中心时网络延迟较高请设计至少两种优化方案,并说明方案如何降低网络延迟对用户体验的影响答案汇总
一、选择题
1.C
2.B
3.B
4.C
5.A
6.C
7.D
8.D
9.D
10.A
11.C
12.A
13.A
14.C
15.D
二、判断题
1.×
2.√
3.√
4.√
5.√
6.×
7.√
8.√
9.×
10.√
三、简答题
1.分布式系统的核心挑战包括网络延迟与不可靠性、数据一致性问题、节点故障容错、扩展性与负载均衡、分布式事务处理、数据分片与分片策略等
2.CAP定理指分布式系统在网络分区(P)、一致性(C)、可用性(A)三个属性中,最多只能满足两个实际中,若需保证分区容错性,需在C和A间权衡金融交易系统优先保证C(如银行转账),电商商品详情页优先保证A(允许短暂不一致但快速响应)(注答案合理即可得分)
3.服务注册与发现机制包括Eureka(AP,自我保护机制)、ZooKeeper(CP,通过临时节点实现)、Consul(支持健康检查、KV存储)等
4.分布式锁实现方式Redis(SET NXEX)、ZooKeeper(临时有序节点)、数据库乐观锁/悲观锁Redis优点性能高、实现简单;缺点时钟同步问题可能导致锁误删,需合理设置过期时间ZooKeeper第10页共16页优点强一致性、无死锁风险;缺点性能较低,对网络稳定性要求高
5.RPC框架是允许一台主机调用另一台主机上的方法,无需关注网络细节的框架基本流程
①服务端注册服务;
②客户端通过代理对象发起调用;
③序列化请求数据并通过网络传输;
④服务端接收请求、反序列化、执行方法并返回结果;
⑤客户端接收响应、反序列化并返回结果给用户
6.缓存雪崩大量缓存Key过期,导致请求穿透缓存访问数据库,引发数据库压力骤增解决方案
①设置随机过期时间(避免过期);
②多级缓存(本地缓存+分布式缓存);
③熔断降级(缓存不可用时快速返回兜底数据);
④缓存预热(系统启动时主动加载热点数据)
7.Saga模式将分布式事务拆分为本地事务序列,每个本地事务执行后通过补偿事务处理失败情况原理正向流程中每个步骤执行本地事务,若某步失败,通过反向补偿步骤回滚已执行的操作,最终达到事务一致性
8.BASE理论是对CAP中AP的延伸,核心思想是基本可用(允许损失部分可用性)、软状态(允许数据临时不一致)、最终一致性(通过异步更新最终达到一致)与CAP关系CAP是理想状态,BASE是CAP中AP的实际落地理论,强调分布式系统在不可靠网络环境下的务实选择
四、代码片段分析题
1.存在死锁风险原因unlock方法直接调用delkey,若客户端获取锁后宕机,锁无法自动释放,导致死锁;且未处理网络抖动导致的锁误删问题优化
①使用“看门狗”线程定期刷新锁的过期时间;
②通过Lua脚本原子执行“判断锁是否为当前客户端持有后删第11页共16页除”(如jedis.evalif redis.callget,KEYS
[1]==ARGV
[1]then returnredis.calldel,KEYS
[1]else return0end,Collections.singletonListkey,Collections.singletonListcurrentClientId)
2.RPC框架需完成的核心步骤
①服务注册服务端将服务接口和实现类注册到注册中心;
②服务发现客户端从注册中心获取服务提供者地址列表;
③代理对象生成客户端通过动态代理生成服务接口的代理对象,拦截方法调用;
④序列化/反序列化将方法名、参数等数据序列化后通过网络传输,服务端接收后反序列化;
⑤网络通信通过TCP/UDP等协议实现服务端与客户端的通信
3.可能存在的问题
①workerId和datacenterId的位数固定(默认10+10=20位),若集群规模超过2^10=1024个节点,会导致workerId或datacenterId溢出;
②未处理机器ID配置错误(如workerId超出范围);
③tilNextMillis方法未实现(需等待到下一毫秒避免重复)优化方案
①动态调整workerId位数(如根据集群规模自动分配);
②增加workerId合法性校验;
③完善tilNextMillis方法(循环等待到下一个时间戳)
4.本地消息表方案保证最终一致性的原理订单服务在本地事务中插入订单数据和本地消息表,确保订单与消息状态一致;消息队列(如RabbitMQ)接收消息后异步处理,处理成功后更新消息状态为“已完成”,若处理失败,消息队列重试发送,订单服务通过定时任务扫描“PENDING”状态消息进行重试优化点
①增加消息重试次数限制(避免无限重试);
②使用死信队列处理持续失败的消息;
③消息表与订单表分库分表时需保证事务一致性;
④增加幂等处理(避免重复消费)第12页共16页
5.该代码片段体现了ZooKeeper Zab协议中“选举阶段”的核心流程当集群中Leader节点宕机,剩余节点通过竞争成为新Leader流程如下
①节点启动后,检查是否存在Leader节点(通过/zookeeper/leader路径),若不存在则触发选举;
②节点将自身ID写入/zookeeper/leader路径;
③其他节点监听/zookeeper/leader路径变化,当检测到新的Leader ID时,更新本地Leader状态;
④Zab协议中,选举阶段通过节点ID竞争(通常ID越大优先级越高),最终产生唯一Leader,保证集群一致性
五、案例分析题(答案合理即可,以下为要点)
1.秒杀系统核心问题及方案
①高并发处理采用“削峰填谷”(消息队列异步处理)、前端限流(按钮置灰、验证码)、后端限流(令牌桶/漏桶算法);
②库存防超卖Redis预扣库存+数据库最终校验(库存扣减原子操作)、分布式锁(防止多线程扣减);
③流量控制降级熔断(非核心功能临时关闭)、过载保护(队列满时拒绝新请求);
④数据一致性下单与库存扣减的分布式事务(TCC/本地消息表)、结果异步通知(消息队列推送秒杀结果)
2.适合方案Saga模式原因订单系统与库存、支付、物流系统是跨多个服务的长事务,TCC实现复杂(需每个服务实现Try/Confirm/Cancel接口),2PC同步阻塞导致性能差;Saga模式将事务拆分为本地事务序列(订单创建→库存扣减→支付处理→物流创建),每个步骤失败时通过补偿事务回滚(如支付失败则回滚库存扣减),实现最终一致性,且对服务侵入性低;实现要点
①定义正向步骤和补偿步骤;
②通过消息队列异步执行补偿事务;
③设置重试机制(失败后按策略重试)第13页共16页
3.分布式文件存储系统核心组件
①元数据服务器(MDS)——存储文件元信息(路径、权限、副本位置映射);
②数据存储节点——存储文件数据,通过副本机制保证高可用;
③客户端——与元数据服务器交互获取文件位置,直接与数据节点通信读写数据;
④副本同步模块——保证数据节点间文件副本一致性;
⑤心跳检测模块——元数据服务器监控数据节点状态,故障时进行副本迁移;
⑥负载均衡模块——根据数据分布动态调整副本位置,优化存储和访问性能
六、概念辨析题(答案合理即可,以下为要点)
1.同步复制事务提交需等待所有副本更新完成,强一致性但性能低、延迟高;异步复制事务提交无需等待副本更新,性能高、延迟低但可能丢失数据适用场景金融交易(同步)、日志存储(异步)
2.集群多节点共同提供同一服务,提高可用性和吞吐量(单节点故障不影响服务);分布式系统多节点协同完成不同任务,解决单节点无法处理的问题(如数据分片、并行计算)关系分布式系统可基于集群实现(集群是分布式系统的一种部署形式),但集群不一定是分布式系统(如单任务多实例集群)
3.2PC两阶段提交,协调者主导,准备阶段各节点预提交,提交阶段统一提交,优点是实现简单,缺点是同步阻塞、协调者单点故障、性能低TCC业务层面拆分Try/Confirm/Cancel,无中心化协调者,优点是性能高无阻塞,缺点是侵入业务代码、开发复杂度高
4.CAP定理强调分布式系统在P、C、A中最多满足两个;BASE理论是对AP的优化理论,核心是允许短暂不一致(软状态),最终达到一致(最终一致性),通过基本可用、软状态、最终一致性解决分布式系统的实际问题,更符合工程实践第14页共16页
5.负载均衡通过算法将流量分配到不同节点,优化资源利用率和系统吞吐量;流量控制通过限流、熔断、降级等手段限制流量峰值,防止系统过载关系负载均衡是流量控制的基础(合理分配流量),流量控制是负载均衡无法解决时的补充(如限制总流量)
七、场景应用题(答案合理即可,以下为要点)
1.分布式聊天系统架构
①服务拆分用户服务(注册登录)、消息服务(单聊/群聊)、推送服务(消息实时推送)、存储服务(消息持久化)、好友服务(好友关系);
②通信方式用户服务间通过TCP长连接(保证实时性)或WebSocket(基于HTTP的长连接);
③数据存储消息存储用分布式数据库(如MongoDB分片集群),用户关系用Redis+关系型数据库;
④高可用设计(每个服务多实例部署,ZooKeeper监控服务状态,故障自动切换);
⑤消息推送采用MQTT协议(轻量级)或WebSocket,推送服务通过多节点集群实现高可用
2.分布式数据倾斜优化方案方案一热点Key互斥锁+本地缓存实现思路客户端请求热点Key时,通过分布式锁(Redis/ZooKeeper)保证同一时刻只有一个请求访问数据库,其他请求等待并缓存结果;本地缓存热点Key结果,减少对分布式缓存的访问适用场景热点Key数量少、访问频率极高的场景方案二数据分片+读写分离实现思路将热点Key对应的缓存拆分到多个节点,通过一致性哈希或范围分片;读操作走只读副本节点,写操作更新主节点后同步到副本,避免主节点压力过大适用场景热点Key数量多、数据量较大的场景
2.分布式任务调度系统核心模块
①任务存储模块关系型数据库(MySQL)存储任务元信息(任务ID、类名、Cron表达式、状态、重试次数),支持任务动态增删改;
②调度中心负责任务触发,通过第15页共16页定时任务(如Quartz)扫描任务,计算下次执行时间,生成调度请求;
③执行节点接收调度中心请求,通过线程池执行任务,执行结果上报调度中心;
④任务分发调度中心通过ZooKeeper临时节点实现任务分发(每个任务只被一个执行节点处理,避免重复执行);
⑤失败重试执行节点定期上报任务状态,失败时调度中心根据重试策略(指数退避)重新分配任务给其他节点
3.网络延迟优化方案方案一多活数据中心+就近访问策略实现思路在国内外各部署一个数据中心,通过Anycast路由或智能DNS解析,让用户访问最近的数据中心;数据中心间通过专线同步数据,保证数据一致性适用场景跨境用户分布明确、数据同步要求高的场景方案二CDN加速+边缘计算实现思路将静态资源(如图片、静态页面)部署在CDN节点,用户就近访问CDN;动态业务通过边缘计算节点(如阿里云EDAS)部署在离用户更近的区域,减少跨区域网络传输适用场景第16页共16页。
个人认证
优秀文档
获得点赞 0