Snapchat总部在LA旁边的Venice Beach,面朝大海,其实就是个旅游景点,都是游玩的气息。内部员工都觉得这个app很有前途,是美国的微信,也会成为下一个facebook。另外员工里面华人也很多,目前没什么多少印度人,估计也是跟压力比较大有关系。福利感觉不错,虽说只是startup,不过健身房也有,伙食也不错,也可以包办绿卡。公司的布局充满着文艺气息,非常符合LA的风格。虽说自己没用过Snapchat,但是这个公司还是挺喜欢的。地理位置上由于不在硅谷,所以以后跳槽可能不太方便。
Snapchat的面试要求是要编译通过,跑自己写的测试,对编码能力要求还是挺高的。Onsite的时候不用白板写,都是在自己的笔记本上写,所以装个IDE会非常有帮助,写起代码也在白板上写要快很多。HR很高效,从G家挖来的,还告诉我们哪些地方值的游玩。
电面的时候是用Google Hangout,需要视频,两个男的在那视频感觉怪怪的。题目是给一个整数数组,其中所有数字都大于等于1。这些数字可以用加号,乘号和括号连接成一个表达式,求表达式的最大值。二维DP搞定。
Follow up是考虑0和负数。这时需要维护两个DP表,同时跟踪表达式的最大值和最小值。在当今这个DP已经不流行的年代,这个题目算是我所有面试见到的最难DP题目了。
Onsite一共4轮,里面有一个中国人,一个ABC,两个白人。中午一个senior level的国女陪着吃饭,感觉面试阵容实在太好了。
第一面是LC原题,根据前序遍历和中序遍历构造二叉树,follow up是检测非法输出。以前没想过follow up,原来还挺有意思的。
第二面有两题。第一题是Amicable pair,我只给出了O(N*sqrt(N))的暴力解法,不过小白还是很满意的,他说这已经是他所知的最好解法了。第二题是实现字典树,也不难。
第三面是实现Bipartite。虽然图论方面的知识已经基本都忘了,白人经理很耐心的引导我,排除了我一些错误的想法(例如想边BFS边回溯),然后自己debug了一下,主要的test case都过了。不过由于debug花了些时间,没有follow up。估计要挂就挂在这一轮了。
第四面是实现BigInteger类,主要实现BigInteger之间的加法。由于正负数都要考虑,其实这里也要实现求相反数和减法。思路不难,但是代码还挺多的,test case也挺多的,不过都测对了。
面试完以后感觉还挺好的,毕竟每题都写完了而且测试用例都过了,没想到最后还是被拒了,看来还是只有去硅谷的命了。