后端开发学习经验
首先,对于软件基础知识的学习,建议尽可能地去看一些经典的书籍,看第一遍的时候可以不用太过细致,快速地看,重在了解这本书的知识框架,在把握了整体的逻辑框架之后,第二遍就可以详细学习各章节的细节,这个时候也能根据自己的情况,选择性地去看一些相对重要的章节,效率会更高。对于一些经典的技术书籍,只看一两遍很难完全理解其中的精髓,之后可能还要多次地回顾,也可能在实际应用中再来回顾书中的理论知识,也能更深入地进行理解。例如深入理解计算机系统这本书,内容非常经典,很多地方当你再看一遍又会有不一样的理解和体会。
-
结合面试题,整理每日所看知识点
-
csdn写博客或Github
-
按视频目录建立问题统计
-
cyc github笔记
语言的问题
其实在校招过程中,更加关注的还是基础知识的把握能力,还有项目过程中体现出来的问题解决能力,快速上手能力,个人的思考。
互联网公司校招对语言没有硬性要求,如果语言对口,会针对语言进行一些基础知识的测试。但是如果语言不对口,不会因此直接拒绝,会从其他方面进行更全面的综合基础测评。
学习经验
1、一定要做笔记!!!好记性不如烂键盘,知识温故而知新,每次回顾总结再原来基础上再引申一些新学到的知识,如果能达到这样的效果,就相当于自己在给自己面试!做到面试效果好,还不会紧张
每看完每本书,都要学会去做笔记,对自己所学的知识进行总结消化,笔记中的内容才是自己的东西,而且在我们学习的过程中难免会对一些知识点的理解有所偏差和不足,笔记能够很好地帮助我们发现这些问题,然后加以纠正并很好地记录下来。
2、可以先在网上看看相关的面经,记录常见的考点,在读书过程中及时总结自己的答案,这样既高效,面试时的答案又有自己的理解,绝对加分项!
3、talk is cheap,show me the code. 无论是算法还是开发,只要你是计算机编码相关从业人员,能刷题都是很重要的,这里面不仅可以反映你写代码的速度和质量、思维的灵活性、对常用算法的掌握与迁移以及将抽象的问题具体化的能力,一定要刷题
4、切记不要沉迷于他人的面经和学习路线里,简单看看就好啦,及时跳出来,迅速行动起来才是王道。每个人的学习理念不同,不用照搬别人的学习过程,看这些前辈的资料是让大家提炼总结,摸索出一套适合自己的学习路线。
java语言
《Java核心技术-卷一》:Java入门书籍,刚开始看可能很多概念看不懂,我觉得没必要深究,接着看下去,以后再来查漏补缺最好。
尚硅谷视频:快准狠,把握重点。
Java语言的学习要和数据结构/算法的学习同步进行,语言是工具,前面说到数据结构和算法好比是砖瓦和屋子,这里的Java语言就是将砖瓦连接起来的粘合剂。
数据结构与算法
数据结构
- 大话数据结构
- 浙大数据结构网上课程(B站链接)
算法
- 算法 第4版(有时间的话可以好好看看,没时间的话还是刷题为主)
刷题
- LeetCode中文网站
- 剑指offer 第2版(建议至少刷两遍)
- 程序员代码面试指南(左程云 著)
数据结构可以说是软件设计的精髓,建议将基础打扎实。大话数据结构这本书对于新手,很适合作为入门,用于建立数据结构的知识体系,另外浙大数据结构网上课程也非常不错,B站上直接可以搜到,讲解简明易懂,弥补了大话数据结构中一些讲解不清楚的地方。在学习了数据结构的基础后,可以开始学习算法,建议学习算法这本书,可以帮助你梳理一些常用算法的原理和应用。
在学习数据结构与算法的同时,建议同步学习java语法知识,两者基础都学习完之后,就可以刷题了。刷题的话,建议先刷LeetCode,LeetCode中有一个数据结构的探索专栏,根据难度,分为初级、中级和高级,基本覆盖了各个知识板块的面试高频题,可以帮助新手循序渐进地刷题,培养写代码的感觉。另外的话,剑指offer这本书中也涵盖了很多面试高频题,可以到牛客网的剑指offer专栏中刷题,由于题目难度划分层次不太明确,新手刷起来效率会偏低,建议在刷完LeetCode探索专栏中的初级、中级之后,再去刷剑指offer的题目,其中的题目在面试中出现的非常高频,建议最好刷两遍,熟练掌握每道题的思路和优化方法。最后,作为进阶,可以看左神写的程序员代码面试指南,非常好的一本书,其中讲解的编程题都非常经典,不仅仅限于国内的IT公司,而是面向全球,包含了国外知名IT公司的一些面试高频题,可以帮助开阔视野。
在刷题的过程中,要非常注意方法,一般将刷题方法分为龟系和兔系。龟系刷法的精髓就是每个题目要注意质量,不要满足于一种解法,各种解法都尝试写一写,并对比它们的时间空间复杂度。但龟系不是说在一道题上耗死。越是龟系越要注意时间上要掌握好分寸,能解出来最好,解不出来也不要倔强。我觉得比较好的一个平衡点差不多是一个小时。如果一个小时还是解决不了,可以看看提示,如果还是解决不了,可以看看讨论区的答案或者网上搜索答案。兔系刷法精髓就是要暴力,天马流星拳,大力出奇迹。作为兔系选手,讲求的就是要疯,一上来就看答案,照着答案写。这个做法看起来不靠谱,其实它有内在的合理性:大部分算法都不是我们发明的,如动态规划,二叉树,线段树,并查集,贪心算法等等,到后来所谓的不看答案自己做出来,其实都是在用固定套路。另外编程题的知识点很多很杂,LeetCode中将题目分为各种标签,建议对标签按照广度优先的顺序去刷题,刷题尽量覆盖每个标签。我个人更倾向于龟系,这种方法能够更好地理解每道题的方法套路,也能训练自己的思维,毕竟刷题不是题海战术,刷题质量更重要,每刷完一道题,最好将其中的思路方法记录下来,然后定期做总结,对一些常用方法进行总结分类,慢慢的会发现刷来刷去就是那些套路,你会对它们了然如胸。
力扣300多题,剑指两遍。剑指考的频率很高,建议熟练。力扣我觉得其实大概刷200题然后把刷过的再熟练几遍比一直往前刷要有意义一些。
因为好多题是看题解做的,做完就忘了,我不是很开窍的那种,所以我能做的就是反复刷,光剑指offer我就刷了三遍,勤能补拙。建议大家早点开始刷题,不用刷太多,我找工作前的两三个月已经不再刷新题了,都是反复刷之前做过的,争取看到题目就能给出思路。
前面可以看到因为基础太差,花费了大量时间看书和看视频,导致算法比较薄弱,只会一些非常基础的(200题不到,而且刷两题,忘一题)。算法真的不是一下子就能学会的,如果能把每天休息玩耍的时间用来刷算法题就好了
刷题推荐剑指offer的66道题和leetcode上的hot100,刷过这些题以后应对简单的笔试题和面试的手撕代码就绰绰有余了。再推荐两个按照tag刷题的宝典,一个是github大佬整理的一个名叫CS-Notes的Java复习网站,这个网站清爽漂亮,是lz的心头好没错了(链接奉上:http://cyc2018.gitee.io/cs-notes/#/),他的总结超赞,最棒的部分就是剑指offer和hot100的归类总结,按照这个tag刷题特有之前期末考前疯狂刷同类题型打卡补漏的畅快感觉。还有一个就是有名的《labuladong的算法小抄》,这本书在他的公众号(labuladong)中可以找到,他在leetcode的题解也是十分清新脱俗的,有兴趣可以去观摩观摩。
Leetcode包含了大量的面试算法题。刚开始刷的时候可以先刷TOP100的题目,按照通过率来排序,先从通过率最高的开始刷。遇到不会的题目,可以看看讨论区的答案,找一些高票的答案来学习。或者在Github上找一些Leetcode题解来学习。
补充资料
cyc的GitHub
多看博客、牛客网
学习方法
- 看视频,看视频个人所花费的精力会小于读书,老师会讲的更容易理解与掌握。但是广度和深度都不如书籍,并且因为语速问题,看视频的效率相较于读书要低得多。
- 基于博客和论坛,这也是我后期的学习方法。通常当我们对一门知识有了整体认识后,我们需要做的是对细节内容逐一击破,书上的内容是固定化的,甚至有些晦涩。这时需要我们手动的提取问题,在互联网上寻找答案。并做好笔记与自己的沉淀。适合于已经形成初步知识体系脉络的同学,但是要注意不要轻信某一个博客的内容,一定要多看,自己去体会真谛。
总的来说,
- 刚入门的时候建议使用读书和看视频的方式。对阅读能力和自学能力有自信的同学建议读书,反之则可以从视频入门。
- 入门后形成自己的知识体系,针对弱项查漏补缺,积极在互联网上寻找答案。配合官方文档与源码进行深度学习,并做好笔记整理,有效提高学习效率。
因为看不进去书,每天就看视频+整理面经+刷代码题,后续状态上来了,就开始看书和背知识点
我比较喜欢的学习方式:视频快速入门–>书籍慢慢深入–>再动手实操。
建议:以视频作为基本的复习材料,面经作为复习的方向,博客书籍作为补充。
时间规划
基础知识
基础指的是Java语言和数据结构,同时刷题至少要60-100道,剑指offer是一定要过一遍的,因为要给3月份的实习面试铺路,项目也需要整理出一个简单的框架,可以不用面面俱到,但是一定要逻辑自洽,被面试官问到时不能前言不搭后语,如果进度快就补上计算机网络基础和JVM相关之类的高频考点。
实习
2-3月份的实习不管教研室放不放实习都一定一定要投,一是去见个世面提前下场感受一下秋招前的模拟考,二是去自己心仪的公司探探底到时候秋招就是老熟人了
记录下每次面试被考到的问题,然后查清楚,这为后来的面试提供了很大帮助。
这一波面试完之后有一个重要步骤就是整理自己的面经,没拿到实习offer也不要气馁,根据面试官的反馈完善自己的项目,补充自己的知识漏洞岂不美滋滋,心态放平。3-6月冲刺阶段就需要把上文提到的知识点都补齐,项目也需要精益求精,刷题也要持续进行。
投简历
一定要尽早开始投简历,可以从小公司投起,肯定很多人会觉得还没准备好,我一开始也是这么觉得的,但是!!你永远也不可能完全准备好,投出简历你才会逼迫自己学习,面试会帮你查漏补缺,就算你啥都不会也要面啊,只有面了才知道自己菜,才能知耻而后勇呀!
最好还是要把语言、网络、操作系统、算法这四大块过一遍再去面啊,这样去面试收益才会大,不然真的啥都不会去了除了刺激自己没啥别的用处,而且自己心仪的公司一定放在后面投。
6-9月只管面试,海投是基本操作,当然还是要重复之前的步骤,面试完整理自己的面经,多看博客和完善自己的项目,那会面试成为常态,过关斩将得offer就是信手拈来的事情了。
其它
最后,就是一定要坚持,切忌三天打鱼两天晒网。一定要自己push自己,虽然过程可能比较枯燥,但是当取得成果的时候,一定是很有成就感的。
此外,可以写一些自己的技术博客,面试的时候也是挺加分的。
对于研究生来说,准备秋招的过程中肯定免不了会穿插有实验室的一些工作,这就得看个人的时间规划和安排了,另外效率是很关键的一点,如果遇到了心浮气躁学不下去的情况,建议找个适合自己的方式去放松一下,保持好自己的学习效率。
在秋招求职道路上,只要你能拥有一份清晰且目标明确的学习计划+良好的学习习惯+高效的学习效率+适当的学习记录和思考,都能拿到想要的offer,希望诸君都能享受自己选择的生活~