面试总结-刷题心得

结论先行,刷题策略:《代码随想录》的回溯、贪心、动态规划、二分、双指针 +《算法图解》的动态规划 +《剑指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跟高考一样,考的是熟不熟,而不是会不会。

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

越分享,越成功。

相关推荐
Nil2086 小时前
leetcode 198打家劫舍
算法·leetcode·职场和发展
考研保研资料分享10 小时前
计算机保研经验合辑:跨控制与浙大直博,预推免复习、论文复现及导师沟通(2025)
面试
怕浪猫11 小时前
12个UI组件库,Star最低的下载最多
前端·javascript·面试
熊猫钓鱼>_>11 小时前
面试出现 606 次的第 K 大,被拆成三个问题问
算法·面试·职场和发展·校招·面经·oj·ai生成
职业信用与履历核验知识库12 小时前
职业画像的数据质量与缺失值处理可靠吗?来源、验证与纠错方法
职场和发展
救救孩子把12 小时前
AI面试八股文-02_2-Prompt Engineering 面试题
人工智能·面试·llm·prompt·agent·agent记忆·agent面试题
十年Java程序媛12 小时前
Java String、StringBuilder、StringBuffer 底层原理|字符串拼接性能与线程安全
java·开发语言·spring boot·安全·面试
SamDeepThinking13 小时前
CyclicBarrier的底层实现
java·后端·面试
ShineWinsu13 小时前
对于HTML:HTML常见标签的解析—上
前端·面试·html·浏览器·标签·图片·超链接
花间相见13 小时前
【计算基础|网络13】UDP 与可靠传输
后端·面试