趁着周末,泡图书馆写点啥,很庆幸自己养成了写博客的习惯,将某个时间的技术经验记录下来,为自己也为他人将来提供些许的帮助。足矣。
想想自己,2015年夏末毕业于某985院校硕士专业,考研对于我大学来说,是找不到理想工作与为了证明自己的一个选择。后来三年的研究生生活确实是我人生的一个转折,这三年中,无奈与理想,感情矛盾与毕业压力,常常在某个时间高频率地让我急躁不安。后来发了一篇一点几的SCI文章毕业。我们这个专业确实让人头疼,而且高校培养与社会需求严重脱节,因此也诱发了我转行的念头,15年8月一时冲动来到上海,人生地不熟,幸亏有高中同学伟哥的收留和帮助,写到这里,感觉没必要写我的个人生活琐琐碎碎。还是总结下一个转行搞软件开发的我的自述吧。
刚开始确定转行的人,无非是要不像我一样,对本专业前途不看好;要不就是现在的工作收入待遇不能满足个人的需求。当然也有一部分纯粹为了兴趣(这部分应该很少吧)。
但转行前,确实建议考虑清楚,因为这条路不好走,确实不好走,在你决定转行并付诸行动的起码一年内,但凡你确实想掌握技术,伴随你的是无尽的苦恼与怀疑、放弃。真的,假如身边没有一个支持你的人,自己很容易就放弃掉了,这里多谢伟哥的默默支持。
在找工作前,一定要把java的基础知识掌握好,最好的方法就是一旦掌握了一点,便搜些相关的demo去实践。眼高手低导致自学的效率极低。拿个比方,工作中集合collection使用的频率很高,我在掌握了基本的list和map后(这里画个重点,当时的所谓自我感觉掌握其实随着后边的不断使用集合,会有不断的重新认识,会让你觉得当初所谓的‘掌握’就是没掌握),一直保持不断的在后续的学习中穿插着去使用集合。理解伴随着实践直到深深刻入你的脑子里。
这里说下java的基础,马士兵的视频还不错,我入门就是看的他的视频,讲的基本面都是基础,不懂的地方也很多,但这是个过程,不懂就去问就去查就去实践,直到弄懂为止,当然这个过程中,会有怀疑和放弃的念头,很庆幸,我坚持过来了。前面这些是你作为一个java开发的基础和重中之重。
其次就是数据结构和算法,我看的是机械工业出版社的那本java语言描述的数据结构和算法,重点看这几个方面:1)理解不同数据结构的时间复杂度,选取不同的数据结构要晓得它的时间复杂度,这样才会去优化。2)list中arrayList和linkedList的实现和优缺点,这个面试问到的概率很大。建议自己实现一下这两种list。3)map的实现,map很重要,很多list解决不了的存储用map即可,要自己实现一下,并理解map存取时间复杂度O(1)的原因。4)堆栈,这个要看一下,但不是重点。4)树tree,二叉树的实现和使用,平衡二叉树等,这部分自己看的也不好。5)图,基本没看。再就是算法,算法对于初学者来说要求太高了,但要掌握基本的算法比如递归和排序(冒泡、二分、快排及它们的实现和时间复杂度)。
最后,数据库要掌握,开源的MySQL就好,掌握如何用JDBC去连接数据库,并在java代码里CRUD数据库表数据,像基本的crud sql肯定要掌握了,这里可以在学习的主时间外找时间去掌握,但是必会的部分。升级版的还有Hibernate,Mybatis。
掌握了java基础知识、基本的数据结构算法和数据库后,我觉得可以找工作了,为了增加简历的亮点,但是你又是转行没有项目经验的情况下,建议在之前自学的过程中,尝试写一个或几个demo,这几个demo要用到框架(这个下面讲),因为现在的公司基本上都是基于主流框架去做开发的,你用过框架会给你加不少分数。
这部分应该写在前边,但我觉得它的学习路线应该是放在后边。主流的框架便是Spring了,其中的SpringMVC和SpringBoot目前最流行,但框架的使用我建议边用边理解,这部分很多东西都是在实践中掌握的。两大特点:依赖注入和面向切面编程知道其如何实现,它们支撑起了整个框架,上边提到的demo怎么去做呢,网上用springMVC搭建的demo很多,拿一个过来重复造下*,当然最好加一下自己的东西进去,SpringMVC+Hibernate + MySQL + HTML的组合我觉得就可以了,
前端要了解的,放到最后是因为它是最简单的部分了,这部分涉及了HTML、JavaScript、css,当然,你在掌握了java基础的前提下,学习这些都不在话下。
上边这些只是让你作为一个转行的新人来说,找到第一份工作的前提,当然也不是所有都要掌握,找工作本来就是自我能力加时机和机遇,要合理的去规划自己。
写在最后,看到这里的朋友,假如你马上要付诸行动了,我祝福你成功,但不论你当初转行的初衷是什么,我希望在以后的工作中,要时刻保持自己学习的习惯,转行不易,所以你要比别人更努力和更投入地去学习,拿个例子,你项目中用到了反射,仅仅停留在晓得如何用层次上是远远不够的,这里就可以大张旗鼓地扩展开来,反射的背后支撑就是对象的类信息可以用来实例化对象,等你掌握了反射的原理和实现,那它又会用在哪些方面呢?远程方法调用、对象序列化……..一个点可铺开后可以让你掌握几个技术栈,何乐而不为(苦笑)? 保持怀疑和疑问,诱使你不断的去学习和探索,当然这个过程中你的能力不断的提高,这个毋庸置疑。这种产生疑问—-尝试解决—解决获得成就感—产生疑问的循环也是你能够一直坚持下去的动力所在。
有疑问可以交流,我的微信:linfujian6439
好了,先写这些,以后等想起什么来了,再更新。
————————–更新线——————————
关于看书,这里真心不推荐什么java30天速成,三个月搞懂xxx之类的,看这些书无疑是在浪费时间,我推荐几本:
初期:headfirst系列java;thinking in java;数据结构与算法(java语言描述);