有人说,今年可能是过去十年最差的一年,但却是未来十年最好的一年。随着越来越多的知名企业进行大规模裁员,我们不得不承认一个事实:经济寒冬与裁员潮,将是未来常态!
个人经历
普通二本毕业,学历不突出,在杭州工作两年,14年来到深圳,从事java开发一晃8年多。
做过外包、跳槽比较频繁,由于内心一直以一个技术人自居,所以一直重技术,轻业务,导致在职业规划上做的很差。
期间尝还试过2次开发方向的转变,一次是2014年左右,移动APP的浪潮时期,自学了安卓开发半年,结果还没等转开发方向成功,移动开发的浪潮就逐渐过去,第一次转变尝试就这样胎死腹中,白忙活一场。第二次是2015~16年,这个时间点正是大数据开发最热门的时期,自学各种大数据框架,无奈受限于学历,并没有找到满意的工作,只能回归java。。。。。。
曾经盲目的追逐了几次技术浪潮,但是又没有真正对自己的职业生涯有多大的帮助。
经历了这些事之后,从此决定安心搞Java,方向确立之后就是考虑提升技术栈了!
确立方向后的恶补
俗话说:“书中自有黄金屋、书中自有颜如玉” 作为码农提升的第一想法就是多读书!!
就这样怀揣着不服输的性格,购买的大量同事及一些大牛推荐的书籍:《Java数据结构和算法》、《重构:改善既有代码的设计》、《代码整洁之道》、《Java并发编程实践》、《Hadoop权威指南、《Java8 实战》、《Spring实战(第4版)》、《深入理解 Java 虚拟机 第2版》、《实战Java高并发程序设计》、《Java性能权威指南》、《程序员的职业素养》等等经典书籍
在网上也找了很多学习资料、进阶视频等等,常常和公司的同事、大牛虚心请教!
小转折
就这样沉下心来学习半年多时间后,我离职了且成功拿到了一家30Koffer的互联网企业!
工作8年多,成长最快的就是这段时期,遇到好的同伴、领导,找到了正确的学习方式,从而也让我明白了技术栈系统化的重要性。
人生的路,一步慢,步步慢,合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代
小建议
八年来的小结:Java程序员必经的三个阶段
第一阶段1-2年
我认为1-2年对于程序员来说是第一个门槛,这一阶段菜鸟正式从理论迈向企业级开发。我们知道如何使用工具、项目版本如何控制、接触并能够使用以下tplaravel等框架完成项目等等,积累了一定的开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段。
第二阶段2-3年
3年又是区分程序员的第二个门槛。有些人在3年里,除了写工作代码,在空余时间基本不会研究别的东西,这些人永远就是个Curd,年纪大一些势必被更年轻的人给顶替;3年的Java程序员除了写代码还需要热衷于学习各种技术实现、不仅对项目运筹帷幄,还要能解决一切性能问题。只有深入学习底层原理、spring、Java虚拟机,微服务,Mysql底层优化等,才能保持核心竞争力,拥有一份不错的薪资!
第三阶段3-5年
到了第三阶段3-5年的阶段,技术体系需要逐渐往大型层次进阶, 有效、高速的处理从很小到非常大的项目管理,随着我们的业务量越来越大和越高并发,单体的架构模式已经无法对应大规模的应用场景,利用分布式架构来冗余系统消除单点的故障,从而提高整个系统的可用性。同时分布式系统的模块重用度更高,速度更快,扩展性更高是大型的项目必不可少的环节。
关于找工作面试
1、面试一定要带简历,这是态度问题,不然容易第一印象就不好。
2、简历上最核心的2点,1是自己掌握的技术栈说明,让面试官清楚知道你掌握技术栈;2是项目中使用了哪些技术栈,体现自己对这些技术栈的实际项目的运用情况。
另外简历不要超过3页。很多早期的项目经验和大篇幅的项目功能介绍,并没有什么意义。
3、准时,实在有突发情况,要提前打电话商量修改面试时间。
4、至少提前几周准备面试,因为java知识体系真的很庞大,不复习下直接面试,就像送人头一样,很容易错失难得的面试机会。
5、java基础一定要掌握好,不然丢分非常严重。之前面试一个高级java,竟然回答不出年轻代的垃圾回收机制,一下子我都不想继续聊下去了。
6、框架的核心特性要熟悉,并对其实现原理有一定的了解。比如:Spring Boot有哪些新的特性?它的核心特性自动化配置的原理了解吗?
7、主流中间件的工作原理和调优有一定的了解。
8、数据库一般也是必问的,索引,锁,事务,sql优化都必须了解。
9、听清楚面试问题再回答,不要答非所问,太过自由发挥。你和面试官聊的越有共鸣,你通过的几率越高。不知道可以直接说不知道,然后再阐述下自己的认知和了解,以探讨的方式让面试官和你互动,这样也能偷师点东西。
10、了解不深的技术栈名词和机制,尽量回避,不然只要你提到,面试官就可能展开深入的问下去。
11、多积累一些技术圈的人脉,很多时候内推进入会容易很多。
12、多积累一些可展示的技术成就和作品,比如参与了某某著名网站或者APP的核心模块开发,在GitHub上开源了什么框架或者参与了什么开源框架的开发,著名博客网站的一些排名,运营某某技术公众号。
上面我们提到系统化学习的重要性,那么到底该如何系统化的学习?
启蒙扫地僧马士兵P5—P8系统课程体系图
阿里巴巴企业及P8架构师学习导图及淘宝大型项目
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
阿里巴巴P7级别系统学习导图
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
一、微服务体系
微服务架构的系统是一个分布式的系统,按业务进行划分为独立的服务单元,解决单体系统的不足,同时也满足越来越复杂的业务需求。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
添加图片注释,不超过 140 字(可选)
二、K8S
Kubernetes能在实体机或虚拟机集群.上调度和运行程序容器。且, Kubernetes也能让开发者斩断联系着实体机或虚拟机的”锁链”, 从以主机为中心的架构跃至以容器为中心的架构。该架构最终提供给开发者诸多内在的优势和便利。Kubernetes 提供给基础架构以真正的以容器为中心的开发环境。
添加图片注释,不超过 140 字(可选)
三、Redis及ZK
Redis是一个开源,内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
添加图片注释,不超过 140 字(可选)
四、分布式、Spring源码及MySQL调优
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
SpringBoot源码解析
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
网约车项目
添加图片注释,不超过 140 字(可选)
微服务体系
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
P8架构视频
添加图片注释,不超过 140 字(可选)
马士兵整理大厂面试专题及大牛简历分享
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
阿里巴巴内部PPT全集及电子文档分享
添加图片注释,不超过 140 字(可选)
马士兵全集视频分享
添加图片注释,不超过 140 字(可选)
资源获取:
大家点赞、收藏、关注、评论啦 、查看微信公众号获取联系方式
精彩专栏推荐订阅:在下方专栏
每天学四小时:Java+Spring+JVM+分布式高并发,架构师指日可待