10月下旬面的狗家,已拿到offer,之前在地里看了不少帖子受益匪浅,也发一贴面筋回馈地里。
题都不太难,准备了一堆Trie, SegmentTree, DP 什么的都没用上。。
第一轮,白人小哥,上来就说自己是第一次面试,感觉比我还紧张 出了一道高频自行车匹配,先问一个人怎么找到最近的车,然后扩展到很多人很多车的情况。
第二轮,白人大哥,给一个doublelinked list的pointers的set,问这些pointers可以组成几个connected components. 这题我开始理解错了。。以为是要我求最长的connected component的长度(教训,一定要再三确认题目的意思!!)写了code之后才发现理解不对,赶紧又重新想了一下。说了下可以用并查集来做的思路,但没时间写代码了。这轮估计评价不行
第三轮,国人小哥,非常nice,上来就说中文。题目是对一个树的nodes进行delegate,结果可以是真或者假,如果为假就要删除这个node,最后返回一个set,里面是delegate之后剩下的树的root node.
午饭,白人小哥,带我去吃了"烤鸭",虽然味道一言难尽。。。 尬聊了很多狗家的经历
第四轮,俄国口音小哥,假设已经有一个decode function,可以按如下规则decode: 数字+x+char = 重复这么多数字的char
e.g. 5xy -> yyyyy, 10xabc -> aaaaaaaaaabc
写一个encode function,把string encode成这种结构,可以做到decode(encode(string)) == string,encode之后的string应该尽量短
我就先说了下像aa这样的变成2xa会更长,所以只要对重复三次或以上的char做压缩就好。写完了代码之后,小哥说,有些corner cases你没有cover,我反应过来是对于原先就已经是"6xa"这样的string,encode不能正确处理。于是又讨论了一下,说可以把这种情况变成"1x6xa"。
第五轮,白人老哥,进公司十年多了。先问了一题,怎么把一个vector<string> encode写到一个file里,再从file里decode出来恢复成原来的vector<string>。
然后第二题,banana <-> cololo,怎么判断两个string有这种相似的结构。写了之后,follow up是如果有一个很大的词典,怎么快速判断一个词是不是和词典里的某个词相似。
全程没碰到一个烙印,也是很神奇了。我觉得狗家还是很注重思路的,不管是不是刷过题,一定要能展现整个思考的过程。不然就算直接秒了,评价也不会很高。