问题

刷完 LeetCode 是什么水平?能拿到什么水平的 offer?

回答
刷完 LeetCode,这事儿得分两头说,毕竟“刷完”这个词可大有讲究。

一、 关于“刷完 LeetCode”到底是个啥概念?

首先,咱们得明确,“刷完 LeetCode”这事儿,就像你问“我学完大学课程是什么水平”一样,答案非常模糊。LeetCode 上题目数量庞大,涉及算法、数据结构种类繁多,并且还在不断更新。所以,严格意义上讲,没有人能真正意义上“刷完”LeetCode。

不过,在咱们技术圈子里,“刷完 LeetCode”通常指的是以下几种情况,不同情况对应的“水平”和“能拿到的 offer”也差很多:

1. “刷完”了某个标签/分类/难度: 比如“我把 LeetCode 上所有 Medium 难度的题目都刷了一遍”,“我刷完了所有关于字符串的题目”,“我做完了 LeetCode 官方推荐的 300 题”。

这大概是什么水平?
对于 Easy 题目,如果你能流畅地写出各种语言的解法,并且理解其中的基本思想,那说明你对基础算法和数据结构有不错的掌握。
对于 Medium 题目,这是最能区分面试者能力的一档。如果你能独立完成大部分 Medium 题目,并且在面试中能快速分析问题、提出多种解法,甚至进行一些优化,那么你已经具备了入门级或中级工程师的算法能力。
对于 Hard 题目,能独立解决大部分 Hard 题目,或者看了题解后能彻底理解并自己复现,这已经是非常强的算法功底了,通常是资深工程师或算法工程师的水平。

2. “刷完”了某个推荐列表/刷题集: 比如“我把 LeetCode 必刷 100 题刷完了”,“我跟着某个刷题教练的清单刷完了”。

这大概是什么水平?
如果你选择的清单质量不错,并且是高质量地完成(理解思路、掌握多种解法、能举一反三),那么你大概率能应对大部分国内互联网公司的中等难度面试题。你对常见的面试算法套路会有比较深的理解。

3. “刷完”了绝大多数题目,并能做到高效解答: 这是最接近“刷完”概念的一种。意味着你接触过大量的题目类型,对各种算法和数据结构的应用场景非常熟悉,看到题目能迅速定位到解决方案,并且能在规定时间内写出正确且相对优化的代码。

这大概是什么水平?
这是非常高的水平。你对各种算法(排序、搜索、图论、动态规划、贪心等)以及数据结构(数组、链表、栈、队列、树、图、哈希表等)都有深入的理解和实践经验。你不仅知道怎么做,还知道为什么这么做,以及如何优化。

所以,简单粗暴地说,“刷完 LeetCode”不是一个终点,更像是一个过程,以及在这个过程中你达到的掌握程度。

二、 刷完 LeetCode,能拿到什么水平的 offer?

这就要看你刚才说的“刷完”是哪种情况了,以及你的其他技能是否匹配。

场景一:只刷了 LeetCode,其他技术栈(如特定语言、框架、系统设计等)一塌糊涂。

能拿到什么 offer?
算法岗、AI 岗、数据科学岗: 如果你刷的是 Hard 居多,并且是扎实地掌握,那么你很可能拿到这些岗位的初级或中级 offer。这些岗位对算法能力要求非常高,LeetCode 是一个很好的敲门砖。
普通后端、前端、移动端开发岗: 如果你只刷了 Medium,并且能流畅解答,那恭喜你,你通过了这些岗位的算法面试,可以进入到技术深度、系统设计、项目经验等环节的考察。如果你其他方面表现优秀,拿到 入门级到初级 的 offer 是很有可能的。但如果你的目标是高级或资深,光靠 LeetCode 是远远不够的。
大厂的算法岗: 如果你刷了非常多的 Hard 题目,并且能完美解答,这是基础。但大厂的算法岗还会考察你的数学基础(线性代数、概率论、微积分)、统计学、机器学习理论、甚至是科研能力。

场景二:刷完 LeetCode,并且在项目经验、系统设计、其他技术栈上也表现出色。

能拿到什么 offer?
前端、后端、移动端等通用开发岗: 如果你刷了大量的 Medium 题目,并且能熟练掌握,在项目里能深入分析和解决问题,系统设计能力也合格,那么你完全有能力拿到 初级到高级(取决于你的项目经验和面试表现) 的 offer。对于一些公司来说,算法能力是硬性门槛,你已经跨过了这个门槛。
大厂的后端开发岗(例如 SRE、高性能计算等): 如果你刷 Hard 题目很溜,并且对底层原理、并发、网络、操作系统等有深入理解,再加上扎实的系统设计能力,那么你很有机会拿到这些对算法和系统能力要求都很高的岗位 offer,可能是 资深甚至专家级。
算法岗(数据科学家、机器学习工程师等): 如果你刷 Hard 题目非常出色,并对相关数学、统计学、机器学习理论有扎实的掌握,同时有相关的项目经验,那么拿到这些岗位的 offer,初级到高级 都有可能,具体取决于你的研究深度和项目经验的质量。

关键点总结:

1. “刷完”的定义是关键: 你是刷了题目数量,还是真的理解了各种算法的思想,并能灵活运用?后者才更有价值。
2. 目标岗位决定了 LeetCode 的重要性: 算法岗位的敲门砖作用最明显。而对于通用开发岗,LeetCode 是一个必须跨过的坎,但不是唯一的决定因素。
3. 整体技能栈的匹配度: 公司招聘的是一个能解决实际问题的工程师,而不是一个刷题机器。你的项目经验、系统设计能力、沟通能力、学习能力等等,都是决定你是否能拿到 offer 的重要因素。
4. 不同公司的侧重点不同:
国内大厂(BAT、头条、美团、拼多多等): 普遍非常看重 LeetCode 能力,尤其是在面试的早期环节。他们可能会设置“算法题的考察分数线”。
创业公司或一些外企: 可能更看重项目经验、系统设计、代码质量和解决实际问题的能力,对纯粹的算法题可能没有那么高的门槛,但依然需要你具备基本的算法思维。

打个比方:

如果你只是把 LeetCode 上的题目都背下来了,看到原题能秒答,但问你变种或者原理,你就说不清了,那这就像你把数学公式都背下来了,但一点题都自己做不出来。拿到 offer 可能只能做一些重复性的、模式化的工作,并且很容易被淘汰。
如果你刷 LeetCode 刷的是思考过程、解题思路、优劣分析,并且能举一反三应用到项目中,那这就像你理解了数学的推导过程,可以解决各种新题。你不仅能拿到 offer,还能在工作中做出更出色的表现。

最后,我想说的是,LeetCode 是一个非常有用的工具,它能帮助你锻炼逻辑思维、培养解决问题的能力,并在面试中为你增加筹码。但它不是终点,也不是全部。真正的能力是把这些学到的东西应用到实际项目中,去解决真实世界的问题。

所以,当你问“刷完 LeetCode 是什么水平”的时候,不妨先问问自己,你在这个过程中到底学到了什么?是否真的内化了这些知识?这比简单的题目数量更有意义。

网友意见

user avatar

个人经历介绍:作为一个32岁毕业三年的老电气工程博士,忍受不了本行业的收入以及发展前景,终于在无数次辗转反侧之后,下定决心转码……

2020年5月开始正式刷题的,在此之前的工作学习经历与码农完全不相干,只是少量使用过Python做一些简单的数据处理工作,用Matlab写过一些实验,对数据结构与算法几乎零认知,连Hashmap是什么都不知道,更不用说什么堆栈队列深搜宽搜动态规划了……

刷题与面试结果:到2020年底差不多刷了500题,近半年在北美投了几十家IT公司,作为一个没有CS经历又投不了应届生岗位的转行狗没拿到几家面试,不过除了狗家外也拿到了几家Software Engineer offer,最终决定去了A家…

更新:10个月后再次面试现已跳槽另一家大厂。

下面介绍下我是如何刷题的,希望对刷题路上的你有所帮助吧…

  1. 语言选择:个人觉得选择自己最熟悉的语言即可,没有必要为了刷题专门去学一门自己不熟悉的语言。实际面试中用Python和Java刷题的人是最多的~Python优势在于比较简洁,写起来快,在面试时候时间紧迫心态紧张的情况下会节省一些时间。劣势是没有TreeMap这种数据结构,真面到这样的题会被坑(我狗家就挂在了这个上面)。注意Matlab,R等不能算IT开发的编程语言,一般面试也不允许用。

2. 基础知识:个人还是建议在正经开始大规模刷题前先把面试中最常考的知识点学明白比较重要,不然直接去刷题怕是被打击的丧失自信了…面试常见的数据结构与算法就十几项,在文章下面都有列明,也可以参考这篇文章进行查缺补漏。

3. 面试中算法与数据结构的重要性,可以根据自己的时间来安排,如果时间紧迫可以只准备“高频”的部分。

高频:宽度优先搜索(BFS),深度优先搜索(DFS),二分法(Binary Search),双指针(2 Pointer),堆、栈、队列、哈希表(Heap,Stack,Heap,HashMap/HashSet),前缀和(Prefix Sum),链表(LinkedList),二叉树(Binary Tree),二叉搜索树(Binary Search Tree),快速排序与归并排序(Quick Sort/ Merge Sort)

中频:动态规划(DP),扫描线(Sweep Line),字典树(Trie),并查集(Union Find),单调栈与单调队列(Monotone Stack/ Queue),TreeMap等

低频:Dijkstra,树状数组,线段树,最小生成树等…

4. 如何刷题:每个人的基础、学习习惯都不一样,以下是我个人的习惯。(注意: 我基本上每周都会花20-40小时刷题,而且我本身有朝九晚五的全职工作的,所有的业余休息时间全部用来刷题了,几乎放弃了一切娱乐活动,真-东亚小镇做题家。)

第一阶段:熟悉各个高频数据结构以及算法的原理、模版等,可以用来解决一些相关的Easy题目,这个大概花了1个月左右。注意:补好基础对于基础不好的人非常重要,直接去刷题会被Leetcode打击的光速退坑。

第二阶段:正式开始按照门类刷题,上面标记为“高”的各个知识点题目一共刷了200题左右,又刷了50道DP题目,按照Leetcode Frequency排序,只刷高频题,每道题如果5分钟内想不出怎么解就赶紧去看答案,看懂后要能做到不看答案自己正确实现出来才可以去做下一题…这是最耗时也是最痛苦的一个阶段,第一遍刷完250题花了大概三个月左右,第二遍花了一个月,第三遍花了半个月,总之后面越刷越快,几乎可以做到一天刷十几题…

第三阶段:针对面试的特殊准备,鉴于Leetcode上给了各个公司Tag下最近6个月的常见题目,我在面每家之前都会把该公司(如果Leetcode上有的话)出现过的最近6个月题目按照频率从高往低,至少把Top100 Most Frequent题目刷一遍,很多时候里面只有一半的题目是以前做过的。

第四阶段:由于狗家和某些Pre IPO公司出了名的算法题难,面试狗家前一个月专门又去学了一下在“中频”当中的算法与数据结构,以防遇到了不会做,然而人算不如天算,最后还是吃了Python没有TreeMap的亏挂掉了,不过总归学了知识以后用得上。

总结:如果你打算2-3个月之后开始面试,个人建议的准备过程是这样的,按照下面的高频题分类刷题总结把高频题刷熟 -> Leetcode把要面的公司tag下最近6个月内的高频题刷一遍 -> 面试前两三天高频题每个门类随机选一道题做一下保持手感。

注:第一遍刷题很痛苦怎么办?个人觉得5分钟遇到想不出来答案的题目直接看答案,尤其是刷题不多的情况下自己瞎琢磨的时间越久越浪费你宝贵的时间,刷题是个积累经验的过程,题目刷得越多基础知识越牢固才会遇到新题时不慌,但是高频题都没刷透就别老想着什么都靠自己解决了。有的人会觉得做不出来看答案是很丢脸的事,尊严神马的最不值钱了,看答案学会了比什么都重要!

5. 题目难度选择:大概30%Easy,60%Medium,10%Hard,Hard题目除了高频题别死磕,面试中遇到没见过的Hard题目大多数人都会挂掉的,不要太担心,把时间尽量都用来高频题上。如果你在面试中遇到了非高频Hard题,基本上面试官就没打算让你过,安心准备别的面试吧。

6. 面试时候感受:面第一家公司时会很紧张,看到没见过的新题时会慌乱和紧张,脑子里一直在想完蛋了准备后事吧;后面再面别家时会越来越放松,即使当时手里并没有offer,但因为题刷到位了,不管是新题旧题都有自信做出来,大部分的面试官只要近期内没跳槽打算的话是不会刷题的,基本上都是一道题目面所有人,他未必比你的算法强。

到目前为止各个公司面试时,截止到2021年2月一共被面了30题左右(更新:加上2021年10月又面了几家之后总的被面试题目数量已经接近100道),整体以Medium为主,Hard在10%左右,只有2道题出了“高频”的范围,即使遇到新的Hard题目也是高频题改编或者两三个Medium题目组合出来的题。面过的题目当中大概一半的题目是刷过的原题,另一半也大部分都是现有题目的改编或者高频知识点的重新组合题,完全没见过或者一眼看上去没思路的题目只有一两道。

具体的刷题攻略在这:

各位加油!

本文原发于:TimothyL:一个大龄博士的刷题转码之路

更新于2021.02.16:

感谢各位的支持,稍微唠叨两句关于面试的准备,高频题是需要保证每一道都会做的,不要因为有些题很恶心或者差评特别多就跳过不做,不然面试遇到时候哭的就是自己了,我就是活生生的例子,比如Integer to English Words,Skyline,Integer to Roman之类的题目,现场做真的是一言难尽…

2021.2.18更新:

鉴于不少人都在问没有CS经历如何拿的到面试,我本身也不算成功案例,拿到的面试也没几家,一家之言仅供参考吧:

首先是厂家选择,个人感受是大厂相对于小厂对转行狗更友好,基本上不太喜欢问各种技术细节与简历,非技术类型的问题基本上都是行为类问题(BQ)。小厂可能生存压力更大,更希望招进来的人能迅速上手干活,所以更喜欢匹配度高的。

其次是简历丰富,首先是你以前做过的项目要重新包装,让项目看起来更像一个码农的活,再者是如果太过于缺少像码农的项目,那就只好去自学做一个项目,网上有太多这种免费/收费的手把手教你做项目的课程了,比如基于REACT的前端项目,基于Spring/ Django/ Spark之类的XXX项目。选择性的做一两个,手把手跟着学一遍,搞明白整体逻辑,保证别人问你的时候不会一脸懵逼就好。

第三是简历投递,个人理解的靠谱程度排序,相关岗位的负责人内推 > 相关岗位内部人员内推 > 自己去linkedIn联系HR > 找不认识或者不相关岗位的人内推 > 海投。疫情期间确实岗位少了很多,这一年半载的找工作难度要比以往大很多。

2021.3.10更新:

有人问我到底要准备到什么程度才可以去面试。其实没有统一的答案,个人觉得你把高频题都刷过2-3遍就已经可以开始投简历面试了,毕竟投简历到拿到面试慢的话可能要2-3个月,快的话可能第二天就拿到面试。

刷题要刷到什么程度?高频题差不多要做到Medium题目10分钟、Hard题目15分钟写完代码,不要求一遍完全bug free,但不能有明显的错误。面试当中可能一道Medium题目面试官就给你留了20-25分钟左右来做,但这是包含了出题、澄清题目、想思路、和面试官讲明白思路、和面试官来回扯皮、写代码、跑测试样例、讲清楚时间空间复杂度的全部时间总和,这其中能留给你写代码的时间也就10分钟左右,所以熟练度非常重要!

为什么特别强调熟练度,因为面试当中可能会遇到各种不可控因素,比如面试官迟到10-15分钟,面试官自己也没想好题目怎么做才是最好的,面试官不允许你用自己熟悉的方法解题,面试官出题就花了10分钟,或者题目过长描述过于绕导致看明白问题花了很长时间,面试官上来和你闲聊花了太多时间等等,(以上问题我全都在面试中遇过)各种因素可能都会导致你做题的时间非常紧,这时候熟练度不高的话很大概率就要挂了……

2021.3.28更新:

我只在北美面试过,不要问我国内的面试怎么准备,没面过不知道……

北美的IT行业面试基本上都比较接近,基本上就三类,算法、系统设计、行为类问题(BQ),算法是重头,多数情况下有决定性影响,但不代表你会做就可以拿得到offer,表达能力、是否能把算法阐述清楚也非常重要,系统设计是有工作经验的面试者要考的,经典题比如设计一个聊天系统、设计Uber、设计推特or微博等;行为类问题就是问你一些比较刁钻的问题看你如何回答,主要看你的情商和工作态度之类的,比如问你做过最失败的项目是什么、最不喜欢的同事是什么样的、和领导有矛盾是如何处理的等等,相比之下简历反而问得很少,个人觉得对于转行狗比较友好。

2021.4.9更新:

有人问说转行想当码农的话有没有必要再读一个计算机硕士,比如Georgia Tech的OMSCS?

作为一个在OMSCS上了一门课就退学的怂货,如果有全职工作的情况下还要在职读一个CS硕士,想要毕业再快也得2年以上了,而且课时压力很大,白天上班、晚上周末上课写作业做项目考试,面试的话还要再刷题之类的,这样的话时间成本太大了!除非你可以接受两三年后才转行成功(我自己是想要半年到一年内转码成功的),否则不建议再读,尤其是对于如果已经有理工科的硕士或博士学位者。当然如果选择读下来也有个好处,就是可以以应届生的身份光明正大的去申请只针对应届生的岗位,选择多了自然上岸会容易一些,代价就是转行花的时间有点久,晚一年上岸就是亏十几万刀的收入……

2021.7.3更新:

有人问我说博士毕业又工作几年才转码什么感受?感受就是转码之后周围有很多年纪比我小好多、级别还比我高、收入更比我高不少的小朋友…说不羡慕那是假的,但是心态很重要,每天都在和别人比较来比较去、计较之前浪费了多少年、少赚了多少钱其实只会徒增烦恼,过去的事无法改变,积极一点着眼眼下和未来吧…

其实年纪大一点尤其是30岁之后会越来越现实,工作的目的就是为了赚钱养家而已…

2021.12.14更新: 作者半年后按照上面提到的刷题攻略再次复习了一遍,再去面试,成功拿到了狗 、黑车等一线大厂offer。对自己的这两篇刷题总结小文章还是比较自信的,按照这个方法刷熟练通过算法面试问题不大~

2022.2.2更新:写了一篇关于刷题前应该准备好哪些基础知识的小文章,链接已经附在上面了。

user avatar

如果你在北美,如果你想进入大厂。那么恭喜你,你可以干好一件事情就能有很大把握进这些大厂了。

干啥呢?刷题

刷啥呢?LeetCode

刷完肯定行,但刷完的意思是题目你都得知道题目的来龙去脉,还能回答上来follow-ups,这样的选手,基本没有找不到工作的,偶尔会看到刷了四五遍Leetcode,但是没有上岸的小伙伴。但是,很重要的但是,最后也都上岸了。

所以题目是肯定要刷的,而且大部分都要刷完,至少,每种题型你得刷五题吧!

再转折一下吧。题目其实是刷不完的,太多了。1000多道,都快赶上要你命三千了,还记得当然GRE单词怎么背的不,就几千个单词,背得死去活来。这么多的题,刷完,刷完估计OPT都过期了。

说了这么多,怎么办?

精刷!

怎么精刷呢?

答案在这里,你们自己看吧。就不复制粘贴太多了。反正都是我写的。


这个总结对应于这门课程:

该课程是一个算法总结提高的课程,它把算法面试中可能遇到的题分成了各种模式,每类题各个击破。

如果想买订阅Subscriptions)的小伙伴,则可以用ZHIHUEDU-10(必须一模一样输入)的coupon code来获取额外九的优惠,按年standard订阅模式适用。按月和按两年的无效。
现在推出的premium模式,有按年和两年订阅的方式,也能使用ZHIHUEDU-10来享受额外九折!

下面这个系列是新出的课程:通过大公司真实常见问题来破解算法面试。

下面是用Java语言的:

还提供了Python:

C++:

以及JS版本:

他家最最出名的还是这门Grokking the System Design Interview, 但凡提到准备系统设计,这门课都上入门必推的:

以及OOD: Grokking the Object Oriented Design Interview

这门机器学习面试指南是这个系列最新的课程:

目前市面上机器学习面试相关的课程比较少,这门课程应该非常值得!


如果想买订阅Subscriptions)的小伙伴,则可以用
ZHIHUEDU-10
的coupon code来获取额外九折的优惠
按年和按月均适用

需要的小伙伴就去来一波吧!


如果你觉得有帮助的话,记得帮我点赞,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-,真心希望大家能支持一波))。

以上。

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有