某三年开发经验大佬给我分享的面试问题

摘取了部分分布式相关的面试题,简单列了一下,不全,有空再补。

我司面试宗旨:结合项目聊实际场景,不玩概念,不玩虚的。

一般回答问题之后都会根据你的答案进行追问,所以面试问题仅供参考。

这是一面的面试题,一面重视技术广度,所以问题都不难。

1. 分布式理论

简述下CAP理论

描述下你项目中用到的技术按CAP理论来分,分别是什么模型?

简述下BASE理论,并说明下你们项目中那些地方涉及到该理论?

2. Redis

单机Redis的qps大概是多少?

项目中用到了哪些Redis的数据类型?为什么这么用?

Redis的key到了过期时间就被删除了吗?简述下Redis的过期策略?

Redis有哪几种内存淘汰策略?(这里可以联系到linkedhashmap的排序方式)

Redis为什么那么快?能不能谈谈Redis的线程模型?

Redis集群方案应该怎么做?都有哪些方案?

你的项目生产环境中用的哪种Redis集群?线上是怎么部署的?

你们项目中是怎么做Redis持久化的?

描述下Redis雪崩和穿透,以及你们项目中是怎么避免的?

你们项目有使用Redis做分布式锁吗?Redis做分布式锁和zk有什么区别?

怎么保证缓存和数据库双写时的一致性?(这个问题可以聊很深,一般的初级解决方案,高并发下的解决方案)

你们项目中是怎么预估Redis所占内存空间的?怎么避免内存占用过多导致数据丢失?

你们项目中Redis是怎么进行扩容的?请简述下一致性hash算法(最好画个图?)

3. zk

你们生产环境的zk是怎么部署的?1台行不行?3台?4台? 5台?

zk集群部署节点数为什么是单数?

如果zk的leader节点挂了,这时候有服务过来注册,会怎么办?

如果服务注册到zk的leader上,但是leader还没来得及同步到follower,此时leader挂了,会怎么办?

zk是如何保障高可用的?(这是一道陷阱题,这里可以扩展到阿里为什么不用zk作为注册中心)

说一下zk的选举过程?

说一下服务注册时,zk集群之间的数据同步过程

说一下zk集群的羊群效应

4. eureka(一般和zk对比着问)

简述下zk和eureka的区别 (提示 cap、集群模式)

你们生产环境对eureka做了哪些优化?

能不能画出eureka的架构图(包括服务发现、底层缓存同步、服务检测、心跳、服务下线、集群节点间的同步等) 这个问题很大,考察底层原理理解多少,属于可以聊半小时的那种

能不能说一下zk和eureka时效性的对比?

有没有遇到过新发布一个服务,但是很久之后才能被其他服务调用(好几十秒甚至一分钟)

能不能换出eureka的三级缓存架构图及缓存同步图

5. dubbo

你们项目中注册中心、配置中心、网关分别用的什么技术(看看你是不是培训班出来的)

zk挂了dubbo还能远程调用服务吗?

zk中存储了哪些服务信息?

能不能画出dubbo架构图?

简述下dubbo流程,包括服务注册,服务发现,远程调用、负载均衡、通信等等?

你们项目中是怎么设置dubbo超时时间和dubbo重试次数的?为什么?

说说dubbo和cloud的区别,如果让你做技术选型,怎么选?

如果你自己设计一个rpc框架,你有什么思路?

说说get、post、put、delete请求是幂等的吗?

针对不同的请求方式,结合你的实际业务聊聊你们是怎么做接口幂等性设计的?

分布式事务有哪几种方案,各方案有什么优缺点?

你们项目中哪些地方涉及到了分布式事务,是用的哪种方案的?为什么采用这种方案?

6. mq

你们项目中哪些业务用到什么mq?为什么要用,不用会有什么问题?

你们mq是怎么选型的?能不能说说rabbitMq,kafka,rocketMq各特点以及适用场景?

你们是怎么保证mq的高可用的?

怎么保证mq不重复消费?

怎么保证mq不丢失消息?

能不能画出kafka/rocketMq框架图?

你可能感兴趣的:(9.JAVA开发面试)