惨烈的google onsite (11.5)

新鲜的谷歌onsite。
早上到的早,怕路上堵车,提前一个半小时就到了,前台不让进,就在谷歌园区里散步。
九点半去check in的,结果我的第一个面试官没来,临时换了一个,耽误了二十分钟,导致整个流程都比较赶。
第一轮是一个烙印,上来就问问题。说有一个坐标系,只有第一象限,写addX, addY,和getPartition三个函数。
addX就是在x = input的那里画条竖线,把象限分隔开。addY就是在y = input那里画条横线。getPartition就是问你一个点x,y属于那个部分。
没划线的时候,全都是partition 0。画了线之后遵守从下到上,从左到右,partition += 1。比如一个井字,partition就是
[[6,7,8]
[3,4,5]
[0,1,2]]
一开始说二分查找树,面试官说不行,然后我说那就用列表存。写出来之后他又说应该用二分查找树,真是坑人。
第二轮是一个中国小哥,上来问简历问得特别细。然后题是有一个机器人,只有两个操作,move和turnLeft,如果往当前方向move有矿的话,move会返回False。要求返回矿石的数量。问题不是传统的给定矩阵做backtracking。地图是未知的,不一定什么形状。backtracking的时候也不能简单的return返回到栈的上一层的状态,而是要控制机器人走回去。这轮面试开始的时候没有休息,实在太累了,脑子乱乱的,没写完,写出来的感觉也是错的。跪之。
中午是一个亚裔小哥带我吃饭,说实话谷歌的食堂很难吃。
下午第一轮是一个白人老头,非常nice,循循善诱,态度非常好。问题是猜字游戏。出题的人从dictionary, which is a list中挑选一个单词出来,template it with单词长度的下划线。猜词的人也知道dictionary,可以根据字典里的词来决定策略。可以每次猜一个单词,也可以每次猜一个字母。每次猜对的字母会把template里面的所有对应的字母的位置的下划线全都换成那个字母。总共只能猜n次,这个n是随便定的,老头当时说,你就定成6好了。一开始我是把字典里的所有词按照单词长度定义到hashmap里,然后通过template的长度从里面pop单词出来试。老头说应该先从单个字母开始试比较好,于是又通过单词长度,映射到对应长度单词的字母频率,从高频的开始找。找到就剩一个下划线的时候,再更改策略,直接猜词。猜词的策略是把字典里的单词正反序各存一个trie树,从剩的那个下划线分开,左边的走正序树,右边的走反序树,最后求交集。但是并没有写完,老头说这道题大家都写不完,而且老头不像其他面试官那样拍照,而是type到ide里,我没写完的地方还用注释写出来我想要在下面干什么。最后还让我确认他打的对不对。
最后一轮是个白人小哥,就是求汇率的题,中间可以多次转换,做烂的题,就秒了。
整体体验真的是,最重要的并不是刷多少题,而是体力。第二轮面试开始就体力不支了。大家一定要记住教训,每次开始新一轮的时候,一定要提出要休息一会,至少去上个厕所,那瓶水拖延时间。要不然真的连着面太累了。
面完赶紧就发面经了,积攒一下人品,希望能给我一轮加面,就这点奢望了。

补充内容 (2018-11-7 14:35):
有些同学问了写法的问题,正好我再回来的飞机上强忍悲痛写了一遍代码。在后面的楼里有补充。飞机上写的有些匆忙,写的不对的地方只能贻笑大方了。大家有什么意见可以随意说

补充内容 (2018-11-7 14:38):
因为大家都问第一题,所以暂时只贴了第一题的代码,如果有其他的问题之后再更新

LZ,你可以立刻给HR说你这个情况当中没有休息太累了什么的,然后再告诉HR你第一轮明明一开始二叉查找树答对了但是印度人不让你用,这样加面的几率应该会变大。可以随时和HR交流的。

1 Like

you too. 倒下了一个我,还有千千万万个我!

lz good luck, 同样是今天的onsite

我也是今天MTV刚面完,下午的第一轮跪的特别惨,回酒店之后脑壳疼的厉害

第一题我不确定,但是二,三两题刷题网上都有

哈哈,很详细。祝你好运!

二是扫地机器人
三是猜词
leetcode G家高频

可以麻烦问下第二三题的题号是什么吗, 好像没有见到过

上面ilidans给了答案了

代码贴了吗?在哪里呀