在这个互联网动辄上亿流量级别的时代,Java作为后端服务使用最广泛的语言,诞生了一批又一批的新框架,包括HBase、Hadoop、MQ、Netty、SpringCloud等等 。
一些独角兽公司以及BAT等知名大厂对Java人才的需求量连年升级,但与此同时对人才的要求也越来越高。面试官经常会考察如下问题:
聊一聊你对JVM的原理,如何减少Full GC的情况?
针对高并发场景,如何优化,都采用了什么技术?
相比关系型数据库,NoSQL的优势在哪里,你们在什么场景下会用到?
可以看到,对于有2~5年工作经验的开发者,更注重的是一些项目有深入的实战经验。但很多同学在技术生涯最初几年都会沉浸在业务开发中,忽视了对系统知识的梳理和技术视野的扩展。日复一日,导致很多同学就以为这就是技术的全部,同时在重复的体力劳动中也丧失了对技术细节的深入探讨。
每个程序员都追求“成就感”,而获得成就感最好的方式就是自己在技术上的突破。
以工作前5年的规划为例,至少需要突破三个层次:
对代码精益求精
最开始工作的时候,我们会抱怨业务需求对技术没挑战,觉得在学校学到的这么多知识却没有用武之地。
实质上这是忽略了技术开发的本质,技术开发是一个工程项目,而工程项目的落地最重要的就是细节控制,也就是代码的品质,比如:
代码是否遵循了规约?接口设计的是否随意&#x