专栏名称: 养码场
养码场,一个技术人职场社交平台。 现有“养码人”80000+,覆盖JAVA/PHP/iOS/测试/运维等领域。80%级别在P6及以上,含P9技术大咖30人,技术总监和CTO 500余人。
目录
相关文章推荐
小北的梦呓  ·  接入AI之后,跨境搞钱的速度飞快 ·  22 小时前  
小北的梦呓  ·  接入AI之后,跨境搞钱的速度飞快 ·  22 小时前  
楼主说楼市  ·  曾经以为在做梦,现在真的来了 ·  2 天前  
楼主说楼市  ·  曾经以为在做梦,现在真的来了 ·  2 天前  
环球物理  ·  【物理科普】“薛定谔的猫”到底是什么? ·  2 天前  
51好读  ›  专栏  ›  养码场

Hold住大厂面试官,3个层次必须突破!

养码场  · 公众号  ·  · 2019-01-14 16:30

正文

IT系统动辄就是上亿流量的时代,Java作为大数据时代应用最广泛的语言,诞生了一批又一批的新技术,包括HBase、Hadoop、MQ、Netty、SpringCloud等等 。


一些独角兽公司以及腾讯、阿里、百度、网易等知名大厂对Java人才的需求量连年升级, 有2年工作经验的优秀程序员能轻松达到30w+的水平 ,但与此同时,对人才的要求也越来越高。


比如,大厂的面试官经常会以如下句式来询问:


  • 聊一聊你对JVM的原理,如何减少Full GC的情况?

  • 针对高并发场景,如何优化,都采用了什么技术?

  • 相比关系型数据库,NoSQL的优势在哪里,你们在什么场景下会用到?


可以看到,对于社招程序员而言(特别是有2~5年工作经验的), 不仅仅会问一些编程语言、设计模式等基础问题,还要对一些项目有深入的实战经验。


但现实却是,很多程序员在技术生涯最初几年都会沉浸在业务开发中,忽视了对系统知识的梳理和技术视野的扩展, 在重复的体力劳动中也丧失了对技术细节的深入探讨。


如果在工作中缺乏实践场景,最好的办法就是系统的学习与梳理,为自己制定一个不同时间段的发展道路,待机会来临时就能一展身手。


以工作前5年的规划为例,至少需要突破三个层次:



Part.1

对代码精益求精


最开始工作的时候,我们会抱怨业务需求对技术没挑战,觉得很多理论知识没有用武之地。


实质上这是忽略了技术开发的本质:技术开发是一个工程项目,而工程项目的落地最重要的就是细节控制,也就是代码的品质,比如:


1、代码是否遵循了规约?接口设计的是否随意?测试用例是否都通过?


2、满屏的if-else是否可以用合理的设计模式来替代?有没有遵循SOLID原则,KISS原则?


3、有没有考虑用更合理的数据结构和算法改变代码的复杂性,提升运行的性能?


4、代码出bug的概率有多大,能否降低?


这是程序员的立足之本,基本需要工作1年左右达到。


在这一阶段看书是比较好的提升方式,比如: 《Java编程思想》、《effective java》 等。但要注意的是,在看书的过程中一定要思考能否运用书中的经验来改善自己写的代码,运用到实处,比如看到final和static,想想自己代码中用的是否合理。


此外,还可以看些常用的开源框架,如果你用的是 Spring框架 等,那么下面一个很好的知识结构:


(扫描文末二维码,即可获取完整脑图)


Part.2

跳出来,主动了解技术全貌


在将基础打牢之后, 需要主动突破舒适区,不断的去扩大自己的技术视野,做到有广度。


这一步比较难,因为很多程序员会被公司的技术和业务牵着走,比如公司当前的业务规模决定了技术上不需要分布式技术,那么很多程序员就不会去思考如果规模大了之后,如何利用分布式技术解决该问题。


如何解决这个问题?


除了寻找更大规模的业务外,要时刻保持时刻跳出当前层级和环境来思考的习惯。比如,只用了关系型数据库,那么有没有想过数据一直产生,到达TB级别的时候该如何快速检索与保存呢?


此外,技术的全貌还包括各种技术之间的关系:你用了Dubbo,那么Duboo和Netty是什么关系,为什么会用到Zookeeper呢,和Spring Cloud又是什么关系?如果 能在学习新技术的时候,将繁杂的技术关系理顺,会有一览众山小的感觉。


在工作的2~3年时间内达到这个水平,30w的年薪就离你不远了。如果你对 高并发和分布式技术 感兴趣,那么下面一幅图会有帮助:


(扫描文末二维码,即可获取完整脑图)



Part.3

不去造轮子,

前提是得知道轮子的内部结构

如果说,第二步是增加你的知识广度, 那么造轮子就是增加你的技术深度,通过造轮子,才能真正把握技术的来龙去脉。


很多人信奉“不去造轮子”,看似性价比很高的一句话,却不知道这句话是有前提的,那就是“你得知道轮子的内部结构”,否则就是自我麻痹。接下来需要选择某一个或几个方面深入研究下去,构建自己的核心竞争力。


比如,消息队列在高并发分布式系统中一个及其重要的组件,起到削峰填谷、系统解耦的作用。我们 以消费端如何快速获取数据来看思维是如何一步步深入的


  • 首先消费端要想及时获取数据,是否需要建立一个长连接?长连接的实现方式如何?


  • 数据是通过push还是pull方式给到消费端,各自有什么弊端?


  • 如果消费失败,可能是哪些原因引起?如果是因为网络原因引起,该如何解决?


这些问题都会在你自己造轮子的过程中暴露出来,从而加深你的理解和技术深度,一个有技术深度的程序员才是有灵魂的。


而大厂也是愿意为有趣的灵魂买单的,这个时候看的就不仅仅是工资水平,更多的是在于晋升和发展前景的广阔性。

在Java语言上有所建树的开发者,都经历过以上3个层次。但可惜的是,囿于外界环境和自身设限,大部分的Java开发者却只停留在了第一个层次中,在日复一日的体力劳动中丧失了对技术细节的深入探讨,也丧失了晋升和薪资谈判中的筹码。


如何过渡到第二、三个层次?除了上文谈到的内容,这里还想给你2个切身的建议:


1、扩宽自己的眼界,学着从全局看待问题,并且勇于挑战别人眼中的难题。


2、持续提升你的学习能力。学习能力弱的人,在哪里都没用。


如果你依然觉得有些茫然, 不如跟有多年Java开发经验的资深工程师聊一聊。


11月8日-14日,网易云课堂将会开展为期一周的Java进阶免费系列直播 课。 由多位拥有10+年Java开发经验的讲师向你传道高并发、分布式、大数据、高可用系统的架构设计。


每天2小时,帮你快速实现技术和职业成长上的突破。


福利1  免费直播课程


《网易云课堂Java进阶免费系列直播课》

适听人群: Java初、中级开发工程师


1.14-1.20  连续7天每晚8点准时直播

1月14日:大型系统设计核心之一- 分布式订单号生成策略

1月15日:缓存失效导致系统挂掉!如何解决这个深坑

1月16日:高性能缓存可靠性设计 - Redis高可用集群实战

1月17日:饿了么外卖场景,分布式事务解决方案实录

1月18日:实战问题解决方案 - 高性能集群session共享

1月19日:5年JAVA开发,被这道Redis面试题筛下来,Redis底层探秘之旅

1月20日:一线互联网公司全方位监控架构 - 构建分布式调用链路追踪系统


报名方式:

扫描下方二维码添加助教小姐姐微信,

通过审核后即可免费报名







请到「今天看啥」查看全文