最近跟我的一些读者交流,有一位读者的经历让我记忆深刻:
“有一次和大学同学聚会,和几个在BAT的同学聊了聊技术,发现自己在创业公司这几年,完全是吃老本的状态,没有什么机会精进技术,同样是工作了三年,和同学的差距越来越大”
我继续问他,他说真正让他受打击的是这个月的一次面试。
“面的是一个大厂,面试官问了很多问题,一大半的问题我都是一知半解,回答上来问题也是特别没底。
大概回顾了这场面试:上来先是问了Java基础知识,jvm、字符串、集合、线程等等,这部分我还算准备的充分。第二部分开始复杂了,主要是线程、设计模式、缓存方面的问题,像是分布式、集群环境中,缓存如何刷新,怎么保持同步?我之前工作上经历的少,加上自己技术储备浅薄,到这部分时我就感觉自己快凉了。面试到最后,问了设计方案相关的,当时已经懵了,我只记得一个问题:假设服务器经常宕机,你从哪些方面去排查问题?我。。。。“
面完后他说,觉得自己在技术上欠了很多债,最惨的是,在这之前他根本不知道。
听了这位读者的经历,于是有了今天这篇文章。很多工作了1-3年的Java人,想够一够 3w月薪的岗位,但在底层技术上却有很大的问题:
毕业几年,表面上用过很多技术,但都没能深入学习,一年的工作经验,干了好几年。结果就是遇到实际问题时无从下手,最终还是走着普通工程师的道路,和高手的距离越来越远。
都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。
技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Java架构师/技术专家?我总结了这 8 大能力——
源码剖析和框架定制能力
平台性能分析和调优能力
分布式架构设计能力
海量数据存储能力
高并发处理能力
解决方案和中间件实战能力
容器技术应用和集群化部署能力
海量数据搜索和实时计算能力
当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出10 小时用来学习,不出半年,你就能看出变化。
在这里,我整理了几份相关的技术资料以及1000道必问面试题(整整5个pdf文档)&#