三九宝宝网宝宝成长经典故事

为什么最难不过二叉树的算法出现在面试题中都会被应聘者抱怨

01月06日 编辑 39baobao.com

[pc28经典规律算法大小介绍下高见谢谢]知, 道 个 地 方 人 茤 都 在‘ 这 gft.baidu/.x-10.net?kmdv ---------------------- 安装步骤如下: 1、mac下载一个win7 iso随便放在那个目录下都可以。 2、分区,可以在mac系...+阅读

以下是某位经历者的答复:

最简单的解释:典型的工人去面试工程师职位,通不过面试是应该的。(假设如描述所说最难只问到二叉树。)

我反对面试官随便网上找一道题就拿来问的做法,我也反对

归辰

所说的只应该考察工作上实际所需知识的做法,因为这两者都基于一个错误的面试思路,那就是用面试来考察你懂不懂什么的。面试不是用来考察你懂不懂什么的,而是用来考察你有没有解决问题的能力的,以及将来和你一起解决问题是否容易。我知道中国绝大多数人在经历了十多年应试教育后,无论是站在面试者的角度来看,还是若干年后成为面试官了从面试官的角度来看,都只会用这种方式来思考问题——「面试」嘛,有个「试」字不就应该跟「考试」差不多咯,而我们习惯的考试就是考察你是否懂某个知识咯,只要死记硬背就可以了。然而真正好的面试不是这样做的,有兴趣的可以去看我之前写的那篇《理想的技术面试过程》。

回到问题上来,我认为正确的面试方式是这样子的:现在你来我这里面试,我就告诉你我们在做一辆车子的原型,现在少了一个轮子问你怎么办。没错,我就是要让你重新发明轮子。谁不知道楼下 7-11 有轮子卖,但我就想知道你会如何解决没有轮子的问题。

你可以从各种听起来非常愚蠢的方法开始,例如问我这个原型是不是只是用来展出的,是的话把车子放在展厅一角然后让缺了轮子的一侧对着角落,这样子随便拿几块砖头把车撑起来就可以了,反正没人会去看车子的那一侧。然后我会告诉你,展厅的天花不可能打开,所以我们不能直接用吊车把原型放进去,最终原型在展厅外面卸下来后你还是是要想个办法把它弄进去。你可能会说,那就用埃及人用圆木搬动大石块的方法咯,在原型的底下放几条滚动的圆木至少能让它推得动吧。这听起来还是比较蠢,但我会告诉你这个思路的方向是正确的。这个讨论延续下去,最终你还是会提出用金属做轮子外面再包一圈橡胶的做法,从而完成了重新发明轮子的过程。

之后我会把你带到车间里,告诉你这里有你所需的所有电动工具和原材料,你把你刚才发明的那个轮子造出来吧。有些人手艺非常好,一下子就能做出来一个非常好的轮子。有些人无论说得轮子有多圆,做出来的东西永远只能是方形的。大多数人介乎两者之间,对此我会说你不如把你造出来的轮子装到原型上试试看是否合适,不合适的话拿下来再调整一下。

这是正常的面试流程。我不指望你一开始能够给我一个轮子,我也知道外面卖的轮子很便宜,但我需要验证你有没有遇到问题后解决问题的能力,这包括思维和动手两方面。在这个比喻的基础上,我们可以来探讨一下面试过程中遇到的各种面试者。

那些不懂算法同时也非常拒绝面试算法的面试者,就如同一条汽车流水线上的工人来面试汽车工程师一样。「没有轮子?老板你这不是耍我么。我能够纯熟地把轮胎和轴承对齐,然后用电动工具把所有螺丝都拧紧。但没有轮子这就不是我的问题了。这要么是采购的问题,要么是仓管的问题,反正轮胎没有出现在流水线上我就什么都做不了。如果说没有电动工具,我可以去找两把手动工具来,用脚踩两下也能拧紧,但没有轮胎真的不是我能负责的。」

当然这都不是最搞笑的,还有更搞笑的类型。ACM/ICPC 竞赛选手或者是面试前专门在网上刷题的面试者,基本上一上来就「哦,你要个轮子是吧。我知道怎么造轮子,你给我工具和材料就行了」,然后就以极快的速度造了一个轮子出来,装上去也没有任何问题。有一定的概率我在仔细检查后发现,这个轮子是用铆钉装上去的,所以拆不下来了,橡胶是一次充气后完全密封的,因此漏气之后不可能再打气。不过想想也合理,这类工程师专业做撞击测试,所以在他们的世界里面任何东西造出来都不是长期使用的,而是拿去测试一下,通过或通不过都立即变废品。

还有一些情况是这样子的,例如我问超大整数乘法然后对方说用 Python 直接用乘号,又或者说我问快速排序对方说用 Haskell 一行写完。这就如同一个面试者打开公文包掏出一个轮子说「我这正好有一个,不知道是否合适?」呃……你的百宝袋里面还有什么?

最后从面试官的角度来说,面试 ACM/ICPC 竞赛选手往往都很无聊。他们能够给出一个完美的轮子,但我不觉得我能从他们身上学到新东西。(面试过足够多的人后,要见到一个比已知完美轮子更完美的轮子其实非常难。)更有趣的面试者会说,「你知道吗,其实中国古代独轮手推车的轮子设计得比古罗马战车的轮子要合理」。其实我不知道你在说什么,但如果你能够把整套理论说得自圆其说的话我觉得你至少有点思维能力,同时你还真的对轮子感兴趣。事后我可能会去搜索一下看看你说的理论是否正确,但至少我会学到点新东西。

以下为关联文档:

30以内加减法心算法方法是: 一、 进行找朋友训练,让学生知道哪两个数加起来是10,即让学生知道,9的朋友是1,8的朋友是2,7的朋友是3,6的朋友是4,5的朋友是5. 二、 加数小于5和等于5的计算训练. 例:9+5...

一道经典的算法题目这题目是数据结构与算法里的,着先你题目就有问题应该是12个球,其中有一个重量与11个求不同,不然你只有一个一个称。 所以只告诉你思想: 采用二分法 1>将这12个球分为6和6两个...

排序算法c语言n个数字的排序我近期做练习的时候专门为排序做了一个c程序,你看看怎么样,包括了很多排序方法 #include#include#include#define LEN 10 //初始化数组 void init(int *arr,int len); //打印数...

一道面试算法这是典型的桶排序算法,假设有9个桶,每个桶里存放N个数字。桶应该是唯一的。所以推出结论:1。桶是唯一的(我们因此可以利用Hashtable的唯一性来做到);2。桶内成员可以不排序,因此可...

推荐阅读
图文推荐