关于自己
楼主本硕专业均为材料相关,研究生才开始系统学习相关知识,稍微一丢丢晚,但是这怎么能阻挡我对计算机的热爱之情呢。废话不多说,上干货。
学习路线
路线一
以视频为主,视频能帮我们快速的进行实操,跟着老师走也基本不会有太大的错误,大部分视频来源于哔哩哔哩,以尚硅谷和黑马的为主,高清、不花钱,你值得拥有,下面具体说下学习过程,按照先后顺序大概如下:
Java方面:JavaSE,JavaWeb,JavaEE主流框架,大概就是Mybatis(最常用,灵活简便),Hibernate(这个好多公司都没用,重量级,学起来比较费力,容易头晕),Maven(开发必用),Spring,SpringMVC(现在开发的话基本就是Spring家族的天下了,可想而知其统治地位),git和svn(版本管理工具,git 愈发流行了,推荐廖雪峰,视频公众号后台回复 非科班的视频推荐)。是时候拿出压箱底的图了
数据库方面:MySQL,Oracle,Redis。MySQL是开源的关系型数据库,大部分公司用这个,Oracle收费的,银行用的比较多,二者都实现了标准的sql语句,推荐首先学习MySQL,一通百通,而且面试都是问MySQL,把它搞定就行了。Redis是最常用非关系型数据库,学起来比MySQL容易些,上手快。
分布式方面:Dubbo,SpringBoot,SpringCloud。分布式是未来发展的主流,dubbo以后也作为spring家族的一员专注远程调用这块。SpringCloud有一整套的微服务理念的落地实现,只能说很强!
Linux,推荐兄弟连的,一节视频很短,幽默诙谐,想看视频的还是一样,公众号后台回复 非科班的视频推荐,不过同学们记得做笔记啊,知识点很杂和多;Netty高性能网络框架,这块有时间可以看看视频,原理还是比较简单,推荐这个网站
路线二
以书籍为主,视频看完基本就再也不会看第二遍了,书本能让我们反复的去咀嚼,深挖其中的原理,从而记忆更牢固,一本好书能够让你学习起来更加轻松愉快,下面推荐的书籍都是我从各个渠道收集而来,口碑较好的书籍:
计算机基础方面:《计算机网络自顶向下方法》吐血力荐!书中从生活中的小事举例,形象生动,深入浅出,印象深刻,极易理解,本来网络这个东西就很抽现,看不见摸不着,选择他作为入门,我只能说或许你又快人一步了!《数据结构与算法》只要踏入这个行业,这个东西就必不可少,但凡说到原理,就是在谈这个东西,所以它的重要性是不言而喻的,而且面试笔试中也是必问的,答应我,好好学,好吗!(尽管我也学的很菜)《计算机组成原理》、《操作系统》这两本书开发中运用的比较少,但是非常有助于我们理解其底层运行机制和运行环境,当然如果你觉得一直搬砖也不错的话,略过。这四本书是计算机的基础,最好是能够多看几遍,对于后面的学习大有裨益。都是机械出版社,从外文翻译过来的,封面风格一致。
数据库方面:《高性能MySQL》这本书有点厚,知识点很全,适合作为工具书,《MySQL 技术内幕—InnoDB 存储引擎》此书讲的很底层,适合有一定基础的时候再看,但是个人觉得存储原理那块讲的特别好,有了此书,分分钟碾压面试官好嘛,《Redis设计与实现》讲的挺透的,但是个人对这本书没有太多的感觉,酱紫。
Java方面:《疯狂Java讲义》,《疯狂Java程序员的基本修养》作者李刚,这两本书比较基础,适合小白入门及查缺补漏,没事多翻翻,《Java编程思想》Java学习必读经典,不管是初学者还是大牛都值得一读,但是我还是罗嗦一句,小白慎入,有点厚,压力有点大,哈哈。《轻量级JavaEE应用实战》也是李刚的,这本书比较综合了,建议先看框架视频,然后再看书理解起来比较容易,这书不是一般的厚,厚到让你怀疑人生,仍记得从图书馆借出来后,旁人看我的异样眼光,这种书一般不用挨着看,挑重点。《深入理解Java虚拟机》Java高级程序员必经之路,对Java有着深入的剖析,开发中少用,但绝对值得细细品味,《Java多线程设计模式》可谓是Java中最让人头疼的一部分知识,但是又不得不学习,算是高级知识了,怎么说额,硬着头皮上吧。这些都是从事Java开发的必要知识,也是Java面试的重点。
算法方面:《程序员面试代码指南》左神的倾力之作,你离大神只有一本书的距离!《编程之美》和《剑指offer》程序员中几乎人手一本,你不买一本好意思说自己是程序员?把这三本书中的中等题刷完也完全足够对付面试和笔试中算法题了,别说手撕代码,手撕面试官都没有问题,好吗?
其他方面:《鸟哥的Linux私房菜》此书也是我的入门书籍,内容较多,适合当作工具书查阅,甚至被封为“linux入门神书”,不接受反驳。
路线三
经常去各大网站都能够学习到很多东西,互联网学习需要你一种开放的心态,既要学会从中获取,也要学会给予。列下我经常去的几个:开源中国,csdn,牛客网,知乎,github,Stacoverflow。一路走来他们都有帮我解决了很多问题。我们都知道很多东西都是开源的,尤其学习源码特别有帮助,下载各种软件和工具也是十分方便,多尝试去阅读英文,对自己有好处,也是你区别于一般程序员的一种体现。
学习完以上知识后,一定要找几个综合一点的案例实操,从头到尾,从前端到后台撸一遍,了解真实的企业开发流程和常用工具,这个十分重要,虽然不能够与真实环境相比,起码越接近越好撒,给网上比较好的综合案例吧,博客案例公众号后台回复 非科班的视频推荐。然后有了这些经验,就可以去找实习了,过程比较虐心哈,你们自己去体会。
秋招的时候,有实习经历肯定会加分的,但是没有实习的也有机会的,面试问的最多的还是基础,基础,基础,重要的事情说三遍,特别是计算机基础和Java基础,常用框架基本是问底层原理。
杂谈
作为一个转行人员,与科班出身的不一样,从头到尾我们必须要清楚自己的目标,每一步该干什么,大概花多长时间,遇到困难也要自己解决,经常就是一个小问题一卡就半天或者一天过去了,但是这些坑都要自己一个一个去踩,才会有所进步,才能有所成长。
报班与否:我自己当初也是面临这个选择。每个人的情况不一样,学习效率、时间块、财力、学习资源等等因素。报班好处:系统学习,整个计划不需要自己考虑,困难小,时间稍短,资源多;坏处:压力大,节奏快,花钱,自己思考的时间少。当然自学的话,面临的困难更多,但是解决问题的能力也是蹭蹭的,你需要有一颗强大的心脏。
准备时间早晚否: 送分题,肯定是越早越好。但是实际上由于视野受限,一般大多数人不会很早准备
笨鸟先飞,但是如果没有方向,最后也会不知所踪。一定要对自己有个规划,然后一步一步的学习,只要下定决心要学,无论哪种方式,坚持、积极终会有所回报的。
作者:蜗牛伊1
End
关于本号
作者乔戈里亲历2019秋招,哈工大计算机本硕,百度java工程师,欢迎大家关注我的微信公众号:程序员乔戈里,公众号有3T编程资源,以及我和我朋友(百度C++工程师)在秋招期间整理的近200M的面试必考的java与C++面经,并有每天一道leetcode打卡群与技术交流群,欢迎关注。
3T编程资料等你来拿