坦白局!一个大厂 Java 工程师近 20 年的进阶心得
我是湘王,一位近20年经验的开发工程师,有丰富的VB、PHP、Python、Java开发经验,曾管理过大厂200+人的软件开发团队,任职过CTO(首席技术官),也有持续创业经历,对于Java学而不精,我总结以下两点:
第一,没有清晰的学习路径,知识碎片化,不成系统。比如对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等没有系统深入了解,看过源码了解底层的设计,但缺乏对背后的逻辑清晰认知。
举个例子,如面试阶段会问ConcurrentHashMap,CopyOnWrite,线程池,CAS,AQS,虚拟机优化等知识的应用,如在使用线程池时,因为使用了无界队列,在远程服务异常情况下导致内层飙升,怎么去解决?连线程池都不清楚,你怎么去玩?面对这些问题,如果没有清晰的学习路径,是无法完成从编程思维到架构思维的跨越,实现技术人的职业发展晋升的,很容易在面试阶段被淘汰。
第二,缺乏如编程能力,编程思想,算法能力,架构能力胜任。
一位能够达到2W薪资的程序员对算法的要求我觉得还是比较低,再高级也最多红黑树,但是排序和查询的基本算法得会。编程思想是必须的,问你个AOP和IOC你起码的清清楚楚,设计模式不说每种都用过,但也能了解个几种。
编程能力并不好直接评价,但是拿一个2000W用户根据姓名年龄排序这种题目也能信手拈来。最后就是架构能力,这种不是说要你设计个多牛逼多高并发的系统,起码让你做一个秒杀系统,得有一个明确的思路和方向。
下图是我对C能力认证的解读,清晰定义了软件工程师的能力,能够夯实软件开发核心技术,掌握企业级开发框架,吃透分布式架构,玩转微服务架构,搞定性能调优,完全胜任编程能力,编程思想,算法能力,架构能力。
以上是我经常和搞技术的朋友聊到的话题,互联网行业知识更新特别快,今天一个框架的新版本,明天又是另一个新框架,有时往往根据项目的需要来不断学习新东西。所以,经常感觉到,自己用过的东西很多,但是真正深入研究的东西太少!不同公司面试的着重点不同,工作第一年、第二年、第三年,每年的面试问题都有很大差异,所以各位兄弟一定要保持持续学习的习惯!
如果你是在校大学生、IT技术从业者,想学Java知识,一定要关注4月29日我为大家带来的Modern Java(二):反应式编程,并加入学习群组,与来自全国300所高校的技术爱好者一起交流学习。
CSDN软件工程师能力认证,清晰定义软件工程师能力,扫码进入学习群,群里给大家分享整理的最全Java学习资料合集,想当Java工程师的小伙伴速速收藏!
扫码进群领资料
添加小助手👇,即可开启进阶之旅