他家电面有2轮,等待onsite。。。
电面1:
国人MM面的,这点感觉很难得。统计最近5分钟的点击量,实现hit和getHit两个函数。这题是他家高频题,我用deque实现的,hit的均摊时间是O(1),觉得应该差不多最优了吧。
后来要求写个并行程序,忘记问是写共享内存的还是分布式的了,写的有点卡,有时候纠结到底用lock还是用多个local copy,感觉设计起来其实就是CAP理论的实践。如果要求consistency,就不能partition,或者说使用lock的话availability会很低。如果我做多个local copy,感觉无法保证consistency。最后没时间了就只是谈了下大概设计思路。
电面2:
MIT小白面的,感觉比较寡言少语,面试的时候不怎么说话,就安安静静看我写代码。
第一问:给一个电话号码,并且提供一个字典,要求给出所有与号码对应的单词。这个题目跟LeetCode里的letter Combinations of a Phone Number比较类似,DFS秒掉。简单分析了下时间复杂度。
第二问:如果dropbox这种单词不在字典里,但是drop和box都在,那么dropbox也算,这种情况怎么办。我首先思路是沿袭第一问的方案,在DFS的函数里,除了一个string作为当前的string,多加了一个string参数作为merged string。思路稍作修改,对于一个字母,有两个选择:1)可以append到当前string上;2)如果当前的string本身是一个合法单词,可以把当前