微信搜索🔍「码农田小齐」,关注这个在纽约的程序媛,回复「01-05」能够获取计算机精选书籍、我的刷题笔记、大厂面经、面试资料等资源,么么哒~
关于刷题,上一篇文章讲了 How,今天咱们来聊聊 Why —— 为何要刷题?前端
或许不少人没考虑过这个问题,或者会说由于面试要考啊,没错,就是这个缘由,就这一个理由足以让咱们去刷题。但今天咱们来聊点不同的,但愿给你新的启发。面试
我曾在这篇文章《从 LRU Cache 带你看面试的本质》中提到过部分,美国大厂面试 80% 都是在考算法,这实际上是最近 5-10 年以谷歌、雅虎为首才兴起的;国内大厂对于算法的考察虽然没有这么狂热,但也愈来愈重视了。算法
那为何会造成这种局面?在考算法以前它们在考什么?数据库
你有两个罐子,容量分别是 5 升和 3 升,还有一池塘的水。在没有测量工具的辅助下,问可否准确的取出 4 升水来?煎一个鸡蛋须要 15 分钟,但是你手头没有计时器。如今给你两根绳子,烧完一根绳子须要一个小时;而绳子是粗细不均匀的,有可能半根绳子几分钟就烧完了。后端
填满一辆校车须要多少个高尔夫球?浏览器
这类题被称为"Brain teaser",不仅是十几年前的科技公司在考,现在的金融公司还在考,好比我在刚毕业面试 Quant,Risk 的职位时都会被问这种问题,为此也专门准备过。微信
那时候互联网行业刚刚兴起,天天都会面对不少未知的问题,那么就须要“聪明人”来想办法解决这些问题,因此面试的核心是选拔最聪明的人。数据结构
后来互联网大规模的兴起,须要大量的工程师去解决问题,那么面试的核心就变成了如何选拔出可以解决普通问题、写出有效代码的人。框架
一个基本功扎实,思惟逻辑强,可以写出有效代码的人就可以胜任这些职位,所以互联网公司的面试规则也随之改变。工具
互联网行业的大规模扩张下降了行业的门槛,虽然目前依旧是高薪行业,但对我的的门槛已经大幅下降了,甚至不问背景和专业,每一个人都有机会进入顶尖的公司。
大部分互联网公司认为,算法是很是有效的筛选出他们想要的工程师的。
算法,一是可以考察面试者思考解决问题的能力,二是考察写代码的基本功。
一个能经过算法面试的人大几率是可以胜任工程师的职位的,不能胜任那还有 pip 等着呢;一个不能经过算法面试的人大几率是没法胜任这项工做的。
固然了,可能会漏掉某些优秀的人才,但真相就是,大厂不在意。
面试是可以最高效的选出须要的人才,最好还可以流程化、标准化,若是须要员工在面试上投入太多,哪有时间好好工做呢?
因此算法就像是高考同样,能够帮助企业快速筛选人才,而且相对其余方法来讲性价比更高:成本低、效果好。
但若是你是在某些方面有所特长,或者是某个领域的专家,就不须要经历这种标准化的面试了。就像高考时也会有特长生、奥赛保送之类的,但实际上,这种方式,更难。
因此以上我所说的更多的是针对初级工程师,也就是刚毕业的同窗,没有实习没有重量级项目的同窗,你说要考察什么呢?这么一算,算法真的是通往大厂的捷径了。
那有些人又说了,学了算法工做中根本用不到,学它有什么用?不学我也同样能够工做。
那我想问,你学了操做系统工做中也没让你写个操做系统啊,学了前端也没让你开发浏览器,学了数据库也没让你造个数据库啊,那怎么学个数据结构你就必定要想着造个数据结构呢?
如今工做中大都是直接用这些工具而不是从新造轮子,这也是互联网行业可以大规模发展的缘由,就像连锁店的产生,也不须要每一个员工都会去生产核心产品。
可是,一旦须要你去造轮子,好比开发新的产品,必定离不开大量的算法;那若是你不在这些职位上,天然是用不着的。
那这也解释了为何大厂都喜欢考算法,而小公司更注重你是否熟悉某一个框架的使用,毕竟小公司是要你直接来干活的。
那不在这些岗位上,就一点都用不到算法了吗?也不是。
对我来讲,算法已经影响了个人方方面面。
好比一个很常见的问题,工做中 debug 时,不是从第一个开始查,而是要用二分查找的思想,先找到一个中间位置设置断点,查看到这个位置的信息是否正确,而后再逐渐缩小查找范围,最终找到问题所在。这个思想就来源于 Leetcode 上的二分查找的算法题原题。
说到二分查找,有同窗都有问过我哪一个模版好,我都惊呆了,原来还有不少个模版?!
我在上一篇讲个人刷题方法中并无提到模版,由于我根本不用模版,我认为但凡是用模版的就是你对这个算法根本没理解清楚。
关于二分查找确实有不少变种,有些人总想用一个模版套全部状况,是会有这种模版,但这个模版必定不是全部状况的最优解。
在面试时面试官稍微变化一下条件,多问你几个这样行不行,那样可不能够,你就露馅了。
更重要的是,这样背模版来作题才是真的没有用!这样刷出来的算法工做中真的用不到,到实际 debug 时你还想套模版吗?难道在 debug 时,你还先翻翻模版,再肯定往哪一个方向去查找 bug?
公司招人是来解决问题的,若是套模版就能解决的问题,何须花高薪招人来解决呢?
因此刷题有没有用,还要看你怎么刷,不一样的人刷一样的题,效果可能彻底不同。就像咱们高中时作数学题同样,作题不是为了高考时碰到原题,而是锻炼本身的思惟、思考方式,这样才能在遇到新题时迎刃而解。
固然了,我也不想神话刷题的做用,有些工做就是用不着,没错,那就好好工做。
工做几年以后算法所占面试的比例必定会减少,一个工做 5 年的工程师去面试,若是问算法题,那经过以后会给一个 senior 的职位;而一个刚毕业的学生去面试一样的算法题,哪怕答的再好,也只是 entry level,这就是区别,区别在于算法以外的内容。
好了,想进自习室刷题的能够继续加我微信,上周没加上的抓紧时间了。
还不了解自习室的小伙伴能够看这个视频了解一下,学习内容不局限于刷题,英语健身前端后端各类都有打卡,欢迎你的加入。
我是小齐,终身学习者,咱们下期见!