学习2
作者:Free96
链接:https://www.nowcoder.com/discuss/579545?type=post&order=time&pos=&page=1&ncTraceId=&channel=-1&source_id=search_post_nctrack
来源:牛客网
Java学习的过程就是逐渐掌握一门技能的过程,得先跟着老师傅学习,一开始要会模仿, 找准方向和路线 是首要任务。和大多数人一样,一开始接触这个领域时我也是迷茫糊涂的,所以去搜集了大量的学习路线,比如牛客讨论区的帖子、学校论坛的就业创业板块以及一些优秀的公众号(推荐公众号:编程剑谱、CyC2018、CodeSheep、labuladong、菜鸟名企梦、程序员乔戈里……悄悄说一声,这里边有些公众号的前期内容都是很精华的,后期可能因为粉丝量增多,软广频率增加,内容质量有所下降,这也能理解,毕竟博主也是要恰饭的,所以大家看的时候可以往前扒拉扒拉,找一开始的精华帖看)。切记不要沉迷于他人的面经和学习路线里,简单看看就好啦,及时跳出来, 迅速行动起来才是王道。每个人的学习理念不同,不用照搬别人的学习过程,看这些前辈的资料是让大家提炼总结,摸索出一套适合自己的学习路线。
下面是我自己学习的基本路线。
首先是 数据结构与算法 (重要程度:5星,难度:4星),数据结构和算法是编程最最核心和基础的部分,如果说算法是一间屋子的话,数据结构就是屋子的一砖一瓦,想把房屋建得漂亮,就得对数据结构的知识运用地熟练灵活。有的同学喜欢看视频学习,我个人倾向于看书学习,因为看书可以自由选择摄入的知识,且可以自己控制速度和节奏,但是看视频就得按照老师的节奏走,老师的节奏适用于大多数的学生,不一定刚好适合自己。所以这时就要好好想一下自己是哪一门派的,视频派还是书虫派,找准学习手段也是自学成功的要诀。因为自己是采用看书的方式学习的,所以后面推荐的都是书籍形式的资料,所以对书虫派比较友好。数据结构我推荐《大话数据结构》,算法推荐《算法-第4版》,学习数据结构我有一个很深的体会,就是遇到不会的不要死磕,碰到卡壳进行不下去的地方,可以先跳过,回头再看的时候没准就豁然开朗了,因为数据结构和算法本来就是环环相扣,触类旁通的,前后的知识是互为补充的,后面的知识也许可以解答前面的困惑。这里基础打扎实了,后续写代码就事半功倍了。
Java语言 (重要程度:5星,难度:3星)的学习要和数据结构/算法的学习同步进行,语言是工具,前面说到数据结构和算法好比是砖瓦和屋子,这里的Java语言就是将砖瓦连接起来的粘合剂,当然不只是Java,其他语言如C++和Python也是不同功效的粘合剂。我同样是采用看书的方法来学习Java语言的,以前没接触过Java,所以刚开始看书很难受(但是总归是比C++要简单,C++的指针打败我了),可能聪明点的同学上手会更快一些,Java语言入门我推荐《Java核心技术 卷Ⅰ》,这本书不像Java圣经——《Java编程思想》这么厚,作为入门还是全面且通俗易懂的,当然对于学有余力且好钻研的同学来说,还是首选Java圣经。
前面两步完成后,就可以快(tong)乐(ku) 刷题 了,一开始刷题真是一种非常愉(zhe)悦(mo)人的事儿,有时候对着一道题会死磕半天时间,却还是毫无头绪,看了答案可能还是一头雾水,这种时候真的超想放弃,但是请一定坚持下去,来来来,做完这道还有三道。哈哈不开玩笑,这种时候坚持不下去怎么办呢?我有一个妙招,因为知道自己不是自驱力很强的人,所以拉了几个同样苦兮兮死磕Java的小伙伴建了一个刷题小分队,每天必须在群里发两道题,如果没完成就要给群里的小伙伴发红包,金钱的力量真是伟大呐,光flag立起来是不够的,非得要金钱刺激下才能在一次次“解答错误”中杀出一条血路。刷题推荐剑指offer的66道题和leetcode上的hot100,刷过这些题以后应对简单的笔试题和面试的手撕代码就绰绰有余了。再推荐两个按照tag刷题的宝典,一个是github大佬整理的一个名叫CS-Notes的Java复习网站,这个网站清爽漂亮,是lz的心头好没错了(链接奉上: http://cyc2018.gitee.io/cs-notes/#/ ),他的总结超赞,最棒的部分就是剑指offer和hot100的归类总结,按照这个tag刷题特有之前期末考前疯狂刷同类题型打卡补漏的畅***觉。还有一个就是有名的《labuladong的算法小抄》,这本书在他的公众号(labuladong)中可以找到,他在leetcode的题解也是十分清新脱俗的,有兴趣可以去观摩观摩。
计算机网络 (重要程度:4星,难度:2星)也是后端开发程序员绕不开的话题,计算机网络就推荐一本书《计算机网络自顶向下》,现在貌似已经更到第六版了,英文原作十分精彩,奈何中文翻译十分拉跨,但是翻译再不济也还是无法掩盖这本书的精彩,刚看的时候十分晦涩,越往后看就越精彩,耐着性子熬过前50页,适应了本书作者又长又难懂的遣词造句习惯后就会慢慢爱上这本神作的,trust me!二刷不亏,你值得拥有。简明版的计算机网络知识同样可以参考CS-Notes,可以用它来理一下计算机网络的复习重点和框架,也可用作面试时的面经。
Java语言只是学个基础是不够应付面试的,Java语言基础打扎实了,题目刷的差不多了,就要开始 Java进阶 (重要程度:4星,难度:5星)打大boss了,Java进阶包括两大部分,分别是Java虚拟机和并发编程,JVM推荐周志明的《深入理解Java虚拟机》,神作+1,几乎涵盖了JVM的全部必考知识点,后期面试的时候面试官问到JVM相关只需要背出书中片段就可以轻松进入next stage了,当然我不建议大家靠记忆背书,JVM相关的知识还是很美妙的,尤其是垃圾分类相关的,这一套算法演变过程是一代代程序员智慧的结晶,我曾经一度被这些优秀聪明的性感大脑所征服,哈哈扯远了。并发编程强推《Java并发编程的艺术》,这本书不建议裸看,门槛有点高,搭配高一鸣的《Java高并发程序设计》食用味道更佳哦~操作系统和设计模式我偷了个懒,没有系统地复习,只是看面经过了过知识点,这两块如果有心力可以找本书简单看看,我没看过就不给大家瞎推荐了。
数据库 (重要程度:4星,难度:2星)是加分项,银行和某些大公司的数据分析岗要求较高,简单好上手,推荐两本书,《MySql必知必会》和《高性能MySQL》,前者是本小巧的字典类的书籍,确实是MySql必知必会的知识点,挑一小块就可以看完,低投入高回报,稳赚不亏。后者比较厚,后续面试的时候挑重点章节酌情复习就好啦。
Java项目 (重要程度:5星,难度:5星)的话,大家可以去慕课网或者牛客等博客上搜一搜找一找,最好是有高并发和分布式部署的,这样子面试的时候可以cover住面试官的问题,就能反客为主进入自己擅长的领域就比较舒适啦。要不然没有项目,面试官和你死磕基础那真是太太太酸爽了,深不见底的基础题,分分钟问到你怀疑人生。当然项目学习会耗时长一些,学会适当的包装也是很重要的,这个就是一些面试的小技巧啦,有机会的话我们之后再聊。
因为只是一枚编程小白,和牛客很多大神比起来还是有很大差距的,所以面经的深度还是不够,以后还是希望在Java开发的道路上越走越远的,如果有牛客的大佬不吝赐教,欢迎指点一二。今天就说这么多啦,第一次发面经贴,有点小啰嗦,大家多担待,如果后续反馈不错的话,再继续更各大公司的面经啦~
最后送一句尼采的话给大家,这句话鼓励我走过了孤独难熬但充实的秋招备考季。
“谁终将声震人间,必长久深自缄默;谁终将点燃闪电,必长久如云漂泊。”
共勉。