一次谷歌面试趣事
作者:网络转载 发布时间:[ 2014/4/30 13:46:23 ] 推荐标签:硅谷 谷歌 公司 面试
他走到白板前,”如果这样呢——假设我们有一个一定个数的字母组成字串——我给每个字母分配一个素数,从2开始,往后类推。这样A将会是2,B将会是3,C将会是5,等等。现在我遍历第一个字串,把每个字母代表的素数相乘。你终会得到一个很大的整数,对吧?然后——轮询第二个字符串,用每个字母除它。如果除的结果有余数,这说明有不匹配的字母。如果整个过程中没有余数,你应该知道它是第一个字串恰好的子集了。这样不行吗?“
每当这个时候——当某个人的奇思异想超出了你的思维模式时,你真的需要一段时间来跟上他的思路。现在他站在那里,他的皮裤子并没有帮助我理解他。
现在我想告诉你—— Guy的方案(不消说,我并不认为Guy是第一个想出这招的人)在算法上并不能说比我的好。而且在实际操作中,你很可能仍会使用我的方案,因为它更通用,无需跟麻烦的大型数字打交道。但从”巧妙水平“上讲,Guy提供的是一种更、更、更有趣的方案。
我没有得到这份职位。也许是因为我拒绝了他们提供给我的一些讨厌的工作内容和其它一些东西,但这都无所谓了。我还有更大更好的目标呢。
接着,我应聘了become.com。在跟CTO的电话面试中,他给我布置了一道”编程作业“。这个作业有点荒唐——现在回想起来,大概用了我3天的时间去完成。我得到了面试,得到了那份工作——但对于我来说,大的收获是这道编程作业强迫我去钻研并有所获。我需要去开发一个网页爬虫,一个拼写检查/纠正器,还有一些其它的功能。不错的东西。然而,终,我拒绝了这份工作。
终于,我来到了Google面试。我曾说过Google的面试过程跟外面宣传的很一致。冗长——严格,但诚实的说,相当的公平。他们在各种面试过程中尽大的努力去了解你、你的能力。并不是说他们在对你做科学研究,但我确信他们是努力这样做。
我在Google的第四场面试是一个女工程师,老实话,是一场很无聊的面试。在前面几场面试中我表现的很好,感觉到我的机会非常的大。我相信如果不做出什么荒唐事情来,十拿九稳我能得到这份工作。
她问了我一些关于排序或设计方面的非常简单的问题,我记不清了。但在45分钟的面试快要结束时,她对我说”我还有一个问题。假设你有一个一定长度的由字母组成的字符串。你还有另外一个,短些。你如何才能知道所有的在较短的字符串里的字母在长字符串里也有?“
哇塞。Guy附身了。
现在,我完全可以马上结束这场面试。我可以对她说“哈哈,几个星期前我知道答案啦!”,这是事实。但是在几个星期前被问到这个问题时——我给出的也是正确的答案。这是我本来知道答案的问题。看起来好像是Guy为我的这次面试温习过功课一样。而且,可恶,人们通常是通过上网来搜集面试问题——而我,我可以毫不客气的说,对于这些问题,我不需要任何“作弊”。我自己知道这些答案!
现在你们可能认为——在她问出了问题之后,在我准备开始说出在脑海里构思完成的后的演讲之前——你们可能会想,我应该是,当然该,从情理上讲,镇定的回答出这个问题,并且获得赞赏。可糟糕的是,事实并不是这样。打个比喻,像是她问出来问题后,我在脑子里立即举起了手,并大叫着“我!嗨!嗨!我知道!让我来回答吧!”我的大脑试图夺走我对嘴巴的控制权(这事经常发生),幸亏我坚强的毅力让我镇定下来。
于是我开始回答。平静的。带着不可思议的沉着和优雅。带着一种故意表现出来的——带着一种,我认为,只有那种完全的渊博到对古今中外、不分巨细的知识都精通的人才能表现出来的自信。
我轻描淡写的说出来那种很幼稚的方案,好象是这种方案毫无价值。我提到了给它们排序,好像是在给早期的《星际迷航》中的一个场景中的人物穿上红T恤似的。后,平淡的,好像是我决定了所有事情的好坏、算法上的效率,我说出了O(n+m)一次性方案。
我要告诉你——尽管我表明上的平静——这整个过程我却在做激烈的挣扎,内心里我在对自己尖着——“你个笨蛋,赶紧告诉她素数方案!”
当我完成了对一次性算法的解释后,她完全不出意外的认可的点了下头,并开始在笔记本上记录。这个问题她以前也许问过了一百次,我想大部分的人都能回答上来。她也许写的是“回答正确。无聊的面试。正确的回答了无聊的字符串问题。没有惊喜。无聊的家伙,但可以留下。”
我等了一会。我让这种焦灼的状态持续的尽可能的长。我可以发誓的说,如果再耽搁一分钟,我一定会憋出脑血栓、脱口说出关于素数的未解之谜。
我打破了沉默。“你知道吗,还有另外一个,可能是更聪明的算法。”
她二目空空的抬头看了一眼,仅在瞬间闪现过一丝希望。
“假设我们有一定长度的字符串。我们可以给每个字母分配一个素数,从2开始。然后我们把大字串中的每个字母代表的素数相乘得出一个数,用小字串中的每个字母代表的素数去除它。如果除的过程中没有产生余数,则小字串是大字串的一个子集。”
在此时,我猜,她看起来像是Guy当时把相同的话说给我听时我表现出来的样子。而我演讲时泰然自若的表情没了,眼睛瞪大,说话时稍微带出来一些唾沫星子。
一会儿后,她不得不说了,“可是…等一下,有可能…是的,可以这样!可是如何…如果…噢,噢,可行!简洁!”
我得意洋洋的吸了一口气。我在我的面试记录里写下了“她给了我一个‘简洁’的评语!”在她提出这个问题之前我确信能得到这份工作,现在我更加确信了。还有一点我十分确信的是,我(更准确的说是Guy)给了她的好心情。
我在Google干了3年,生活的十分愉快。我在2008年辞职去到一个小公司里做CTO,之后又开办了一个自己的公司。大概是一年前,我偶然的在一个创业论坛会上遇到了Guy,他记不得我了,当我向他细述这段往事时,他对他那条皮裤子大笑不已。
话说回来,如果这个故事里有什么教育意义的话——永远不要冒失的首先去应聘你梦想的公司,应先去应聘那些你不看好的职位。你除了能从这些面试中获得经验外,你指不定能遇到某个能为你的更重要的面试铺路的人呢。事实上,这个经验在你生活中的很多其它事情上也适应。
说正经的,如果你有机会想找一个解决问题的高手——雇佣Guy比谁都强。那个家伙很厉害。
(在这些陈年旧账里发现的一点技术瑕疵:字母有可能重复而字符串可能会很长,所以必须要有统计。用那个幼稚的解决方案时,当在大字符串里找到一个字符后把它删掉,当这样仍然是 O(n*m)次。在Hashtable里我们会有一个key->value的计数。Guy的方案在这种情况下仍然好用。)
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11