注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
标题有点怪。其实是很生气自己onsite表现后两轮不好,栽在communication。
我面的是SETI,原因是听说SETI拿offer比较简单。
结果面试后发现问题简单到可以说一塌糊涂。
第一轮、白人面试官兼host
面试前,因为房间被占用,所以我们俩在外交流了下。我起初不知道他是第一位面试官,还向他问了面试技巧的guidance。=.=
第一道是把数组向右移k位。我慢慢做,还讲了如果k是negative就意味着像左移。
第二道是找BST第二大的element。用reverse inorder traversal做了。
第三道是把c string去除空位。
感觉这一轮应该是hire / strong hire。因为三题都bug-free。
然后后面三轮都可以说是跪了。=.=
第二轮、印度面试官
我最怕名企的烙印,之前在亚马逊实习时被印度mentor黑得很惨,面微软时有一轮印度面试官也是百般刁难。
这一轮有可能被黑,大家帮我分析下。
第一题是给一个数组:1,1,7,8,8
1,1是一个pair;8,8是另一个pair。请返回7,因为7仅出现一次。
我说用xor,他说能更快吗?
O(lg n)?怎么可能?后来才问明白pair的元素都是adjacent的。例如两个1都是彼此靠近。
但记得很清楚他只说pair,又没说一定要adjacent。
写了个binary search给他。bug-free。
第二题Android Unlock Patterns
有种感觉被黑,因为写完后找出bug后还有1分钟问他问题。。。最后我还提醒他拍下照。:)
后来吃饭,被白人面试官带去cafeteria。
问了他一些问题。
吃完饭他把我带去wrong room。是吃饭前的room,但已经被另一位Google engineer霸占了。
后来他帮我问了coordinator发现地点改了。。
第三轮的面试官也来错地方。。
第三轮、(应该是)华人面试官(有可能是ABC或韩国人)
Rate Limiter,跟leetcode的那题不同,这题如果一秒内超过query per second限制需要wait一下。
给个class
class RateLimiter {
void setLimit(int query_per_second);
void wait();
};
wait()是要有block的semantics。其实这一题打得很不好,在他的提示下找到了要wait多久(有个formula),最后用了queue给了个O(n)解法。
他接着问O(1)解法。
时间用完了、代码改了好多篇依旧无法找到O(1)解法。。
他给了提示
我当时才领悟到,原来可以如此。
回家后想了下:O(1)解法不是要牺牲correctness吗?之前有讲到不同granularity,但把bucket内的queries设为同样timestamp不能保证limit正确啊。
他又没说可以不准确,我要怎样想得出啊??Granularity这个词implicitly imply? LOL
记得去年电话面试Google时面试官有说他想要个更快的但可能会出错的解法,但这轮面试官没说啊。
感觉上这一轮就是一直想O(1)解法,一直判断出还是O(N)。
我一直都在wrong direction,而面试官却一直说嗯嗯嗯。=.=
第四轮、华人女生面试官(应该是中国女生)+ 白人shadow
问题很简单,但这一轮的面试官是我的interview anti-loop。无论如何沟通,她还是无法了解我的approach。。。
给某一天的file,记载着questionnaire回答者的讯息:
{UserId, Timestamp (minute), City}
{100,201608080003,“NY”}
{101,201608080102,“CA”}
{102,201608080102,“CA”}
{103,201608080154,“IL”}
{104,201608080154,“CA”}
Timstamp是有序的。请打印过去一小时的city ratio。例如走到user ID 104要打印:
(101, 3/4)
(102, 3/4)
(103, 1/4)
(104, 3/4)
因为走到104时,user ID 100的entry已经expire。剩下有三个CA,一个IL。
她讲得不清楚但给了类似以上的例子,但我开始时误会了问题。
面试官说timestamp是based on minute的,所以误会timestamp的最后四个号码代表的都是minute(当时想了下60 * 24,一天有1320分钟)。
但其实是小时和分钟。例如201608080003是2016年8月8号00时03分钟。
后来clarify后,慢慢改成用queue + hashmap + hourly city count variable的解法。
解释了好久,面试官依旧不清不楚。
我当时心里想:开玩笑吗?我一边写了多行queue的代码,一边讲到口都要沙哑了,之前解释时也提到了queue很多次。
现在因为时间剩不多,字体有点乱,写了queue的pop operation,怎么array index会变啊?
看来我跟面试官沟通不来啊。如果不是有shadow,我会要求用中文跟她解释。=.=
结束前我问了下engineer如何合作解决棘手的问题,她答非所问,好像在说自己不知道。我心里都凉了。
旁边的白人shadow立即圆场,回答了我的问题,说会有meeting什么的。
我真的无话可说。白人shadow能明白我说的英文,但华人面试官听不明白啊。。
我不觉得面试官有黑我的意思,但这种程度的沟通等于没戏了。。
想不到准备了5个月,竟然栽在communication。。
总结:
(1) 如果stuck,一定要更加积极问hint。有些面试官在你in the wrong direction时也相当被动,一定要积极用example来搞清楚问题。
(2) 沟通很重要。不管面试官英文好不好,都要有能力让ta明白。
|