登录
  • #美国面经
  • #码农类general
  • #面试经验
  • #google

独角兽,谷歌和脸书 onsite

yakhe
3379
7
注:华人独有资源,请勿翻译成英文,尽量不要用英文回复,谢谢!

三月面的,有幸都过了,题目都mix了,GFU的,都准备就是了。不要谢我,碰上同胞多帮忙就好了!

这次面了六个公司,所有的国人都很好很帮忙,感激不尽啊!

一点建议:

0. 题目理解完之后先把自己要做的事情一件件跟面试官说一下,比如打算先设计算法,再决定写几个类/函数,然后coding,然后跑test cases,然后分析复杂度,然后谈谈改进,这样一个是面试官心里有数,不至于看到bug就要指出来,会等到你跑test cases;另一个你和面试官都会有个时间把握,如果面试官觉得你时间不够了,可能会让你skip一些coding;再一个你自己时间不够了,也不至于后边就全是0,至少正确的流程摆在那了,feedback也会好看一些

1. 碰上难题很正常,不要慌,和面试官一起分析,找解法,犯了错误也不要紧,面的就是这个过程

2. 白板编程,不要上来就下笔,那样会很乱。先把框架打起来,要写哪几个类,哪几个函数,然后往里填。如果碰上复杂的操作,比如数组越上下界检查,不妨另写一个inline或是macro来做,这样不影响主程序的清晰度

3. 一边写一定要一边解释,闷葫芦不行

4. 写完了不要拍拍手就很高兴了,一定要跑test cases!!

5. 尽量避免和面试官争论,即使他错了,旁敲侧击提醒他就是了

6. 碰上不善的烙印要会保护自己,找个合理借口,礼貌的把白板自己拍了照片再说,不然太被动。我现在就后悔12题那一轮没拍照片!

1. 设计实现 ClickCounter,每次被click时候onClick被call到,timestamp是以秒为单位的,getCount需要返回前M秒内所有的点击数。 假设:无需考虑多线程

class ClickCounter {

public void onClick(int timestamp) {}

public int getCount() {}

}

这题做的一般般,想复杂了,幸亏主面试官是国人,很照顾,感谢!

2. 给三个数组A,B,C,都是正整数,数有重复,要求返回所有的组合(a,b,c),使满足:a 属于 A,b 属于B,c属于C, a+b=c

要求编程,并分析时间复杂度和空间复杂度

延伸:四个数组,返回所有(a,b,c,d)组合,使a+b+c=d, 分析时空复杂度

N个数组,分析时空复杂度

这题也是国人面试官主面,白人shadow。coding没问题,哈希表解决(跑完test case后还考虑过排序是否能更快,被主面果断提醒不要管排序,多谢!)。到N个数组时候分析复杂度颇有坎坷,跟两个面试官一起讨论了半天,几番提示,终于对了。惭愧!

3. 说你发明了一种新编程语言,操作一个足够大的正整数数组,有下列符号:

. 输入存到数组当前位置

/ 输出当前数组元素

> 当前操作位置在数组中右移一位

< 当前操作位置在数组中左移一位

+ 当前元素++

- 当前元素--

[​ while (当前元素[hide=188]

本帖隐藏的内容需要积分高于 188 才可浏览,点击前往一亩三分地论坛阅读

是一个卷发略有驼背的40多岁的烙印,之前在vmware干过

我的解法是用adjacent list表示图,水管类型决定adjacent list的size,DFS找出口并mark水路,检测漏水就看管子是否在水路上并且是否有未接开口(adjacent list里有NULL),跟上一个烙印一样,这个家伙也是不管你最后跑不跑test cases,看到有bug就要折腾半天,妈的我程序还没写完呢,就被他数次打断。最后拼了终于写完,test cases也跑完,但是估计之前他指出的几个bug都被写到feedback里了,干!

13. 设计+编程

这轮是加面的,就是因为被12的烙印阴了,还好其他feedback估计不错,Recruiter说给加面一轮

设计CallLater库,用户call registerCallback来注册一个callback,和一个delay值(精确到ms),这个库需要在delay ms之后call用户的callback

要求:1. 不能假设用户的callback的执行时间,可能很长也可能很短

2. 要求吞吐量20million /day

3. (隐形要求)显然了,多线程

class CallLater {

public void registerCallback(FUNC_POINTER callback, int delay) {}

}

韩国面试官,人很好,我一边写一边解释,这位就很安静,从不打断,我用的每个callback产生一个新线程,也跟面试官讨论过线程池,但是不熟悉boost的线程池,自己写又没把握,所以跟面试官说我先用generate新线程写,因为很多c++实现新开线程也是很light weight的,最后看看有时间再改成线程池,他说好。

写完代码后没时间了,就在google doc上说了下怎么建testbench,怎么改进

这轮feedback应该是positive,不然不可能拿到offer

补充内容 (2016-3-25 23:24):

14. design Netflix

白人面试官问的,这个就很野了,准备这类题的路数请参考九章算法系统设计班

补充内容 (2016-3-25 23:25):

u是两轮coding,一轮desgin,两轮culture fit,他家一定要准备behavior question,coding都是两个面试官,一个煮面一个shadow

补充内容 (2016-3-25 23:27):

f是两轮coding,两轮design,一轮culture fit

G全是coding,design轮设计完了也要coding,最变态!
7条回复
热度排序

发表回复