↑↑↑关注后"星标"Datawhale

每日干货 & 每月组队学习,不错过

Datawhale干货

作者:吴忠强,东北大学,Datawhale成员

写在前面

最近面试中做算法题,受了打击,和我之前准备的很不一样。这篇文章通过笔试实战经验复盘我在刷LeetCode的一些误区和今后对策,供大家参考备战秋招,下面开始 ????

刷LeetCode姿势很重要

刷题不能以数量来定质量。一般我们衡量刷Leetcode,都喜欢问刷多少道题目了?并且觉得刷的题目数量和能力成正比。

其实并不是,至少对于我不是。之前听好多大佬说200道LeetCode够用了,在第一次笔试之前,我LeetCode就刷到了200+,并且都是重温和复刷,还挺自信的。结果第一次阿里笔试,就瞬间把我积累的所有自信打击到0,很遗憾,非常惨。

仔细反思原因,这次的失败有很多方面,还不仅仅是刷题上的误区,总结的经验如下:

1. 目标误区

以数量定能力不可取,不是数量够多就行,要注重刷题的质量和转化问题的能力。在刷题中,我们要注重锻炼转化问题的能力以及应对各种题型的反应速度(代码编写能力)。

举几个判断的例子:是否能不加思考,就把二分、快速排序、堆排序、DFS和BFS、树的各种遍历、回溯等模板框架默写出来?见到一个新题目,能不能立即反应出考的是什么算法?能不能立即想到相应算法中有哪些经典解决思路?这才是我们需要在刷题的过程中练习的。大佬说的200道题目,应该是高质量、中高难度、能概括全貌、又练习了很多遍的题目。

不要盲目自信、贪多,用战术勤奋去掩盖战略懒惰,逼着自己做难题,逼着自己多思考,多总结,触类旁通,同时珍惜那种能够举一反三的题目。

2. 策略误区

不知道大家有没有遇见过?见到很难的题目,总是不自觉的就去背代码,而不愿意思考具体过程,半懂不懂的状态。尤其是二刷三刷某个题时,我经常是:先记代码,然后直接敲,遇到bug了,往往也不喜欢再思考,而是直接看看之前刷过的,“哦,原来这里出问题了”,恍然大悟, 提交通过,二刷完成。

呵呵, 现在我再回忆这个过程,自己是多么的天真,这样复刷,刷多少遍也没用,反而浪费了时间和好题目。因为这个过程中,我们明明已经知道了对这个题目没有掌握(遇到bug), 这时候,应该逼着自己重新考虑题目,如果真的考虑不明白了,再去看代码,之后再想。要珍惜复刷的时间和机会

3. 思考误区

这个是针对题目本身来说的,刷题的时候,一定要真正弄懂题目,看后面题解的时候,也不要只看一种思路,如果有好几种好的思路也建议多看看,虽然真正面试或者笔试的时候,能写出一种就不错,但是多个思路有助于帮助我们去更好的理解题目本身。

没有思考转换的过程,刷题再好,面试也跪。因为公司的笔试题是不会有原题的,全是生活中的具体场景,需要我们自己去转换,如果刷题的时候没有真正理解题目,那仅仅是会了这样的一道题目而已,换成场景型,不一定转换出来。最简单的例子,就是斐波那契数列和爬楼梯, 可能斐波那契数列拿捏得死死的,一到爬楼梯不会爬了。

4. 环境误区

面试做笔试题的时候是ACM模式,也就是纯白板编程,自己写输入输出。这个是和平时LeetCode上的刷题有很大区别的。所以阿里那次笔试,我也吃了这个亏,不了解实际环境,一上来白板编程就懵逼了。其实一个小时两道题目,真正思考题目的时间很少,大部分时间都在熟悉编程环境,输入接收不好,那是真难受哇。所以笔试之前,一定提前熟悉环境,牛客上有真实的ACM编程模式,尽量去练练,不能一昧的只刷LeetCode。

另外,用IDE很重要,如果允许用,那尽量用。我经历了三次笔试,最后一次才悟到这个有多么重要。python的话,就建议pycharm,非常好使,更重要的是,有代码保存功能。我第三次美团笔试, 中途编程我的校园网挂了,导致刷新之后,我写好的代码全都没了,顶着重压又重写的代码,欲哭无泪,心态差点崩。

5. 时间控制误区

平时我在刷LeetCode时,是不太注重时间的,但是发现,这个是个坏习惯。真实笔试是计时的,就会出现即使这个题目我遇见过,知道是什么框架什么算法解,但写代码就是写不出来。反思原因,第一个是对于算法框架本身掌握的不够熟练, 第二个是平时并没有养成好的时间掌控习惯,所以在笔试的时候,大脑处在了一个偷懒的状态,不想思考和提炼。所以以后刷题,一定要计时刷题,中等以上难度,尽量40分钟以内, 简单题目20分钟以内。LeetCode上有个面试模拟,可以打开它,感受一下时间的流逝,这样会逼迫着大脑保持活跃和思考的状态。、

6. 真实模拟误区

这个也是我参加完第一次笔试悟到的,就是我们只悠哉悠哉的佛系刷题根本不行,得找机会来还原一下真实笔试的场景,感受一下刺激才行。否则,是真的没法战胜笔试的。真实情景模拟非常重要,这个一个是可以多参加笔试,不用怕打击的,打击时间长了就习惯了,并且真的发现,参加次数多了之后,恐惧会慢慢减少,虽然我目前只经历了三次,但我感觉到我现在并不会太慌了,尤其是做美团这次,断网之后我代码全部消失,这要是放到第一次的时候,我觉得我应该立马放弃走人,可是我当时异常冷静,愣是缓了缓,又重新写了一遍,当然最后也是AC了一点,可是心态在逐渐变好。

一定要让自己多把握一下真实模拟的机会,多参加笔试是最好的策略,不过这个毕竟有限,可不要放到秋招再去体验,那时候成本就高了。而我发现LeetCode的周赛,牛客上的模拟也是一个非常好的机会,可以去练习。

总结

由于目前参加的笔试体验有限,所以只发现了我刷题过程中这几个误区,也庆幸这是在找实习时发现的,如果是秋招,成本可就不一样了。

总结起来就是LeetCode还是多刷,但不要盲目,要多思考,把握时间,多总结反思,常复习,最后量变推质变吧

干货总结,三连

吴忠强:刷LeetCode的正确姿势!相关推荐

  1. 【算法】吴忠强:刷LeetCode的正确姿势!

    作者:吴忠强,东北大学,Datawhale成员 写在前面 最近面试中做算法题,受了打击,和我之前准备的很不一样.这篇文章通过笔试实战经验复盘我在刷LeetCode的一些误区和今后对策,供大家参考备战秋 ...

  2. GitHub 热点速览:刷 LeetCode 的正确姿势!

    作者 | HelloGitHub-小鱼干 责编 | 郭芮 找对路子,事半功倍,正如本周 GitHub Trending #刷 LeetCode# 主题想表达的那般,正确的学习姿势方能让人走得更远,走进 ...

  3. GitHub 热点速览 Vol.18:刷 LeetCode 的正确姿势

    作者:HelloGitHub-小鱼干 摘要:找对路子,事半功倍,正如本周 GitHub Trending #刷 LeetCode# 主题想表达的那般,正确的学习姿势方能让人走得更远,走进大厂 ???? ...

  4. 算法小白如何高效、快速刷 LeetCode ?

    算法很重要,但算法也是学起来最难,最令人生畏的. 特别是刷 LeetCode 的时候!!! 很多初学者在刷题的时候,思路飞来飞去,有时候以为是 动态规划 的知识点,结果写了半天代码越写越乱,最后一看 ...

  5. 开发方向校招准备的正确姿势,机会留给有准备的人

    一.背景 马上就快到校招的时间了. 网上有很多分享面经的地方,也有一些博文分享作者的面试经历,尤其是大公司的面试经历. 大多数是分享具体的问题,而没有系统的总结出方法论.导致大家只不过是在刷题!仅此而 ...

  6. 惊了,AI已经学会刷LeetCode了!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 你在面试 ...

  7. AI已经会刷LeetCode了

    梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 你在面试中会遇到的那种算法题,AI已经能自己解决了,比如下面这道题: 对于一个记录论文引用次数的数组,每个元素都是非负整数.请写出函数h_i ...

  8. 刷leetcode习题

    为什么要刷leetcode 面试笔试在leetcode上面抽题. 如何刷leetcode题 我的方法 1.写思路. 平时练leetcode题,先锻炼自己的思维能力,先把自己现阶段可以想到的做法都用注释 ...

  9. 论 做 AI 芯片的正确姿势

    https://xie.infoq.cn/article/d5ab8bea53fa8a08406fabf9d 论做 AI 芯片的正确姿势 作者:flow 2020-08-10 本文字数:14908 字 ...

最新文章

  1. puppet 深入讲解
  2. 李彦宏称AI可让人们获得永生
  3. 读书感想--list/BSS等等
  4. python读取文件的常用方法
  5. java动态添加属性_java – 动态添加对象的属性
  6. Oracle使用imp/exp导入/导出数据库
  7. 计算机类大一需要学什么原因,大一新生上大学要不要带电脑?我认为不论什么专业,电脑是必需品...
  8. java的垃圾回收机制包括:主流回收算法和收集器(jvm的一个主要优化方向)
  9. c语言位运算符的使用_C语言程序使用位运算符检查给定数字是否为回文
  10. 我是如何走上前端开发这条路 并常年保持一线竞争力的
  11. CSS3属性calc函数(CSS3)
  12. Java可变参数demo
  13. Codeforces Round #184 (Div. 2)
  14. WS2811B驱动使用及使用说明应用
  15. 记一次星环大数据tdh集群中因某节点systemd服务进程bug而引起大数据集群异常问题的排查与修复...
  16. MAX232(MAX3232)电平转换芯片的工作原理
  17. CSS盒子模型box-sizing属性详解
  18. 建筑工程测量与测绘毕业论文范文
  19. leetcode5473:灯泡开关 IV
  20. Java抽象类方法和抽象类

热门文章

  1. spring WebServiceTemplate 调用 axis1.4 发布的webservice
  2. Oracle中的字符处理方法
  3. mongodb的shell命令
  4. css sprites之圆角
  5. ASP.Net中MD5加密-16位32位
  6. stella forum v 2.0 的两款主题样式
  7. 如何在Windows中安装Python?
  8. 如何教计算机认识手写数字(上)
  9. 超星未来发布新一代高级别自动驾驶车载计算平台
  10. 亚马逊云科技在中国区域上线机器学习新服务,打造广泛而深入的人工智能与机器学习工具集