最近,有不少小伙伴普遍遇到了一个问题:没刷到过的算法题在面试中碰到,真能在几分钟内解出来吗?
我认为这个问题很好,也很有必要讨论下。作为一个双非二本CS专业最终上岸字节的老学长来回答一下这个问题。

先说结论吧:即使不能完全解出来,也有完美应对面试的方法。

当时我面试的公司不说有成千上百(不是),但是至少叫得上名字的大厂都给了我面试机会(简历做的就是这么优秀),面试题也做了不少。
面试中不可能每次好运都做到之前做过的题,不过面试并非只能给出标准答案的应试,面试中还有最重要的还是和面试官之间的交流。
你可以把他当成一个一起探讨题目的同事,和他好好沟通,让他在和你交流上印象良好,这有助于你的面试加分。

接下来说说在面试中需要注意的几个点

1、最重要的是全程保持冷静,不要看到难题就自乱阵脚了,可能难题只是作为一种压力的测试,考察一下你的知识累积程度。
2、如果对题目没有头绪,你可以先给出一个暴力的解法。无论什么题目,一定会有暴力的解法,只不过效率比较低罢了,一般面试官都会根据你的暴力解法给点提示,这样就可以按照提示往下解了。
3、如果你是暴力解法,就不要苦苦冥想再开口了,直接开口讲,想到什么思路就分析那个思路,最好能和面试官也产生交流,你觉得哪里有问题也可以问问面试官的看法。
一般来说,只要你的思路没有太拉胯的话,面试官也愿意给到你一些提示,不过,要是在面试中你遇到的题目是你从来没刷过的,我觉得根本原因还是你刷的题太少了
随随便便就去参加面试真的很浪费时间,毕竟大厂的面试一般都有好几轮,并且有些投递了某一个岗位后,在这个岗位的面试流程结束前是没办法投递其他岗位的,所以投递要慎重,面试也要全力做准备

因为时间紧张,所以刷题也要有“目的”性的去刷。

第一步,要应对面试,我认为要按照题目的类型去刷。
你需要做的是在LintCode上把题目按照常见的题目类型以及难度来刷题,至少把LintCode上70%的题目刷两遍,做到60%的题目bug free,在相对的时间里按照难度循序渐进的刷同种类型的题目。
这样不仅可以加深对题目的印象,并且可以知道同种题型的不同解法,要是遇到面试遇到难题的情况,可以先判断这是哪一类的题目,即使不会做这道理,也对这种类型的题有印象。
放几道我觉得比较适合前期刷的题:
双指针:
有序数组的平方
最小子串覆盖
寻找重复的数
二分法:
搜索插入位置
搜索旋转排序数组
最大订
排序算法:
中位数
字符大小写排序
最佳见面地
链表:
表划分
合并k个排序链表
LRU缓存策略
字符串:
转字符串
另一个祖玛游戏
删除无效的括号
如果你刷题没有思路,切忌不要死磕硬刷,想不出解题思路的题可以在LintCode参考答案查询上查找答案解析,按照答案的思路来理解题目,最后再用自己的思路总结,这样才能吃透解题思路,把这道题变成自己的。
有些人基础薄弱,可能很多题目都没办法顺利刷下去,这样我也不建议你继续刷题,还是先系统的巩固基础知识吧,可以免费试听一下《算法基础班》,国内外90%的大厂算法面试知识点都涉及到了,还有“万金油”算法模板,套用模板直接写出最优解,分分钟击败竞争对手。
扫码报名,免费试听
第二步,如果你确定了目标,就去找这个公司的面试题来刷。
按照公司的面试真题来刷题,自然是效率最高的。毕竟有可能你面试的时候恰好就考到了你做过的真题呢,这样面试成功的几率就大大增加了。
我也整理了一些各大厂的面试高频题,可以直接点击题目刷题,也可以去LintCode上找企业题库来刷,基础题目刷的差不多或者时间不够的同学可以把公司真题刷起来了,每多刷一道题,就多一分成功的机会。
腾讯:
最小子集
反转字符串 III
最长回文子串
高楼大厦
乘积最大子序列
两个排序数组的中位数
阿里巴巴:
取物资
数组评分
三数之和小于
接雨水
LRU缓存策略
合并k个排序链表
字节跳动:
除字符
矩阵中的最长递增路径
恢复数组
食物组合
组合新数字
最大点的集合
百度:
差切片
祖玛游戏
生命游戏
字符至少出现K次的最长子串
整数替换
拆分子数组

刷题很重要,但是刷完题后的总结也是必不可少的

总结刷题的经验可以让我们在下次遇到同样问题的时候,可以快速的做出反应,刷最少的题得出最多的经验,这样可以大大节省我们的时间。
我之前刷题的时候就有做错题集的习惯,把所有错题都整理在了一起,配合我的大厂面试经验,做了一套算法模板,这份【算法模板】里包括了大厂面试中常考的算法及数据结构。像二分法、双指针、排序算法等等,还举例了常考题的解题思路和模板。
想要模板的话可以去《九章算法班2021版》首节免费试听讲座中领取。
这套算法小抄使用很方便,套上模板就能用,可以解决你很大一部分问题。
扫码报名,免费试听
最后,祝点赞的大家在面试中遇到的题都会!顺利拿下心仪的offer。
继续阅读
阅读原文