利益相关:前美团项目技术负责人、技术面试官,10年Java开发经验。

知乎上有网友问索隆哥,自己参加互联网公司面试,因为没有高并发经验没法拿到Offer,不去互联网公司工作,又没法接触高并发项目,感觉陷入死循环,只能一直在小公司挣扎。如何才能积累高并发经验,打破这种死循环呢?

作为一名面试官,发现好多同学会遇到这样的情况,想去互联网公司,但是没有高并发经验,遇到高并发相关的面试题回答不出来,拿不到Offer。去不了互联网公司又没法积累高并发经验,陷入失望循环。导致好多基础扎实、学习能力不错的同学只能一直待在小公司,一直没法进入互联网公司工作。有没有高并发项目经验把程序员分成两个互相绝缘的圈子。

针对这个问题,其实有个解决方法。不是去报某某培训班,或者参加所谓的架构训练营,而是去找一些高并发相关的开源中间件,去深入学习原理,并试着提交一些质量不错的PR。完全免费,并且含金量很高(能提交不错的PR,说明编码水平是得到开源大佬认可的,含金量自然比会背一些面试题,会刷一些算法题要高很多),但是要求你有扎实的代码功底和足够的耐心及努力。

比如说国内互联网公司会用到Dubbo、GRpc这些作为RPC框架、Apollo和Nacos这些作为配置中心、Cat、SkyWalking这些作为性能分析和监控工具。这些中间件都是开源的,并且都做到了高可用高并发。如果能对其中一到两个框架的原理有深入的了解,并且能提交不错的PR,按照我的经验,通过国内一线互联网公司的技术面试应该是概率很大的。并且国内包括阿里、美团这些知名公司都会去知名项目的贡献者列表里去找人发面试邀约。搬砖哥给Dubbo、Apollo和Mybatis贡献过PR,就经常会收到一些国内一线公司的面试邀请邮件。比如下面这个阿里菜鸟的, 当然索隆哥对现在的工作还是挺满意的,没有去参加面试。
图片说明
同学们会说这倒是个好路子,但是这些知名开源项目都是知名公司主导的,自己的水平一般,应该没法提交PR吧。实话实讲,知名开源项目对贡献者的代码水平还是要求比较高的,这也是为什么知名项目PR含金量高的原因,但是也不是遥不可及,水平也是可以通过学习慢慢提高的。索隆在这里给大家几点实用的建议,相信看过之后,绝大部分同学都能成功提交第一个PR。

  1. 写PR之前先学会阅读源代码。如果缺少足够的项目经验,一开始阅读这些开源项目代码难度还是比较大的,大部分同学也是卡在了这一关就没有然后了。首先,建议先看规模比较小、代码层次清晰的项目。比如Dubbo这种大而全的插件式设计的RPC框架一开始看起来难度会很大,索隆一开始看也是感觉云里雾里的。而Apollo和Nacos这种项目看起来就要清晰明了很多,建议先从这种项目入手;其次,如果一开始看不懂源代码,可以看些网上的源码分析文章,这些文章看起来要简单很多,可以先通过文章把基本原理和代码层次搞懂,然后再去翻源码;最后,看源码的实时不要像看书一样,一定要让项目跑起来,结合Debug工具来看,这样效率会高很多;看的时候脑图也要一起画起来,这些项目代码量都很大,脑图可以把复杂的代码串起来,加深记忆,也方便回顾。
  2. 从小处入手,可以先帮着写一些TestCase或者完善代码注释。一开始去提一些功能的完善PR是不现实的,一是能力还达不到,二是在社区没有知名度和信任度,社区一般不会接受这种PR。而TestCase、注释、文档这些难度很小,社区也非常希望新人能在这方面做贡献。所以,可以从小处入手,先提交这种类型的PR,积累一些经验。
  3. 等有一定经验积累了,可以试着去解决一些小Bug。这些Bug可以通过Issue区找到,有些修复难度并不大,并且很容易被社区接受。
  4. 提交PR代码一定要规范,比如Java可以通过阿里规约插件先检查下再提交,注释和测试用例要完整。注释可能大家都会注意,测试用例其实也非常重要。开源社区没有专门的测试人员,主要是通过测试用例来保证代码质量的。自己提交PR,提供完备的测试用例,也可是很好地证明自己代码的正确性,节省代码检视者的时间,提高通过率。
  5. 其实参加开源项目不光能提升项目经验,对提升编码水平大有帮助,提交PR后会有开源大牛帮你检视代码,这种机会是花钱也买不到的。给知名项目提交代码,让自己的代码被几百万程序员用到,也是一件很有成就感的事情。同时还有机会把自己的代码永久保存到北极,索隆的代码最近刚运过去:D。图片说明

先写这么多,感觉有帮助的话可以点赞支持下,也可以关注索隆进一步进行沟通。