Google onsite面经

11.2去的Sunnyvale office面的,四轮Technical interview,加上中间一轮lunch(非interview,就聊聊天)
第一轮面试官是一个亚裔小哥,小小的。先带我逛了一下楼里的餐厅,然后就去meeting room了。中间经常有人敲门进来说有其他活动在这个房间,小哥就说不好意思,我们要面试完,然后把他们赶走了(笑)。题目是这样:定义一个String中连续三个相同的character叫做一个word extension。找到一个词里所有word extension的start index & end index。扫一遍处理一下就好了。写完问了followup,given一个isDictWord API可以查询一个词是否在字典中,要求写一个新的method,判断一个词是否是extended version of a word in dictionary。做法是首先找到input string里的所有word extension,枚举每一段保留一个或两个。(lz白板写码好慢啊,而且地方总是不够用)

第二轮是一个国人姐姐。题目input是一棵树里的所有node object(包含一个unique val和a list of children),要求找出根节点。lz解法是把所有在children里出现过的node加入一个set,然后过一遍node,不在set里的那个就是root。Followup问,能不能优化空间。做法是求所有node的val之和,再减去所有children的val,最后拿这个值去node list里找到对应的object。
时间还很多,就问了暑假在fb做的project,有什么challenge。

午餐和一个国人大叔,一路说中文气氛很轻松。他以前读了phd,也在其他公司待过,两年前从pinterest跳到在cloud组做infra。说那个时候p有一点政治,而且他不太适应p年轻人太多的氛围。聊到说google的release cycle平均相比于fb要久,工作的话release如果快会比较容易有业绩。

下午第一个面试官,有点口音,国家未知。他先让我说做的好玩的project,我就说了这学期image processing课的blending,multiresolution blending啦poisson blending啦,我发现我讲这种技术实现就讲的比较好一点。。然后问题目,情景是开一个party,input给所有人的friends list。output一个最大的invitation list,要求被invite的人也要至少有k个friends被invite了。lz先给了一个解法,每次找一个<k degree的节点,删了,然后再看剩下的图满不满足,分析复杂度O(V^2+E)。面试官说能不能优化,我问提示,他就说你run一遍看看,最后发现可以维护一个queue,每次弹出一个element处理(删掉,把他的neighbor加入queue),原理是每次删点后,只有他的neighbor的度数会受到影响,复杂度可以算出来是O(V+E)。

最后一个是加拿大人小哥。给四个数字,要求相对顺序不变,可以加±/(),问能不能算出24。lz说可以从Polish notation角度来看,这样就不用考虑加括号了,然后递归枚举每个位置±/。面试官说这是个general solution,但是可能写起来要久一点,也可以就用对应的五种可能的二叉树,然后枚举三个运算符。简单写了一下框架,面试官说可以了。要注意还有一些edge case,比如中间结果出0的话,不能作为除数之类的。(lz说的时候operator operand傻傻分不清,面试官应该觉得挺好笑的hhhh)

等uber的时候手机掉垃圾桶了,还好最后找了出来 0.0
其中可能挺多题是lc上的,但是lz刷的有限,没法像其他人一样报题号 0.0

hr动作超快,我前两天收邮件说过了hc,在PA match,希望不坑!

大家加油

恭喜LZ。请问onsite完到通知HC过了之间,HR有没有通知你呢?

恭喜lz!我也是11.2onsite在pa match,hr说周末给update,等的很心累

有的,问有没有其他offer deadline能不能extend啊,hc receive positive feedback啊。就有一点进展都会跟我说,感觉hr特别迅速

谢谢!我昨天刚match了ads(跟我gMatch填的完全没关系hmmm)在mtv
不过现在觉得大组也看不太出来……小组比较关键

补充内容 (2018-11-16 09:34):
hr说周末,可能还会快一点!

诶?ads是算大组了呀,PA match就是大组吧。我之前是学校旁边的office team match没match上,hr换成了正常的PA match

好巧~lz的第一题是我今天的电面哈哈

消息好快啊~羡慕

总体感觉楼主面的比较简单啊!好运!!!

请问LZ为什么用polish evaluation的思维不用考虑括号?如果遇到(a-b)/(c-d)这样的话怎么用polish evaluation考虑呢,还想请教一下想象成树又是什么意思呢?谢谢

五种可能的二叉树是说如果把表达式想象成一个二叉树(即编译原理中的“抽象语法树”。每个非叶节点是一个运算符,它的两个子节点(子树)是该运算符的两个操作数,每个叶节点是一个数字。表达式的值可以通过对这棵树进行post-order遍历求得)。比如1 + (2 - 3) * 4 就是

      +
    /   \   
   1      *
        /  \
       -    4
     /  \
    2    3

在有4个数字(叶节点)的情况下,这个树上一定只有3个运算符(优先级已经由树的结构体现出来了,所以不需要考虑括号)。而有3个运算符的树总共可以构成5种不同的形态。

从reverse polish notation的角度去考虑的话,这5种形态就是(X代表一个运算符):
1 2 3 X X 4 X
1 2 X 3 4 X X
1 2 X 3 X 4 X
1 2 3 4 X X X
1 2 3 X 4 X X