TT~TT最悲催的谷歌面试经历(9轮),没有之一

原帖地址:一亩三分地

TT~TT实在忍不住来发面经+吐槽了,楼主今天正在Epic 做onsite面试,之前6/16号在谷歌面试SWE (面精请参考之前发的帖子),两周前得到消息说HC更感兴趣把我放到Software Engineer in Test的职位(我也不知道是因为自己太水了还是谷歌最近很缺SET),但是要加面两轮…于是这周一刚加完两轮面试,不过加面的两轮都是普通的Software Engineer的题,最后也没有问到test case。。当时楼主还很好奇这是为啥,难道谷歌大发善心对我这个小本科安排不一样? 于是今天苦逼的接到电话说上两轮安排错了 (正好当时原来的recuriter 有事,是另一个recuriter安排的…)于是还需要再加两轮SET的加面….欲哭无泪TT~TT如果说加面一次的概率是10%,连着加面两次是不是0.1%的概率啊>< 已哭瞎 下面是加面题: 第一轮听口音应该是中国人面的,先是两个String, 问如何把他们排序,然后加special case (如果有个新规矩 ‘ch’ 的顺序在’j’之后和’k‘之前怎么办)楼主当时想的办法是根据规则重新把String map 一遍,比如 碰到ch的时候把它map成’k’, 然后k往后的都map成’k’+1。。。之类的,感觉还不算难,也不知道自己做的是不是正确的 第二道题是电话号码(之前在面经上好像看到过不过没具体看内同=.=为啥我看的题那么多从来不考?!) 就是说一个电话公司,要设计一个数据结构来查询什么号码已经被用,什么号码没有,如何优化数据结构, 楼主想的办法是用类似Trie的结构,然后他只让我编了trie的signature,然后optimize了一下(比如楼主之前一般是用hashmap存储children,但是其实array 更省空间,因为电话号码只有十位数,hashmap的initial size却有256什么的,还好之前有好好研究hashmap…)然后还可以把普通Trie里面的boolean isWordEnd去掉,只保存已有的电话号码什么的….感觉这轮发挥还不错,面试官也比较满意的样子 第二轮就略悲剧了一点,面试官是个妹子,迟到了七分钟的样子,而且刚开始麦声音很杂…题目是给一堆String找出两个String没有任何重复的字符且乘机最大(也是楼主之前在地理看到的题啊!可惜没仔细看。。。) 于是楼主上来就先跟面试官说:”啊,这个好像很容易用O(N^2)的算法做,让我来想想能不能达到更快的算法…“ 于是研究了几分钟后,面试官说:”啊,我从来没见过谁能用比O(n^2)更好的方法解这个问题的” 楼主:”……….” 接下来就花了大概不到十分钟的样子写出了brute force,检查了下,面试官说looks good,now how can we improve this.. 楼主想了半天(主要是在想能否用memorization的方法,可是好想不行呀),没想出来,于是被提示如何让两个单词的对比更快速,如果我们先把单词排序有没有用啊? 楼主:“啊!好像明白了…”于是研究了半天:“好像排序并没有什么卵用呀。。“ 面试官是我太笨还是您在忽悠我呀….. 然后面试官又问,那如果我们用bit vector如何呀 楼主心里咯噔一下,因为之前做练习题前前后后刷了有200多,但几乎没碰过用vector的,不过最终还是想到了可以建一堆length 26的vector array 每个对应一个单词,然后按照字母位置set vector,最后只需要AND一下任意两个bit vector就可以得出结果。于是很快的改好了code,结束的时候看了下表,大概还有7分钟 面试官就说啊,我们好像没时间做更多的题了,有什么问题你问吧 (感觉态度没有上一轮那个面试官那么热情了TT~TT) 我其实想说面试官姐姐您迟到那么久,中间还花了两分钟搞麦克,最后还提前两分钟结束,其实可以再问一道小问题呀…. 于是我就问:”啊,请问你们SET和SWE的区别是什么呀?” 面试官:“我不是SET呀。。。” 我:“。。。。额,我今天好像应该是要面两轮SET的………………….” 然后现在就悲剧了55555555555555