有一段时间没有更新 LeetCode 打卡帖了 ,其实自己有偶尔刷题 ,但是没有写成文章记录分享出来 ,主要还是自己懈怠了 ,另一个重要原因就是写这记录帖比较费事却没多少人看 。最近想了想 ,关于刷题做了一些浅显的思考 。
首先 ,为什么刷题呢 ?当然是想着提高自身能力 ,在算法笔试面试中脱颖而出 。那么问题就来了 ,算法面试他面的只是一个具体的题目吗 ?
很显然不全是的 ,相信有人在面试中几乎做出了所有题却与 offer 擦肩而过 ,也有人并没有完美攻克所有题目却最终拿到了心仪的 offer 。至少和实验室有经验的学长同学沟通发现是有这样现象的 !
有人说 :算法面试优秀不意味着技术面试优秀 ,技术面试优秀不意味着能够拿到 offer 。的确是这样子 ,几个题目就能确定一个人的能力吗 ?不全然 !更多的时候 ,感觉技术面试不能局限于一个题目 ,局限于能否做出来正确结果 。而是考验一个人的思考方式和思考方向 。
举几个例子 。第一 ,很多题目不只有一个解法 ,暴力穷举可以解决 ,巧妙技巧也并不缺乏 ,能否做出正确结果还真不是最关键的 。更优秀的代码(例如时间空间复杂度的优势)肯定更能吸引到面试官的注意也能从一定程度上证明你的过人之处 。第二 ,许多题目会有多种特殊情况或者边界问题等 ,代码整体思路是对的 ,却总有通不过的样例 ?往往就是在这些特例上撞了墙 。再比如排序问题 ,方法很多 ,但是能简单的说快排就是最快的吗 ?事实上 ,数据的特征不同 ,采取不同的排序方法谁优谁劣真不一定 。有没有可能包含有大量重复的元素?原始数据有序度如何等等都值得思考 。
所以啊 ,平时还真不能局限于 " 做出来就好 " ,而是要多思考 ,多种思路并且更加全面才好 !小詹觉得面试官更加看重的也许就算思考能力和逻辑能力吧 。
那么 ,怎么刷题呢 ?在线刷题系统其实不少 ,以 LeetCode 为例 ,难度分 3 档 ,并且每一题都有序号 ,是从前往后 ?还是从易到难 ?遇到难题 ,是死磕到底还是瞟一眼别人的代码 ?
其实每个人习惯和想法不一样 ,不好说哪一个更好 。小詹分享下自己的看法如下 。
一家之词 ,多多思考探索自己的方式 。也欢迎留言区分享你的刷题顺序 和技巧 ,也许能给别人带来一定启发噢 !