我的求职总结

avatar 125849
heavyrain
7021
13
[align="left"]答应Warald写一篇工作总结的。不过因为人懒的缘故,始终没有写。今晚总算有机会把自己的经验写下来。因为好久没有写文章的缘故,如果读起来觉得幼稚的话,就当是增加生活乐趣的笑料吧。[/align][align="left"] [/align][align="left"]缘由[/align][align="left"]这是我PhD中间的某一年,看着师兄忙忙碌碌地享受着研究的乐趣,有一天我突然我自己,这适合我吗?我突然觉得自己已经很老,没有热情。我也许能够把这个PhD混毕业,但是这是我想要的吗?我突然发现更让自己的激动的,不是去争论一些模棱两可的学术问题,而是去构建有实用价值的系统。于是某一天,和我的adviser说了抱歉以后,就开始找工作了。[/align][align="left"] [/align][align="left"]过程[/align][align="left"]因为实习期间认识的好多同事都跳去Square,DropBox之类的startup了,所以我也决定趁不算太老,追随这些牛人的脚步。[/align][align="left"] [/align][align="left"]3月份,2个startup的拒信,除开练手的雅虎给了offer外。[/align][align="left"]4月初,开始大规模onsite,最惨的一周,连续拿了5天拒信。某个周五,一个面试官问我,你觉得你这七年的教育有什么用?[/align][align="left"]4月15日,第一个startup offer。然后就没有悲剧过。 一共拿了五六个startup的 offer,从了一家hot startup,并且withdraw了PSD中某家的onsite。[/align][align="left"] [/align][align="left"]面试经验[/align][align="left"]看了太多刷题经验的总结了。当然leetcode我也刷了两遍。关于刷题,我觉得leetcode是不够的。它涵盖了基本的数据结构和算法,通常它让你去实现一个method。很多公司也了解这一点,所以很多时候,他们会让你设计实现一个class。最大的不同在于什么呢?首先,你得有全局的观念,因为不同的method中会share一些变量,所以每个method的正确并不一定意味着它们放在一起是正确的。我最常见的错误就是忘记去update这些变量。然后,你就得考虑你这个class的效率,可扩展性,concurrency以及scalability。作为一个合格的工程师,你也得知道它的局限性。比如一个算法是否会结束,cache的hit ratio最多有多少,诸如此类的问题。这个帖子对面试可能出现的内容是一个很不错的概括:http://www.mitbbs.com/article_t/JobHunting/32058385.html。[/align][align="left"] [/align][align="left"]如果你刷题没有问题了,那么你就算合格了。但是只要有人觉得你不适任,你还是可能会被刷下来。所以面试中和面试官的交流是很重要的,这些交流能够让你从一个合格的求职者蜕变为一个优秀的求职者。而这些交流,主要体现在你最后一个问题上。[/align][align="left"] [/align][align="left"]这个问题的重点不在于你想知道什么,而是如何让面试官爽到。我的策略是让面试官聊他们熟悉的问题。因为聊熟悉的问题他们不会很吃力,同时又能显得他们看问题很有深度和智慧。这样他们就会很享受这个过程。[/align][align="left"] [/align][align="left"]具体来说,首先第一个人,你可以很谦虚地问,贵公司(组)系统的架构大概长啥样子,能不能给我一个简介?如果你和我一样,是一个视觉型的人,还可以让面试官在白板上画出来。 然后面试官通常会在白板上给你画图,问你有没有签过NDA,然后激动地唾沫横飞。这个时候你也要表示得很激动,同时试着找出这个系统和别的地方得不同。比方说,有的公司有Hadoop和MapReduce,有的公司没有; 有的公司用NoSQL,有的公司用relational database。同时试着去理解其中的细节。利用中间的break,去洗手间、喝水,然后想清楚自己后面要问的问题。有了第一步以后,后面的面试官,基本上就是问这些细节,重点是一定要让面试官爽到。不要说太多,也不要问特别大的,让面试官尴尬的问题,但要抓住他回答的其他细节,快速反应。我通常会说:That'sexactly what I want, could you please elaborate on XXX(a concept hementioned)?最后礼貌地感谢下人家。

还有一个好的切入点是公司的engineering blog。面试的时候可以提一下你读过他们的blog(并且面试前一晚你应该读过),然后问他们其中的一个method是不是可以generalize。当然如果内容不多或很久没更新,你可以在第一个人那里提一下你在他们的blog里没有找到他们的架构设计,但自己又很有兴趣知道。

Acknowledgement
[/align][align="left"]在我开始读PhD的时候,经常开始看到国内有人的博士论文上写到,“我的博士生涯教会了我做事,但更重要的是做人。”年幼无知的时候觉得这段话很好笑。但我quit的那一刻,突然觉得这句话很深刻。这段不短的时间里,有人包容了我的幼稚,有人选择旁观,有人嘲笑或者指责我。很庆幸的是,那些选择包容我的人一直都在,不论何时何地。而我也一直相信,我会遇到更多这样的人。[/align]
  • 8
13条回复