一次电面,一次onsite,一次followup interview
电面:
Leetcode 原题, Decode Ways
onsite:
共五轮
第一轮,Behavior question,末尾有coding
coding题:有一个包含N个整数的数组,数组里的成员范围都在[0-N]之间,相互
disctinct且已经升序排列,请找出唯一的那个在[0-N]之间但不在这个数组中的整数。
eg. N = 3, [0,1,3], 输出 2
给了O(logN)的解法,写的时候出了点错误,面试官虽然是烙印,但人很好,给了提示
写对了。
第二轮,两道coding题
第一题:一个包含N个整数的数组,已知里面有超过N/2是负数,要求写一个函数处理这
个数组,让数组的前半部分填满负数(无需保留相对顺序),后半部分随意。最后返回这
个数组中负数的总数。
给了一个O(N)的算法,暂时没想出更快的。写完代码面试官看看说行,下一题。
第二题:基本上就是leetcode原题,Add and Search Word - Data structure design
很快写完了
第三轮,system design
设计一个facebook的搜索引擎,这个引擎能搜索出包含关键字的facebook动态。没有讨
论太多前端的,主要在讨论架构和存储。
给出了倒排索引来存储index,以及讨论了下如何存储facebook的动态(key-value 存储
)如何handle hot keyword。面试官人很好,引导我的思路。
第四轮,一道coding题
烙印,Leetcode原题,我忘了是哪一题了,反正就是给定一个整数,输出它的念法。
比如 1001,输出one thousand and one
不明白为什么会选这道题。不难,但是代码量可不小。写完再自己写Test case,发现
几处疏漏的地方,改好,再扯几句就结束了。
第五轮,一道coding题
给定一个包含整数的数组,和三个函数,bool small(int), bool median(int), bool
big(int)。三个函数的结果不会有交集,也就是说一个数被small()判为真,另两个函
数的结果一定是false。处理数组,让所有small在左边,big在右边,median在中间。
无需保留相对顺序。
先给了个space O(N)的解法,写完了代码和test case。
然后想了想给了space O(1)的解法,和面试官演示了下过程,然后开始写代码。代码刚
写完就到时间了。出来后想想第二个解法的代码应该没全写对,有个条件判断写错了。
后来收到HR电话,说4场 positive,但是一场negative,要和我做followup interview
,就是再电面一场。
最后一场电面,Leetcode 原题。Read N Characters Given Read4 II - Call
multiple times
这题只写过一遍,时间还有点久了,题目本身对代码要求也挺高的,写得不大顺手。
最后还是没成功。
好好准备,来年再战。