Java老兵经验分享,给Java初学者一些参考和建议

    简单描述下本人的经历:2013年上海某二本学习机械专业毕业,毕业后进入上海某家中间件公司做中间件研发,2016年跳槽到杭州某家一线互联网公司,在2017年的时候,在杭搞定户口+房子,定居杭州。

入门Java,源于兴趣,注重实践
   当年进入IT行业纯粹是为了兴趣,喜欢写代码,从大二开始学习计算机,后面一直边看书,一边看视频,一边写代码,到大四的时候,我的Java基础自认为已经非常好了。大学里面自己做了很多实站的项目,例如:学完线程和面向对象后写了经典的90坦克大战游戏,我印象中是一个清华大学的韩老师教的视频教程,我跟着写完了那个游戏。学完JavaSE后写了满汉楼餐饮管理系统。学完JavaEE的时候,采用struts写了BBS。学完hibernat和spring的时候,写了OA和在线购物网站。所以本科期间我的心得是:多写代码,多实战,代码行数写的多了,自然就有信心了。

实习经历和第一份工作经验
   毕业的时候,有次心血来潮写了个代码统计我大学写了多少行代码:105715行,我知道自己可能可以通过java找到工作了,实战经验+基础都自认为不错,在大四刚开始的时候就出去找实习工作了,找了一家做技术的公司,搞中间件,很幸运,第一次面试就通过了,后面一直到毕业,就找了这1次工作,后面就再也没有担心工作的事情了。实习期间薪资2700+300补贴,那是在2013年的时候。然后大四一年我就在那里实习了,毕业后,因为那家公司技术氛围不错,也能学到很多技术,就留了下来。直到3年后2016年,因为老婆怀孕了,计划回老家发展,所以准备跳槽到老家湖南长沙找份工作,选择离开了一线城市,其实还是因为上海买不起房子,没办法定居。

第一次跳槽,进入一线互联网公司
   16年换工作就是直接锁定互联网公司,知道互联网是个趋势。13年到16年其实我是在传统行业,做的是传统行业的中间件软件。去互联网公司面试,需要准备很多互联网分布式相关的东西,所以平时其实也在积累一些互联网相关的东西。在刚工作的2,3年内,看了非常多的开源框架的源代码,对常见的开源框架比较熟悉,如经典的SSH, mybatis,dubbo,netty,zookeeper,redis,tomcat,jetty,nginx等。
    互联网相关的技术栈那个时候并没有积累多少,但是由于看源代码看的比较多,本身做中间件,技术基础比较好,对技术有热情,所以跳槽面试的时候,几乎去了的公司都过了,那个时候手上大概有5个互联网公司的offer。因为3年左右的工作经验,对技术有热情,很多公司特别愿意要,所以一跳一个准。但是这些工作几乎都是上海的互联网公司,没有长沙的工作,找了长沙的工作,但是待遇非常差,几乎是我毕业第1年时候的待遇,所以接受不了,就没有回老家发展。
   后来比较手上的offer,准备在一家做互联网金融的公司和一家做音频的公司之间做选择,选择了互联网金融,主要是给期权,基本薪资都差不多20k左右,15个月。但是做互联网金融的那家公司人事比较坑爹,知道我小孩子要出生了,让我小孩子出生以后再去上班,防止我一上班就需要调休。所以我在家呆了1个月。也正是这一个月,猎头把我推到了一线互联网公司,后来就进入一线互联网公司了。所以在前3年工作经验,我的经验总结就是打好Java基础,多研究开源框架源代码,对后面的职业发展有非常大的帮助。
分享了这么多工作经验,我也通过分享一些书籍我看过的觉得比较好的书籍,可以掌握java领域里面的这些知识:

JavaSE
Java编程技术(谭浩强编): Java入门书籍,java语法介绍。其实第一本书我当初并没有特别选择,就是直接看的谭浩强的Java语言程序设计,但由于我没有基础,一开始啃的很慢,后面看了书以后,通过视频巩固了一遍,最后通过实战项目练了一遍,Java就算入门了。
Java编程思想(第4版):这本书必须要有一定的java基础才可以看懂,如果没有任何计算机相关的基础,不推荐阅读。如果java入门了,这本书可以夯实java基础,可以深入理解Java的语言特性,以及为什么Java要这么做。当年我啃了3遍,第一遍有些看不懂,后面慢慢的看着就可以看懂了。到第3遍看的时候,感觉Java基础掌握的差不多了。
《Effective Java中文版 第2版》:有Java实战经验后,这本书对java实战编程有很好的指导,可以写出非常规范的代码,google里面推荐Java的编程规范

并发
JAVA并发编程实践(中文)
java_并发编程方腾飞

设计模式
设计模式:可复用面向对象软件的基础 :23种经典设计模式,对扩展性思维非常有帮助,可以写出扩展性良好,方便维护的代码。java程序员必读书籍
研磨设计模式:相比前面那本书,这边书较厚,有很多例子,方便实战,可以配合着看
重构改善既有代码的设计

JVM
深入理解Java虚拟机:JVM高级特性与最佳实践.周志明.高清扫描版.pdf:这本书对JVM有全面的介绍,JAVA内存模型,class结构,常见java虚拟机问题处理等。新人不用看这本书,有1-2年工作经验了再研究不迟

分布式
分布式java应用:这个应该是分布式的入门书籍,我当初入门分布式是通过这本书
大型网站系统与Java中间件实践:分布式经典套路
大型网站技术架构_核心原理与案例分析:大型网站架构套路

架构
领域驱动设计_精简中文版
架构之美(清晰中文完整版)
一线架构师实践指南(温昱)

总结
    如果你是刚入门,方向如果是互联网或者服务端,你的学习路线可以是(也是我的学习路线),仅供参考:
JavaSE -> Servlet & JSP -> SSH(有点老了,可以直接mybaties+spring boot) --> 并发+分布式 --> 架构

   如果你是有1-3年工作经验的人,准备进入互联网,有些书我是强烈推荐:
JVM:深入理解Java虚拟机:JVM高级特性与最佳实践.周志明
设计模式:可复用面向对象软件的基础,经典的23种设计模式
分布式:分布式java应用.pdf,大型网站系统与Java中间件实践,大型网站技术架构_核心原理与案例分析
架构:领域驱动设计 (当然还有其他架构模式,但是我们现在的公司使用这种模式)


    很多书籍我看了不只一遍,有时候第一遍也看不懂,多看几遍才能理解,而且看的次数越多,理解越深刻。为了方便大家下载,这些书籍我上传到了一个公共的地方,这里不方便分享,见评论即可

   后面如果有时间,我可以分享我当年入门的79G左右的Java视频教程

你可能感兴趣的:(其他)