对于刷LeetCode一些想法
大三准备校招阶段,零零散散,前前后后的刷了够3,4百道题,题目来源LintCode,剑指Offer,Leetcode。当然题目之间会有些相似度比较高的,对于常见的算法题目类型,也都有进行专题的相关学习。
“校招面试,全程hard模式,进来让写重复业务逻辑。”这种经历,我想对于每一个进程序员来说都不陌生。确实,一般的业务逻辑也不会需要什么旋转树等复杂的操作,特别是对于一个前端程序员来说。可是,现在北美,国外互联网公司,还是会把手写算法题当做一个考核指标。其价值在哪里呢?以下是几点自己的想法。也正是这些想法,让我决定重头再来刷一遍。
-
应届生想进大厂,出国工作
校招面试
针对校招这点,自己结合自己找工作经历谈一些,面试阿里被问到的比较多,难度看面试官,比较随机,笔试一般会有一道,网易的笔试,每年都会有三道算法题在,前两道,如果刷题量在200+,且有自己的思考总结的,基本可以ac掉,第三道一般是接近hard了。腾讯面的时候,问的则相对少一些,面创业公司的时候也被问到一些,相比阿里来说要简单很多,基本的排序,查找。华为有个机试,没有什么难度的算法题,但是会很麻烦,基本考察代码表述逻辑。出国工作
也是目前支撑自己重拾的一个关键原因。 -
提高代码实现思维逻辑能力
很多时候,我们在写代码的时候,自己能够想到如何去实现,但是真正去手写的代码出来的时候,就会发现很多问题,用代码表述不出来,不知道该套一个循环,里面再做何种判断,边界值卡在哪里,通过刷题,可以很好地锻炼这一点。对一个题目有了想法,很快就可以用代码实现出来。 -
提高思考问题的能力
这点尤为关键,遇到问题,上来就写,然后写的很烂,再去修,通过刷题,大多数的题目,在动手前如果没有深入的思考,很容易按照自己理解错误的方向走了,数据的各种情形考虑不到,导致始终无法accept。通过不停地刷题,渐渐的就会养成一种习惯,遇到问题先思考,考虑清楚了,再去下手,而不是上来就动手,很容易从一个小的切入了,而达不到高屋建瓴的高度去看问题。 -
增强代码鲁棒性
由于题目给予的测试数据中,各种类型的数据都会存在,所以就强迫我们去仔细的审查代码,来确定问题中所有可能会出现的特殊值,然后根据这些特殊值分别做好处理。 -
写出更简洁的代码
通过刷题,我们代码实现逻辑的能力会越来越强,之前可能很多的循环,if,else嵌套,现在就会变得清晰很多。
综上,算是重刷Leetcode的原因。
自己所计划的是每日一道,Java,C++,Python三种语言实现,同时提供尽可能简洁,巧妙的方法,同时给出自己的思考过程,当然时间有限,题目难度有限,按照自己的计划走也是很有难度,尽可能的去超目标上靠,做更多。
Github上最近也开了个机器学习的Project ML1024,每日文章阅读,或者一个机器学习方法,或者一个数学公式,总之,每日会有一点contribution。