狗家现场

来来回回被狗家拖了好久,本来都想放弃不去了,最后还是真香的去了onsite。

第一轮 :bq 国人小哥或ABC
小哥以为自己是算法轮,知道自己是bq轮之后也是懵逼的,全程他不知道自己想要问啥,我也不知道他想知道啥,反正就按套路回答就是了。

第二轮 :算法 面试官病了,临时换了个黑人,但是没有口音的那种
题目是在complete tree上面判断一个index的是否存在。index是一行一行写上去的,给一个target index要判断这个index的tree node存不存在。
我用的方法是用这个target反向建path,然后在tree上跑这个path,能跑完就说明存在,中间遇到null就说明不存在,时间复杂度是O(log target)和树关系不大。
follow up是计算这个树的size,因为是complete tree所以只看最后一行就行了,在最后一行的index range上跑二分查找就能知道size了。

第三轮 :算法 朋克白人大叔
题目是auto complete的变形版。给出一个字符串,要求你输出这个字符串中所有可能包含的单词。方法是先把字典抽出来建tries,然后把字符串挨个char扫过去就行了,还需要一个hashset去看下一步的搜索是不是在字符串中有的。
follow up是输出topK,我给出了三种方法,头权重,头尾权重,和历史权重。写了下sudo code。

第四轮 :午餐 白人小哥
饭不算好吃,比linkedin有很大差距,随便聊了聊,带我逛了逛,感觉这个site的人都蛮随意的。

第五轮 :算法 白人大叔
迟到了近10分钟,orz。
第一题是code review,我感觉这段code每行都有问题,有的行问题还不止一个,有的地方我觉得写的很怪异,但是语法上又没啥问题,所以最后我也不知道这题我答得怎么样。
第二题是刷题网317变种,一堆办公室,用门连接,有的办公室有人,要求是找个房间放咖啡机,离所有人的总距离最近。
我先是自己脑抽在多起点bfs和单起点扫n遍bfs上纠结了半天,之后又在选择data structure表示办公室的位置上和面试官纠结了一会儿,我觉得用个二维数组就好了,他觉得不行,最后是把room的坐标封装,用个hashmap来表示门。
结果是我说了自己的算法,然后demo了一下,没时间写code了。
最后结束的时候,他又提到了有几个人离得很远会导致这个方法不够效率。我面试完之后给hr写了封邮件,让她转发给面试官,说明了定长的bfs搜索可能解决这个问题,虽然不改变时间复杂度,但是constant factor能大大降低。也不知道能起多大用。

第六轮:算法 国人大叔
问题是n叉树,树上的node分成两类,现在要求删掉一类重建这个n叉树。
我用的方法是bfs层级搜索,但是中间穿插一个递归来找每个node下面的所有的新node。
有个deep copy传错参数的地方,在最后demo test case的时候被他看出指了出来,然后改正了,不知道影响有多大。

整体面试官人都还不错,面的题也蛮幸运的说不上很难。今天hr来信说整体评价貌似也许大概挺positive,感觉也就这样了。