注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
本帖最后由 yuqinlear 于 2021-9-6 14:50 编辑
不同于美国大厂的面试,国内大小厂必然会问到具体使用的库和框架,我列举一些非常高频的希望帮助大家节省点时间,也希望其他同学能指正和补充。框架的具体知识大家可以进一步百度和谷歌,我也可以稍后抽时间再整理很多细节。
1. 消息中间件:Kafka, RabbitMQ, RocketMQ, Redis
Kafka使用频率很高,要了解如何扩展,然后最喜欢问的其性能优异原因(比如零拷贝);
RocketMQ是阿里开源,国内使用比较普遍,美国不知道哪大厂使用,但其功能有兼顾传统MQ和Kafka的事务和吞吐量,非常强大。面试中经典案例是分布式事务消息等。
RabbitMQ业界经典,对AMQP最好有一定熟悉,面试不强制要求。
Redis由于其可以做轻量的pubsub系统也放在这里,需要知道利弊。
2. 缓存中间件:Redis, Memcached, RockDB;
深入Redis就行了,redis的各种数据结构原理,持久化和集群(sentinel, cluster)。此外,有很高概率延伸到非阻塞非同步IO这一块。Redis可以问得非常细,需要好好掌握。
3. 分布式配置管理(包含一致性管理等): ZooKeeper,etcd, Consul,Eureka,Dubbo;
这块是CAP理论的集中考点。 考点包括CAP的取舍问题,比如注册中心AP可能更好所以ZK这类CP框架会有争议,push/pull模式的利弊取舍等。这个可能会问的深入来测试你是不是着实有使用经验。
ZooKeeper,CP模型, 非常经典的强一致解决方案,其使用场景可以比较多(配置中心,分布式锁),需要看一下他的集群结构,选主逻辑,和一致性协议Paxos。
etcd,CP模型, 因Go的使用增多和被集成到K8S服务发现变得热门,储存的数据结构上和一致性算法Raft上与ZK大不相同;
Eureka, AP模型,经典的服务注册中心,之前在北美广泛使用;
Redis: 因为这个是储存,一直性需求要在上层自己写,做分布式锁之类,会追问一些比较典型的分布式同步问题;
Dubbo: RPC微服务框架集成服务治理众多功能,阿里系高频;
Consul: 没具体研究,频率不是特别高。
4. 分布式事务:Seata:
国内系统设计必考分布式事务,而其最热门的具体实现则为阿里的Seata框架,可以找一下基于这个框架的案例本地跑一下熟悉一下2/3 phase commit模式中的组件和逻辑流程。同时结合MySQL事务机制和日志系统巩固数据库事务领域的概念。
5. 微服务容错框架: Hytrix, Dubbo;
在服务治理组件中,容错是高频题。其经典框架之一是Hytrix, 通过这个框架了解服务限流,降级,熔断等机制,和其具体实现原理(限流算法,线程池等)。
6. web service框架:Spring
就不说了,老八股文了。可以找github里的总结来学习。
7. Load balancer:Ngnix, LVS
Ngnix主要就是文4层和7层的负载这种
LVS主要就是要熟悉下vip和failover的概念
8. 不常考的框架类别:分表中间件,BFF等。 这些多停留系统设计的概念比如如何分表,BFF的协议(GraphQL等),不怎么问具体使用的库。
此外还有大量其他框架比如做大数据处理(Spark),防火墙,servlet容器(Tomcat)等也有可能考到的具体框架,时间原因我稍后继续深入。
可以观察到的一些特点是阿里系应用的技术栈在国内有指导性意义,同时由于框架的快速更替,以上内容在面试中也在发生替换,我认为熟悉慢半代的框架在面试中普适性最大。
大家觉得有用的话请给一些米。感谢!
补充内容 (2021-09-07 10:11 +8:00):
国内面试中对各中间件,分布式框架和微服务治理的熟悉基本上对还在一线写代码的各个级别都非常重要。即使应届生很多已经开始有实习经验,bootcamp和demo练手,这些会包装在简历里,水涨船高所以也会问。aka卷!系统设计环节往往是要刨根问底直到答不上来的方式测试深度,所以面试者不论级别准备越充分越好。高级别对如何落地及运维也有要求,如果低级别构架方面问得少,那自然java/mysql八股文就问得多。
所谓面试造火箭,入职拧螺丝也不尽然,国内一二线大厂很多高并发场景,大家也都想去这些核心领域。而这些典型框架在国内使用的一致性很高,掌握就很通用。我也觉得工程应用中通过熟悉一个框架并深入学习其原理更容易建立成体系的认知。 |