12/11 Google Intern 面经

原帖地址:一亩三分地

上周五12月11号面的,第一次面试,就是G家,虽然策略不合理,但是这年头给一般学校的学生机会真是不多。我是第二年PHD,发的paper还不多,但也投了research的方向的intern,希望去了能做些research,面我的也是两个research的人。
第一面华人小哥,因为meeting room被占,迟到了几分钟,先热烈地聊了20分钟的research,小哥是做AD validation的,就是删除那些非法的不良信息的广告。面试题目,地里同学发过了,很简单:有一个data stream api,call一次,pop一个值,让你写个method,call这个api。计算最近的K的值的均值,其实就是sliding window,扫过一个数列,求window内值的均值。我第一反应就是用queue,但是写code时候经验太少,还以为让我写个完整class,都开始写constructor了。。被小哥制止,又很弱智给犯了几个错,被小哥点出后,我迅速改正,但感觉小哥已经对我鄙视了。写完后因为我的code1不够好,又问了个followup,我很快写了出来,他也肯定了我的code,刚准备问下我有啥问题问他,但也就是这时候时间到了,主要是下一个电话已经打进来了。。。

第二面是个白人大叔。因为HR给我的Google doc是错的(我也是醉了,第一次面试很不顺利)。大叔一开始不知道我看不到他的题目(因为我对着错的doc,上面一字都没有),还以为我智商有问题呢。后来幸而发现了,他发我正确 link后,开始面,20分钟已经过去。。。。题目简单:假设没有键盘,屏幕上有显示软键盘,你有上下左右和确定,5个按键可用,分别是<>^v和*, <表示向左move一格,以此类推。现在给你一个字符串,比如“ABCFED”, 每次都从A开始,你输出一个操作指令数列,也是字符串格式,比如,<<>>*<*>>*。软件盘宽度是k,只有字母,没有其他奇怪字符。感觉属于lc里string类easy往上medium往下的难度。很快做出来,大叔一路good,鼓励下来,人很nice。但大叔因为时间关系也没给followup。但这一轮是2个插曲,刚开始聊的时候,大叔自己很懂java,本打算考考楼主java,把我吓个半死赶紧说自己java水平初学,就用java做过几个class project而已,不敢说懂。大叔表示很没趣,跳过了java的问题。这里会不会丢许多分啊??其实我在申请时,确实也只说java仅仅有一年的experience,并没有吹牛啊。然后写完code,又问我平时怎么做unit test,我说平时我写的程序不超过100行,没咋做过unit test,顺便问句,啥叫unit test?大叔shock了,表示小鬼,testing也很重要的,给我讲了一堆堆不做testing的血泪史,我强行引起共鸣,说以前搞research也遇到这问题,code改半天发现改错了,回不去了,确实test很重要啊,大叔说,那你需要version control。。。。。感觉又被G家老程序员鄙视了。

总结一下,G家面试考综合CS能力,投机的不要,夯实基础很重要,行不行人家一眼就看出来了。code质量很关键。G家题目不难,可能因为电面吧,onsite据说难一些,但也不超过lc hard难度。刷题的时候没必要求难求怪,正常题目写的漂亮简洁,有理有据,估计就可以了。反思自己,面试经验不足,遇到一些状况也不太会处理,第一面就扛Google确实不应该啊!! 我觉得准备G家面试的一大收货就是把刷题变成日常,每天刷刷题,动动脑,有益身心健康。准备一直刷下去,直到offer到手。希望大家coding愉快,节日快乐!