Onsite:
第一轮: 华人经理 system design轮,问如何design Snapchat. 常见题,没什么特殊的,聊天系统基本照着Facebook messenger那一套说就行,重点讨论如何完整的形成一套solution,即完整的收发消息的data flow.
第二轮: 看起来刚毕业的东南亚小哥 算法轮,问给一个data stream, 如何计算mean/max/min/median/mode(most frequent element). 中位数的就是LC 295了,其他的都可以通过加class member variable来记录从而O(1)求得。
第三轮: 华人经理 behavior轮,也没遇到比较意外的问题。印象比较深的问题是“请描述一个你做过的最难的项目”。这个问题事后想想其实一定程度上考察了你和team的match程度。比如你讲了做过的machine learning project模型如何难设计,那么对一个general SDE position来说可能不是对方想要的答案,甚至上升为你的skill set可能不match这个岗位/这个岗位的工作内容可能不match你的interest.
第四轮: 刚毕业两年的美国小哥,问给一个只包含01的二维矩阵,能否找到一个从左上角到右下角的全1路径,或最多有一个0,剩下都是1的路径。”有1个0"的处理就是 Queue 里装一个自己定义的Path类,Path类里包含一个boolean类型的containsZero flag就可以了,就是如果已经路过一个0,就不能再选择0了。也就是说 queue 里存 path, 把之前的节点全记住了, 如果对于一个 path 没 0 的话,就可以再容纳 0, 否则就只能容纳1。迷宫类问题首先肯定是BFS,简单描述了一下不用DFS的reasoning(矩阵很大时复杂度不稳定), 然后确定要用BFS以及high level idea大概是什么样子。先clarify了需不需要bidirectional BFS, 小哥说不用直接BFS就行,接着白板讨论算法。注意的是因为路径允许含0,所以queue里应该放自己定义的Path类,而不是常见的点坐标。
电面后一两天拿到的onsite,题目是 https://leetcode.com/problems/diameter-of-binary-tree/ , 讲思路分析复杂度,最终给出bug free O(n) solution
朋友内推拿到的面试。Qualtrics onsite允许用自己的笔记本在Hackerrank链接里写题,对于Vim user来说还是比较友好的,不需要自己定义test case跑。结果出的比较快,两三天就收到了口头offer。