面试总结-刷题心得

结论先行,刷题策略:《代码随想录》的回溯、贪心、动态规划、二分、双指针 +《算法图解》的动态规划 +《剑指offer》全书

1 问题

我从校招找工作开始就有个痛点,动态规划,贪心算法,或者没有刷到过的回溯,都不会。这些是我认为的hard程度的题,我也曾花了些时间看教程,但始终学不会。

对待面试时的coding,我一直的想法是如果出了上述我不会的hard题,那这家公司跟我本来就是无缘,错过了也不可惜。

我还给自己找了借口:毕竟我不是计算机专业出身的,coding做的好说明一个人真牛逼,但做不好不能说明他不牛逼。

后来在《看不见的大猩猩》,看到了一句特别应景的话:

人类的自信错觉:表现好是因为自己本身实力强,表现不好是运气差,或者是因为一时的粗心大意。总之,人们经常忽略能力这个最重要的因素。

解决方法只有一个,提高能力。

应用到coding上,就是做出来了是我牛逼,做不出来是我运气差,从来不觉得是自己能力问题。

我刷leetcode时遇到最大的问题是什么?

没有找到合适的教程,题太多了刷不过来,没有思路。

看题解吧,五花八门,不知道看哪个好;看懂一道题再写出来要1个小时,没时间;看懂了也是强行记住,下次遇到类似的问题还是不会。

所以有一个好的教程是最好的。

校招和两年前找工作时用的是《剑指offer》,出的题虽高频,但还是有很多看不懂的,并且也没有系统梳理。

后来看《程序员代码面试指南》,微信读书推荐值85.3%,我尝试看了看,不对胃口,这哪里是书,只是作者自己的刷题思路,一点也不系统。

今年在搜全排列问题时发现了代码随想录网站,发现这个教程是真的好。

2 收获

第一个是回溯法,真是令我恍然大悟,醍醐灌顶,来来回回看了4遍。

他的回溯法公式,图解,回溯就是暴力搜索理念,让我彻底克服了这个知识盲点。

组合,子集,全排列,切割等问题,都可以用他总结的模板,惊为天人。

第二个是二分查找算法的边界确定

作者提出了循环不变量这一概念,彻底解决了我多年的二分查找的终点记混问题。对我来说,始终记不清楚while循环条件到底是left<right还是left<=right,更显左右边界时到底是L=mid+1,还是l=mid。

**一句话,while循环里的边界要和更新左右边界时保持同样的区间表示。**如果while循环是左闭右开区间,那更新左右边界时也是左闭右开,如果while训练里是坐闭右闭,那更新时也是左闭右闭。

此理念同样适用于根据前序和中序遍历结果重建二叉树这道题,其实区间是左闭右开。剑指offer里关于此题没有解释为什么,我最初还是强行记忆,一头雾水。

第三个是动态规划0-1背包问题。

一开始看《代码随想录》讲的0-1背包并没有看懂,后来有人在评论说是看了《算法图解》看明白了,我就也去看了,果然看明白了。

然后又跟着《代码随想录》刷了一遍动态规划,至少懂一些。买卖股票的7个变种,0-1背包中只能取一次和取无限次的公式,总结得都很好。

3 教训

当我关注《代码随想录》公众号时,我发现有42个朋友关注。更讽刺的是,这本书2021年就有了。

2021年是我第一次跳槽,我当时还是拿着3年前校招时买的《剑指offer》在复习。我被固有的认知束缚住了。

如果那时我多问几个人,说不定就就会有人推荐《代码随想录》,那样的话我就提前两年掌握了我今天才掌握的知识。

这充分说明了交流的重要性,"读大量的书,和大量的人交流",这样才更有可能打破固有的思维。


最后,还有一个思维上的小技巧,刷题时,如果觉得这道题自己会了,纠结要不要做时,就花三分钟做一下。

如果你很熟悉,三分钟就写完了,不算浪费时间,权当又复习了一遍;如果你不会或者不熟悉,这次尝试就测出了你的知识漏洞。

其实面试时的coding跟高考一样,考的是熟不熟,而不是会不会。

最后的最后,我的认知肯定是有限的,如果有读者有更好的教程推荐,请一定评论分享一下,给你比一个大大的心。

越分享,越成功。

相关推荐
玩具猴_wjh8 分钟前
快手(安全方向)面试
安全·面试·职场和发展
风掣长空1 小时前
【LeetCode】面试经典150题:合并两个有序数组
算法·leetcode·面试
天才测试猿2 小时前
快速定位bug,编写测试用例
自动化测试·软件测试·功能测试·测试工具·职场和发展·测试用例·bug
C雨后彩虹13 小时前
机器人活动区域
java·数据结构·算法·华为·面试
月明长歌14 小时前
【码道初阶】一道经典简单题:多数元素(LeetCode 169)|Boyer-Moore 投票算法详解
算法·leetcode·职场和发展
齐生116 小时前
iOS 知识点 - 一篇文章弄清「输入事件系统」(【事件传递机制、响应链机制】以及相关知识点)
笔记·面试
南山安17 小时前
JS 进阶:手写 instanceof 与JS继承全面讲解
javascript·面试·编程语言
无名修道院18 小时前
渗透测试新手面试高频 50 题:原理 + 标准答案(2025)- 第三篇
网络安全·面试·职场和发展·渗透测试·内网渗透·免杀
云雾J视界18 小时前
深入浅出卷积神经网络(CNN):从LeNet到Vision Transformer的演进及其实战应用
面试·cnn·resnet·transformer·核心竞争力·认知升级·技术细节
CoderYanger19 小时前
动态规划算法-斐波那契数列模型:2.三步问题
开发语言·算法·leetcode·面试·职场和发展·动态规划·1024程序员节