这个问题让我看到了两年的自己……
先说说我的情况吧。国内末流211,校招进了鹅厂。在鹅厂工作了1年,手上的业务都熟悉了,每天例行完成工作,偶尔划划水,突然感觉很空虚……
我在的部门属于砸钱部门,虽说工资也还过得去,但不像王者荣耀组有那么多“油水”可以捞,于是我就有了一个大胆的想法——在职跳槽。
陆陆续续面了字节、阿里、美团几家中大厂,惨不忍睹……跟大家简单分享阿里的那次挂经:
问:JDK和JRE的区别?
答:JDK包含了JRE,同时还包含了Javac和很多Java程序调试和分析的工具。运行Java程序只需要安装JRE,如果要编写Java程序,需要安装JDK。
追问:除了Javac你还知道哪些命令行工具?
答:Jcmd、jps、jstat、jinfo、jmap、jhat等。
再追问:用过jstat吗?你了解哪些参数?
……
面到这会儿我内心已经快崩溃了,才发现自己所谓的“功底扎实”,不过是局限于平时的增删查改技能,涉及到底层的问题就是一盘散沙。
其他几家公司也差不多情况:初面尚可,问到底层的源码和细化概念就只能答个皮毛,我也是从这时候发现自己的知识体系太薄弱了。面试官会抓住简历中的项目,不断深挖技术,重视对知识点的理解程度。
这不仅仅是“大厂螺丝钉”的毛病,我身边很多和我一样工作了1-3年的工程师也和我一样有这样的困扰:感觉自己缺乏完善的Java知识体系,技术水平始终上不去,尤其是到了面试关,总是屡战屡败。
关于如何突破瓶颈,推荐去免费体验P8工程师杨逍老师的《Java高级工程师P6+》,课程内容包括技术栈的通透讲授、源码的分析导读、贴近实际的工程实践以及大厂思维的架构升级,这门课程非常看重实用性,设计理念就是通过真题搞定BATJ大厂面试,听完课程后,确实让人受益匪浅。
虽然我暂时还不想跳槽(鹅厂还是很香的),但不得不说这门课给当时的我很多启发,也让我明确了将来的职业发展方向。
至于发展路线的话,参考杨逍老师给出的Java工程师发展晋升路径:
P5:应届生或是工作1年左右的工程师,重点了解
①Java语言高级特性(教科书上没有的东西),并发、算法、线程、模板使用……
②关系数据库:索引怎么建,索引算法是什么,怎么调优,百万到亿级数据量之间要做些什么工作;
③面向对象/设计模式:一般通过项目来讲,目前做的项目、OOD的调优
即拥有高质量的coding能力,能掌握算法和数据结构的正确操作、高效使用关系数据库、运用设计模式改善软件架构,专注于技术栈的通和透。
P6:工作1-3年的工程师,面试官着重抓住简历中的项目,不断深挖技术
Spring框架、RPC框架、并发/多线程编程、动态代理等
即拥有独立的架构能力,能够用主流框架思想改善系统架构、熟悉主流中间件的原理和运用、拥有高可用架构的设计实施能力,升级为大厂程序员的视野。
P7:工作3年及以上的工程师,必须掌握:
高可用架构(国内非常重要),JVM原理和优化跟国外差异也比较大,Spring cloud面试官一般会深入了解,云计算说得好很有含金量。
P7已经是行业技术专家,需要拥有技术专家的底蕴,懂得微服务架构的理论和实践、高可用架构设计思想、熟知JVM/框架/中间件底层。
按照这条路走下来,就能拥有一条较为完善的职业发展路径,相信题主也能不那么迷茫了。总之,无论内卷与否,程序员一定是个终身学习的职业。题主仅仅入职了半年,就开始考虑未来的发展路径,真的非常难得!
总之,现在行动起来一点也不晚,无论今后时代的洪流将我们冲向何处,我们能做的只有精进自己的技术水平和能力,不断向一线大厂架构师的方向看齐!
加油!