转载: https://blog.csdn.net/hollis_chuang/article/details/96235698
我这个朋友有3年的工作经验,但是一直在一家传统行业,没有大型分布式经验,所以这次面试并不顺利。因为面试官让他做完自我介绍之后,问他有没有分布式经验。
他说:我没实际做过分布式的项目,但是我自己也学习过一些知识。然后面试官来了一连串的连珠炮:
1、有使用过缓存吗?Redis和Memcached有什么区别?
2、Redis的线程模型?单线程的Redis如何实现高性能的?
3、使用Redis实现过分布式锁吗?什么是分布式锁
4、有什么其他方式实现分布式锁吗?ZK实现的和Redis有何区别?
5、zk实现的分布式锁如何解决网络抖动的锁丢失导致的并发问题?
6、zk底层的zab算法有了解吗?如何进行选主的?paxos算法呢?
7、分布式事务有了解吗?如何实现分布式事务?
8、什么是2PC,和3PC有什么区别?
9、如何实现一个高性能的服务接口?
10、什么是分库分表?为什么要做,怎么做?
11、有没有做过限流降级相关的事情?
以上这些问题,对于一个没有过分布式经验的人来说其实还是比较难的。但是很多大厂有要求面试者有分布式经验,但是很多小厂有没有分布式的场景...
所以,到底什么是分布式经验,想要回答好面试官的问题,需要会哪些和分布式有关的知识呢,大概可以总结如下:
分布式服务框架。如Dubbo、SpringCloud
分布式事务。2PC、3PC、TCC
分布式锁。Redis实现、zk实现
消息中间件。Kafka、RabbitMQ、RocketMQ
分布式缓存。Redis、Memcached
分布式搜索系统。Elasticsearch
分布式理论。CAP、BASE
高性能、高可用、高并发。分库分表、读写分离、缓存、限流、降级、异步消息
以上这些知识点,有几个方面需要注意:
1、要知道同类竞品之间的差异、优缺点
2、要知道为什么使用这类产品,如RPC框架、消息中间件等
3、使用这些产品带来的一些问题是什么,如分库分表带来的分布式事务问题
4、常用中间件的基本原理,如Redis的线程模型、zk的存储模型
总之,没有实操经验,那就充实自己的理论知识,争取早日进入大厂,把理论付诸于实践。
最后,给大家推荐一些免费的分布式、源码等学习的资料,有需要的自取哈。关于这个问题,你有什么看法呢?