JavaBoy如何快速学习开源项目
作为一个合格的JavaBoy,想必大家在准备简历去面试的时候多多少少都会遇到手头上没有合适的项目经验的情况,这个时候一般都会去网上寻找一些优质项目来弥补简历上的不足。
其实找一个像样的项目不难,难得是如何学习,就像我刚毕业那会拉个代码看着看着就看不下去了,因为只要是个值得看的项目整体架构设计的都很严谨,模块之间耦合度很低。所以import到IDEA里会发现一堆模块翎琅满目,光加载依赖就得等半天,有种老虎吃天无从下口的感觉。
要高效率的学习别人的开源项目,首先要明确自己的学习目标。一般可以分成两种,一是增删改查做多了,想拓宽自己的技术栈而去学习,另一种是为了准备面试而去学习。这两点还是有点区别的,如果想扩展自己的技术栈,精进自己的技术水平,学习节奏可以慢一点,相对来说不是那么着急。这种就不展开说了,菜就多练。
针对准备面试的一般没有太多时间,如何高效的吃透一个开源项目呢。
应用场景
无论学习哪一类的开源项目。首先得搞明白这个项目是作用在哪个应用场景下的,比如在线商城、通信中间件、消息推送、数据流转等等等。因为只要了解了应用场景,写到简历上去面试,面试官想要问你这个项目第一个问题一定是先介绍一下你这个项目。后面的很多面试问题也是基于业务场景去展开的,如果你都不知道项目干啥的,一说包露馅。
架构设计
要去了解一个项目的架构设计先去看源代码里的README,优秀的开源项目肯定会在README描述下项目的整体架构,给面试官介绍完项目的应用场景后可以简单提一下架构设计,一般都会有的几个模块
- web模块,服务启动类所在模块
- rpc模块,内部服务通信所在模块
- 缓存模块,saas类服务一般都会有专门的数据缓存模块
- 消息模块。内部消息通信所在模块
- 核心业务点模块,这个不一定是一个
- 。。。。
在源码里找到对应的功能模块学就完事了。
中间件
如果时间紧任务重,且分不太出来模块都是干嘛的,有个技巧就是README里一般也会列出来用了哪些中间件,如果不知道从哪开始看源码的话,就先把中间件罗列出来,这里大家要先对这些中间件有个大体的了解,比如Redis八成是用来做缓存或者锁,Kafka八成是用来做消息中间件,ES八成是用来做冷热数据分离等等。
心中有数之后,挨个在代码里搜中间件的关键字在哪个模块里。怎么用的,为什么这么用,这么用会解决什么问题。这一块一定要认真学,面试官一般也会基于中间件去问。比如Redis实现了分布式锁,怎么实现的,为什么要用,在哪个场景用。
核心业务逻辑
这一块一定要看,学习一个服务核心业务逻辑代码最快的方式是把项目启起来,然后从页面走一个完整的业务流程,浏览器f12打开控制台,从接口开始打断点,一步一步往下走,捋清业务逻辑。debug的时候一定要留意每个接口的调用,因为一个流程可能会调用各个模块的代码。
面试题预判
预判面试题,这个可能有点抽象,其实如果面多了就能找到一些规律,比如你认为项目里的一些做的好点等等等,换位思考一下会有一些意外收获。再有就是要预防面试官通过一个点去发散提问,比如问了你项目里的消息组件是kafka怎么用的,他可以能发现性的问你kafka的一些场景题,比如有没有遇到过丢失消息的情况,如何做的,消息做幂等了吗等等。
优质项目推荐
到最后浅浅推荐鄙人开源的一个Java项目,鄙人混迹一线互联网公司多年,蹉跎中练就一番数据流转相关技能,沉淀而成基于Flink的异构数据源流转系统,如果找不到优质项目的可以考虑一下学习datalinkx,如果能star一下那更好不过。
代码完全免费,也提供了各种股东服务,如果觉得值得你学习可以考虑入股当股东获取细致文档。
#简历中的项目经历要怎么写##我的失利项目复盘##我的成功项目解析#