简介
12月底的时候,开始决定要参加春招(由于个人原因,秋招错过了),放下毕业论文,开始着手准备
从零开始,第一个月几乎是全职刷,前半个月刷了160道,后来进度就放缓了,把重心放在面试项目的准备上,有空时再刷刷
最后大概到两个月时,陆陆续续刷了300多道,直到今天,80天左右,总计450道。工作已找到,后续应该不会再刷了
从实用主义的角度,总结一下刷题的感想和优化路径。
总结
首先,要明确定位,不需要成为真正的高手,刷题就是为了面试用,成为三流选手足以。关于选手的分级,我的定义如下:
十八流选手:掌握“逻辑翻译”技能。“逻辑翻译”指,你能用语言描述清楚的过程,能翻译成代码。比如,你的认知中,BFS表述为“入队——取出队首——节点扩张——循环”,那你就能按照这个逻辑,去实现。
三流选手:0.已继承了十八流选手的能力。1.拥有处理字符串和数组的能力(很多题抽象的本质都是字符串或数组题)。2.常用数据结构的理解与使用(不是各种花里胡哨的树,而是哈希表、堆、栈这些,谁写题现场写一棵树?有病)。3.常用算法的理解与使用。
二流选手:除以上外,能一题多解,能很好地转化题意。
一流选手:除以上外,能30分钟内打完周赛。
我当时的目标是三流选手,基本上摸到了门槛,于面试和打周赛(除最后一题外),完全够用了。
对于一个三流选手来说,012才是最该锻炼的,而很多同学一上来就在疯狂搞3,即补算法,殊不知,学了忘忘了学,太慢了。012做好了,甚至有时硬做都能做。
而对于3,也不要真的想去“搞算法”,你只需要明白,每种算法大致能解决什么样的问题,然后提取出该算法的实现逻辑,然后去csdn,或者什么地方,找别人的代码,从中改一段最精炼好写的,直接用就好了。而不是说,你真的去理解什么dp,然后01背包自己搁那推个半天,实际上,总结好了,01背包,完全背包,几十秒就敲完了,用就好了。
如何总结?比如单调栈,我总结为“能O(n)地完成找到每一个元素的最近左大值和最近右大值”,而不仅仅是一种感觉。
我的题解一直在总结,把算法模块化,能调用就行。这是最快也是最有效的方式,毕竟你又不打ACM。
而实力差不多了,针对面试准备时,就要从面经中去体会各企业的出题难度和难点,比如有的企业就喜欢出二分,那你就去二分的题解区里找那种好几道二分题集合汇总的题解,去总结能一次性应对的通用思想,我题解里也写了不少。
总之,这就是我的简单的经验,或许对你有帮助。毕竟,不打比赛,只是个打工人。