秋招收割机
前言
刷题是所有学计算机的学生找工作找实习前必须要做的事情。首先解释下刷题的用途:无论你是找实习还是找工作,都会经历机考,甚至在面试中,也会遇到需要手撕代码的环节。其次解释下为什么各大企业招人的时候需要有这个环节:其实很简单,和高考一样。在投递简历人数众多的情况下,我们需要有一种方式来快速筛选有能力的人,机试就是一种简单有效的途径。它不仅能考察逻辑思维能力,而且也可以考察基础是否扎实。可能大家都看过小镇做题家这篇文章,从我的角度来看,我觉得大家没必要抱怨太多。很多时候大环境使然,我们没有办法与之抗衡。与其抱怨,止步不前,徒增烦恼,不如踏踏实实补自己所短。多走些弯路未必是一件坏事。
那么就拿算法题举例吧,如何快速高效的进行刷题?我们可能有这样的经历,算法题刷了一遍又一遍,答案的思路写了一遍又一遍,但是换一种问法或者求解方式,又不会做了。其实笔者之前也有这样的烦恼,一味的想以数量取胜,一个月刷了两三百道,但是在面试手撕代码的环节有时候也会出问题。我觉得刷题也可以从以下几个方面来进行,追求事半功倍的效果:
- 框架式做题。很多算法题的算法思路都是如出一辙,比如都是用到递归,或者深度优先搜索这样的算法思路。我们要做的是在刷算法题的时候,可以将其总结为框架。比如dfs,结束的条件该怎么写,在哪里进行递归等等。网上也有很多算法框架总结,用框架去做题,能够达到事半功倍的效果。
- 一题多解。每道题其实基本上都可以用暴力枚举的方法解决,但我们追求的是时间和空间上的最优,所以在做题的时候需要深入的思考,这道题还可以用哪些思路去解决。不仅对你之前学过的知识进行提取凝练,还可以迅速提升自己的做题水平。
- 见多识广。当胸有成竹(有了基本的框架),手持方天画戟(有了一题多解的能力),就可以去斩妖除魔(多刷算法题)。一般秋招的话,我个人认为力扣上大概刷四五百题就足够用了。如果每日一题这样的进度的话,大概在实验室需要提前一年每日抽出半个小时的时间刷一道算法题。至于是按照类别刷题,还是随机刷题,看自己的喜好。
刷题步骤
刷题网站
目前大家常用的刷题网站有两个,一个是leetcode(链接是中文网站,如需刷英文题,可以去leetcode英文网站),另一个是牛客网,两者各有优劣吧。力扣的话有每日一题,做完可以打卡获得积分,积分到一定数量可以兑换礼物,同时还有收藏错题本记笔记等功能,很多大佬也会在这里写自己的解法思路,对于自己的思路培养还是很有帮助的。牛客主要是对接企业,熟悉牛客的环境可以帮助你在笔试以及手撕代码环节沉着应对。我个人的思路是可以两者结合着使用,用leetcode培养算法能力,用牛客熟悉环境。当然还有其他的一些刷题网站,比如北大的OJ, acm的OJ,PAT等网站。应付秋招的话,我觉得开始说的两个网站就够用了。
刷题思路
如何培养框架式思维,现在其实有很多已经帮你总结好的成熟的思路和套路, 我这里给大家推荐一个:labuladong的算法小抄。我个人感觉这是能把算法刷成一种框架的有效刷题,总结的很全面,按照算法的类型和框架创作,我大概跟着他的刷题节奏,只用了一个月左右基本上大部分的题型都能够做的得心应手。所以我觉得大家可以按照这个框架思路进行刷题。github上肯定还有很多其他的,如果觉得这个不顺手的话,可以去github上换一个。