赞
踩
文末给大家准备了算法刷题的资料!看完有份!
最近,一个大二的非CS专业,在自学想转码的学生跑来问我,去年12月学的c++,和数据结构,一月初开始刷力扣,每一道题都刷得很费劲,得看题解才能做出来,有些题甚至要花一天。比如,k个节点反转。这样正常吗?
相信不少新手小白刚开始刷leetcode都会有这个问题,时常崩溃。这太正常了!你完全不必因此怀疑自己。
只不过,刷题不是为了自我感动,以上岸为目的刷题其实是有套路的。
程序员面试中,至少必考一轮算法面试,至多不封顶(像TwoSigma那种对冲基金公司的技术面试,会达到7-9轮,其中就可能有5轮都是算法面试)。
作为面试官看重的是编写软件,解决问题,调试和测试软件,阅读代码和合作能力。
编写代码的时候你需要考虑到:如何将想法转化成代码?如何用代码实现?还能不能优化?...
能解决问题的求职者,是面试官最想看到的。算法面试看重在解决问题时如何表达自己的逻辑思维。所以平时可以一边做题,一边分析自己是如何解决问题的。
调试和测试软件的能力,也就是debug能力,就这么说吧,最粗暴有效的就是多刷题!对算法越熟练debug能力也就越强。
算法面试中并没有把所有的知识点都作为重点。《FB面试官用学霸思维玩转算法面试》根据往年的面试常考算法题总结了算法和数据结构常见知识点,颜色越浅考察频率越低。
这也就很直观暴露出很多人刷题500+往上了依旧过不了面试的弊端,本质还是刷LeetCode偏离了“算法面试”导致的。
leetcode虽然题库庞大,但同考点题目冗杂,不建议新手盲刷,效率低且刷完就忘!新手建议使用国内炼码(lintcode),它的题库都是按照考点分类的,刷题效率高,刷1道等于在leetcode刷3道,还有国内大厂常考题集,非常针对大厂的算法面试。
另外,大概总结了一份高频算法知识点,以及对应的刷题数量,如下:
最重要的是,算法≠算法面试,大厂面试是有套路可循的!
祭出大佬爆肝3个月、增删16次的面试常考算法模板cheatsheetV5.0
面试前:
①先看例题,看自己是否能自行用相应的数据结构和算法解题。
②根据模板,解题。如有必要背诵模板。
③通过在LintCode上刷题,巩固其使用条件和时间复杂度
面试中:
①通过使用条件判断这道题用哪种解法
②套模板解题 当然,像是双指针、排序算法、二叉树、bfs、dfs的使用条件、时间复杂度、代码模板,这套模板里已经全部总结好了,直接套就完事儿了。
举个例子:
以二分法 Binary Search为例:
使用条件:
1.排序数组 (30-40%是二分) 2.当面试官要求你找一个比 O(n) 更小的时间复杂度算法的时候(99%)
3.找到数组中的一个分割位置,使得左半部分满足某个条件,右半部分不满足(100%)
4.找到一个最大/最小的值使得某个条件被满足(90%)
复杂度:
时间复杂度:O(logn)
空间复杂度:O(1)
代码模版:
掌握这个模板之后,就可以轻松解决类似例题:
⼆分查找(在排序的数据集上进行二分)
在排序数组中找最接近的K个数(在未排序的数据集上进行二分)
书籍复印(在答案集上进行二分)
当然,像是双指针、排序算法、二叉树、bfs、dfs的使用条件、时间复杂度、代码模板......这套模板里都总结好了。领取条件超简单,只需试听这位ACM大佬的算法面试公益讲座,第一节免费课就可以download这份算法模板!新人注册即可免费试听~
1.刚开始刷题时,每道题给自己20分钟,如果想不出来就直接看答案。
2.前期,按照算法与数据结构的知识点刷题;后期,隐藏掉算法与数据结构的tag混着刷。
3.一道题,至少掌握2种解法,最好能掌握3种——标准解法(面试常考、面试官能理解)、最优解(自行钻研、炫技)、暴力解(实在做不出来的时候还有个保守解法)
好啦,以上就是关于算法面试的一些心得分享。此外,这里还整理了最新的coding面试&刷题资料,戳这里即可免费获取!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。