乐趣区

关于java:刷题到底有什么用你这么刷题还真没用

微信搜寻????「码农田小齐」,关注这个在纽约的程序媛,回复「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, 这就是区别,区别在于算法之外的内容。


好了,想进自习室刷题的能够持续加我微信,上周没加上的抓紧时间了。

还不理解自习室的小伙伴能够看这个视频理解一下,学习内容不局限于刷题,英语健身前端后端各种都有打卡,欢送你的退出。

我是小齐,一生学习者,咱们下期见!

退出移动版