字节面试官问我:有没有刷过leetcode,怎么办?

最近面试,我发现有些基础知识答得很好的同学,但是做算法题非常非常吃力。有时候我把答题思路都讲了,但是作答也非常不顺利。我有点费解的问有没有刷leetcode,同学说刷了100道左右题目。在我看来,其实100道题已经不少了,所以我觉得应该说一下应该怎么学习算法,如何做练习

字节面试官问我:有没有刷过leetcode,怎么办?_第1张图片

为什么面试要考算法?

考察算法的一个非常重要的原因是:它包含了太多的逻辑思维,可以考察你思考问题的逻辑和解决问题的能力;这一点也是面试官比较看重的,因为它可以反映出你的潜力,我曾经听阿里一位资深面试官这样讲过:当一个人逻辑思维和能力不错的情况下,你还会担心专业的业务知识方面他不行或者学不会吗?

针对算法面试,我列举了以下几个问题并做出了解释

如何取得正确的思路

即使面对简单的题目,也有相当一部分是拿不出思路的。这和聪明不聪明完全没有关系,这说明需要更多的算法锻炼。有一些方法可以帮助:

  1. 多画画图,不要着急写代码,先在图上想清楚,画出每一步要做什么,看看是不是有漏洞,或者有什么启发

  2. 从简单的开始,比如一个数组,那就从一个数开始考虑;无序的数组,先考虑一下有序的是不是有什么启发;情况复杂,不确定东西多,是不是分成几类,每一类都只有一个或者两个不确定的变量;有了启发再去推广

  3. 如果想了5-10分钟,都没有收获,还是看看答案吧,可能只是因为你见识的太少了

如何把思路变成代码

这个就是要靠练习了,不过这种练习也要多个心眼才能效率高。其实思路改成代码的时候是有很多重复的基础动作的,比如遍历,从某个数组里选最大值,把链表反转等等,仔细留心自己每次哪一块实现不出自己的想法,那就多去练习一下这块的操作,自然很快就能提高。其实写代码就好像是翻译,把思路用另外一种语言写出来而已。其中当然有很多固定搭配和短语了,多留心总结就提高得快

如何做到代码优雅

过了上面一个阶段,就会发现,正确实现往往很简单,但是实现出来的也是一堆的if else,或者看起来就笨笨的。这时候就要参考答案。比较一下。自己写的啰嗦,可能很大程度是思维的抽象度不够,这个就需要多练习。别死记硬背别人的解法,而是看看他简洁的代码到底在表达什么意思?而自己啰嗦的代码可能是使用了重复的逻辑。这个只能靠多练,多感悟了。

如果能用优雅简单的代码写出答案,即使算法不是最优解,也会大大赢得面试官的好感。而且有了这个基本功,剩下的学习就会事半功倍。并且万一面试的时候没想到思路,面试官提示一下,也是分分钟搞定,必然面试官感到你基本功扎实,代码能力好

这里给大家推荐一本书,左程云老师写的《程序员代码面试指南》

字节面试官问我:有没有刷过leetcode,怎么办?_第2张图片

限于文章篇幅原因,只能以截图的形式展示出来,有需要的小伙伴可以文末获取↓↓↓

这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一痛点,本书选取将近200道真实出现过的经典代码面试题,帮助广大程序员的面试准备做到万无一失。

另外,除应付面试之外,还有很重要的一点,甚至是更重要的一点,就是本书可以帮我们打开思路,因为很多算法题的解法是需要逆向思维的,需要跳出原有的固定思维模式,当思维模式被打开之后,你会发现原有的事物现在看起来会有不同的看法,因为看问题的角度变了。不过这些只能自己体会(只可意会不可言传)。

目录总览

采用题目+解答的方式组织内容,并把面试题类型相近或者解法相近的题目尽量放在一起,读者在学习本书时很容易看出面试题解法之间的联系,使知识的学习避免碎片化。书中将所有的面试题从难到易依次分为“将、校、尉、士”四个档次,方便读者有针对性地选择“刷”题。这本书所收录的所有面试题都给出了最优解讲解和代码实现,并且提供了一些普通解法和最优解法的运行时间对比,让读者真切地感受到最优解的魅力!

字节面试官问我:有没有刷过leetcode,怎么办?_第3张图片

字节面试官问我:有没有刷过leetcode,怎么办?_第4张图片

字节面试官问我:有没有刷过leetcode,怎么办?_第5张图片

字节面试官问我:有没有刷过leetcode,怎么办?_第6张图片

字节面试官问我:有没有刷过leetcode,怎么办?_第7张图片

字节面试官问我:有没有刷过leetcode,怎么办?_第8张图片

字节面试官问我:有没有刷过leetcode,怎么办?_第9张图片

内容概览

第1章栈和队列

字节面试官问我:有没有刷过leetcode,怎么办?_第10张图片

第2章链表问题

字节面试官问我:有没有刷过leetcode,怎么办?_第11张图片

第3章二叉树问题

字节面试官问我:有没有刷过leetcode,怎么办?_第12张图片

第4章递归和动态规划

字节面试官问我:有没有刷过leetcode,怎么办?_第13张图片

第5章字符串问题

字节面试官问我:有没有刷过leetcode,怎么办?_第14张图片

第6章大数据和空间限制

字节面试官问我:有没有刷过leetcode,怎么办?_第15张图片

第7章位运算

字节面试官问我:有没有刷过leetcode,怎么办?_第16张图片

第8章数组和矩阵问题

字节面试官问我:有没有刷过leetcode,怎么办?_第17张图片

第9章其他题目

字节面试官问我:有没有刷过leetcode,怎么办?_第18张图片

限于文章篇幅原因,就展示到这里了,有需要的小伙伴可以查看下方名片↓↓↓ 

最后

引用高鹏义老师的一句话:

年轻人总会找借口说这个东西不是我感兴趣的,所以我做不好是应该的。但他们没有注意的是,你面对的事情中感兴趣的事情总是少数,这就使得大多数时候你做事情的态度总是很懈怠、很消极,这使你变成了一个懈怠的人。当你真正面对自己感兴趣的东西时,你发现你已经攥不紧拳头了。

对一个东西,如果你没有透彻研究过,不要轻易说它不精彩。这不是博爱,而是对自己认真。

你可能感兴趣的:(面试,java,算法)