逗比程序媛的湾区FLAGT面试求职经验

444 查看

两年前写的文章,现在读来虽然有点幼稚但是还是很有价值的,希望能够帮助到大家。^_^

经过近半年的辛苦面试,总算签约dream company。整理下思路,把自己的情况写出来,只是为了给大家做个参考,希望能帮助到需要的人。

简介:

2010年国内一本本科毕业(大学排名30以外),四年左右iOS相关开发工作经验的女程序媴。有多家公司的工作经验,囧。期间做过free lancer一年,和多家公司(团队)合作过,认识了不少朋友。从2012年年底开始尝试面湾区工作,G、F及多家startup全部都是一两次电话面试就直接失败,之后开始做各种online编程比赛,看Cracking the Coding Interview,每天关注@陈利人 的微博及评论,和@待字闺中 的微信,并Crack了所有Leetcode的题(开始花了一个多月做完大部分题,等到昨晚剩下的难题一共花了3个月左右)。2013年夏天进入国内某top互联网公司,9月份只花了两个多礼拜重做Leetcode,发现自己的代码越来越简洁了。之后开始面G,11月初面完进入漫长等待,12月中去美国onsite FB,直接悲剧。回国后,焦急的等待G的结果很久都没有任何进展,觉得不能坐以待毙,14年1月底辞职飞去湾区集中精力找工作一个月,最终拿回LinkedIn,Amazon,Google,Twitter,和一个startup Tango的五个offer,因此标题简称为FLAGT。之后和各公司hr、hiring manager周旋两礼拜,总算尘埃落定。

刚回国后,感觉所有公司的反馈都是非常好,心情非常激动。好像一切都来得太容易,突然觉得自己找到了成功的方法。在和小伙伴们分享面经的时候,解释什么情况要怎么做、怎么说,好像按照自己说的去做就一定能成似的。其实现在冷静思考后,才发现,我这一路走来,有很多很多不可或缺的因素,履历、工作领域、性别、人脉、努力,还有运气,不过总体感觉确实没有我之前想象的那么遥不可及。

但是找工作的过程确实很痛苦,希望大家能找到自己的“组织”,有小伙伴们一起努力,互相分享经验、互相打气。从去年10月开始到2月,小伙伴们是越来越焦急,但是确实是很多人都在最后的时刻拿到了dream offer!貌似这趋势还是越到最后的拿得越好。毕竟从国内招过去的人最好情况都要10月份才能开始干活,所以很多公司到2月份才开始启动海外招聘。只有Google和Facebook的校园招聘是最早的,大概每年8、9月就开始启动了。所以请坚持到底,笑到最后的人笑得越好。

现在我很多面试的题目都记不太清了,面得实在太多,有时候都只是惯性的回答问题,惯性的写出代码。但是面下来看和别人分享的面经里说的内容确实没什么差别。所以我就以问答方式分享下我的一点体会吧。

1.湾区公司的面试题都很难?

我都没有碰到特别难的算法题目,印象出现很多二叉搜索树的问题。在Leetcode上难度排行的话,大部分也就中等水平。因为Leetcode上的题我都认真做了,很多题我都知道不只两种方法的解答。就算面试不一定出原题,但都是一些同样的套路。关键是简单的题,要能写出漂亮且bug free的代码,这个能力是需要花时间去锻炼的,而且一定能练出来。那些一直做题,一直找新题、难题做的朋友,也许到最后的收益就不会太多了。不如再花点时间提高其他方面的能力。

系统设计题也大部分都是我没做过的,我完全没有经验,就按自己的思路去说,也能过关。

要说难题,只有Twitter第一面碰到一个ACM拿过金牌的面试官,前面两个简单题我做得特别快,他很高兴,而且之前我们的聊天中他透露到中国区的ACM金牌在世界上算最难拿的,他很想挑战我,出了道稍微难的题。我花了几分钟努力确定我正确理解了题目意思,之后反正就那套路,brute force,或者greedy,他或许也忘记具体怎么做了,反正就是一起探讨,由于时间不多,他提示说动态规划。我立马就反应过来,然后列出状态转移方程。他看起来很享受讨论难题的过程,自己也接过来写下去,我就在旁边叫好。

所以,遇到难题并不用慌,尤其在那一面最后的时候碰到难题,时间肯定不够,面试官也是知道的,所以一般就要个思路而已,那思路就那么几个套路去想就是了。就算做错了其实影响也不会很大吧。最后这个面试官很高兴的和我握手,祝我好运!

2.前面的热身问题不重要?

有些面经说前面的热身问题不要花太多时间了,免得影响后面的面试。我看倒也不全对。确实别花太多时间,但也要重视这几分钟。Google的前几面我都非常紧张,一开始面试官想用几个热身问题让我放松,但是发现我没太多话和他们聊也就作罢。最后两面,我当时已经自我感觉很良好,面试开始进入状态了,所以开头能和面试官聊上来几句。面试官介绍自己做了哪些Google产品,我表示非常喜欢用,之后我透露了自己简历中“丰富”的项目经验和“多次跳槽经验”-_-,之后才有了strong hire,因为他们觉得我比较有眼光和系统设计答得很好。(我也不记得自己系统设计是怎么答的了,反正是cache相关的。就记得他从很小的一个case开始问,然后不断提出新的需求,然后我反应很快的给出新的解决方案,也许是因为整个流程比较顺畅吧)。

之后去湾区的面试中,就更熟练了,他们首先会介绍自己做什么的,然后我会表现很感兴趣,适当问几个问题。之后轮到我说,就说自己之前做了什么什么项目,我甚至拿了很多iOS设备去给他们做demo,有的面试官开玩笑问我到底有多少iphone。其实十分钟时间能展现很多亮点。比如startup面试我会展现我之前和startup团队合作的艰苦岁月,比如一个礼拜和CEO、CTO一起工作90个小时之类的。和twitter我会说自己特别喜欢用weibo,然后weibo和twitter不同的地方,然后weibo特别的地方,那个manager听了看起来挺惊讶的(毕竟Twitter多少年来都没什么花样嘛)。其实我主要就是做demo,因为做过很多app,不同面试官我还会换个app来介绍什么的。

3.最后问面试官的问题不如不问?

每轮面试的最后,一般面试官都会问,你有什么问题问我吗?有的面经上说最好不要问什么问题啦,因为面试官并不是真的感兴趣去回答你的问题。但我觉得不对。我第二次去湾区的时候,几乎每个面试官最后我都会问好几个问题,包括电话面试,而且他们都非常认真的回答我,一个问题都要回答好长一段,有时候我真的没大听懂,但也不好意思打断。我觉得最后这个环节,如果能问比较好的问题,或者有趣的甚至有挑战的,会让面试官喜欢你。湾区人才紧缺,他们愿意花时间来回答你感兴趣的问题表示尊重,也是给你一个更多了解公司的机会。有的面试专门是为了考察你对公司的感兴趣程度的,你如果没有任何问题问他们,也许他们会认为你没太多兴趣,会怀疑你的求职动机,很多人只是想拿个competing offer不是么?所以要表现自己的热情。哪怕是带我吃午饭的,也许都不列入最后评分的,我都会努力和他们交流,虽然其实我真的很想休息一会,节省体力。

Amazon onsite的午饭是我和一个组的hiring manager订了盒饭在面试会议室里吃的,整个午餐过程他都一直问我,还有什么问题吗?然后我挤一个,他回答。之后他吃几口饭继续问,还有什么问题吗?我又再挤一个。当时真的快崩溃了,几乎把我常备的问题都榨干了,而且我平时吃饭都不喜欢太动脑子的。

其实就抓住这个机会,侧面反应你的思考能力,求职所关心的内容,和对他们的热情程度。比如我会问code review的情况,team有多少人,有时候开玩笑问几男几女呀?What kind of people are you looking for?这些公司我都应聘的是iOS开发,所以我还会问那个iOS app团队怎么分工合作的?现在team里有多少人是熟悉整个项目的?像Twitter的app太大了,manager直接回答一个都没有,我表示失望和理解。然后LinkedIn有个面试官说,只有他一个是懂整个iOS项目的,我表示很崇拜⋯⋯还可以问,你对这个公司喜欢或者不喜欢的地方分别有哪些。或者先问你最喜欢的地方是什么,他回答完立马问那你最不喜欢的是什么呢?有时候我会针对面试官自己问一些问题,因为你对他们感兴趣,他们也会觉得开心吧。比如问他之前在哪个公司,为什么来这个公司的,来多久了,发财了没有(不要每个面试官都问这样无聊的问题,换不同问题去问)。我还问过一个L的面试官,Do you think LinkedIn is better than Facebook?他听了哈哈大笑,其实我不理解他为什么笑,也许外国人就是那么容易笑吧。他想了想觉得这个问题很大,问我具体什么样,我觉得他笑了就达到目的了,就让他介绍从engineer的角度来分析吧。然后他就说了一大堆Facebook的坏话,哈哈。其实面试官肯定是多说自己公司的好话的,至于不好的地方还是要靠自己私底下多做调查。

所以,多准备一些好的问题。

4.面试过程中需要谦虚吗?

我觉得一定要自信,态度要不卑不亢。哪怕自己回答错了也不要紧。自信真的太重要了,就算你面失败了,也并不代表真就是你能力的问题,不要看轻自己。很多面试官进来会握手问候,然后问你目前都进行得怎么样?我一般想都没想就说,I think it’s good!我猜他们也许就相当于问how are you一样,并不真的关心你怎么回答,就是礼貌问候,那么回答how are you一般都是Good how are you?那么回答目前顺利吗?也要说Good。我猜的-_-

然后就是在讨论问题的时候,也要敢于提出疑问。Facebook有一面我当时就是明知道自己对的,但是英语又解释不清楚,那面试官又很坚持自己的观点,然后我当时时差没倒好特别困,意志力一薄弱就妥协了。挂得心甘情愿。尤其是面试官刚把问题提出来,其实一开始的问题都很简单,你就得提出疑问,说什么情况怎么样。当时Amazon问我关于Goodreads的问题,类似于豆瓣读书,我当时说我非常喜欢那个app,那个在Amazon的kindle组待了8年半的女principle engineer听了深表欣慰说她自己也超级喜欢啊。她问要推荐书,所以求出一个person 2度关系以外的圈子内的星级最高的书。我当时问,有的书很popular但是评分不够高也可以推荐啊,有的书只有一个人给5 star也不一定那么好。然后她很高兴我说出这个,回答说那就求最popular的。

有个视频说,两腿打开站直,抬头挺胸,两手叉腰,然后用这种伸展的姿势保持五分钟,你就会变自信很多。我一开始紧张的时候会用,好像有点用^_^

还有个视频说,和别人交谈的时候,可以有意的去模仿别人的动作,能增加好感。当然要做得自然。比如说当他们突然把手在胸前交叉,那你也做个类似的动作,比如他们一开始是趴桌子上讨论,突然向后靠了,那你也边说话边自然的向后靠。如果一开始你们俩的姿态都比较拘禁,比如都颔首、前倾,然后慢慢他们开始变得放松、自然了,你也要跟着改变。比如他们一开始是坐着的,然后站起来走到白板前面开始写,你也站起来跟在旁边看着。如果他们开始擦白板了,你也找个刷子一起擦。如果他们在找笔,你也帮着一起找。

所以,面试的时候哪怕自己真的很紧张,也请努力催眠让自己变得无比自信吧!

5.只要能做对题就能有offer,没有offer一定是题做得不够快、狠、准。

显然不是。我认识有个朋友一面能秒杀三道题的算法大牛都被Google无视了(不点名,偷笑ing)。借我一朋友的话来说,面试不如说是种社交。借着讨论算法、设计题,来社交。要和面试官沟通,要和他一起讨论问题,要把你的思路简洁明了的解释明白,要让他们觉得你很聪明。

你拿了题就开始coding,面试官在旁边看着其实很无聊的,根本不知道你在干嘛,也不知道你是不是已经做过在背答案。我一般会简单画个图解释下我的思路,然后中途有问题就请教面试官,有时候他们高兴了会故意提示你让你别卡住的。当然如果你们确定了思路,你就开始coding,就可以一句话都不用说了,最好是一气呵成,如果你突然断了,在思考一些问题,最好think aloud,让面试官知道你在想什么。

把面试官当作朋友吧,平等对待,朋友是愿意帮你的。

6.如果自己状态不好了要继续撑下去吗?

如果是因为累的,没有办法,面试确实很消耗体力,你得自己扛着,但是我建议可以稍微透露给面试官。我非常后悔2012年Google电话的时候,前一天晚上加班到很晚,然后大清早状态很不好,却没有主动要求reschedule。还有13年底的Facebook onsite也是,时差倒得一塌糊涂,只想睡觉。但我看开了,相信一切都是上帝最好的安排,There is a purpose behind every delay。后来有经验了,Twitter onsite,一天六面,最后一面我在coding的时候,发现自己头脑出现了短暂的空白,然后我就敲了敲自己的脑袋,说OMG I am too tired…然后面试官表示理解立马说可以用一些伪代码什么的。但是我休息了会还是继续写了完整的代码。之后他就不让我写code题了,改为聊天,哈哈。

Amazon的onsite也是六面,是我onsite的最后一个公司,我学聪明了,每次面试开始之前,我都要求去上洗手间,然后在里面整理几分钟,哈哈,对自己说,上一面已经过去,把它抛到脑后,现在focus到当前这一面。

有时候我非常紧张,思路乱七八糟也不知道什么才是他们想要的答案的时候,我干脆就停下来,不说话,看着窗外思考一分钟,面试官会等你的^_^有时候灵感真的就突然出现了。

LinkedIn第一面的系统设计短url系统,我从来没接触过,一开始我给的设计他们(有两个面试官)总是给我提出新的问题,如果request很多很多怎么办?你的设计在什么什么情况下会出现什么问题?我都快崩溃了,但是我后来望着窗外思考了的那一分钟内,整理了下,就把之前的设计全部推翻,重新快速设计了一个,之后他们特别满意,主面试官还谦虚的说他刚进LinkedIn的时候都不懂这些的。

Amazon第一面也是系统设计,park车的计费machine的系统设计,写类和接口,我也没做过类似的,不知道到底答到什么程度才算对。我自己一个人在白板上写了又写,然后擦了又写,自言自语的,中途发现自己已经面红耳赤了,干脆停下来故作深思,喝口冰水(美国大冬天都喝冰的吗?!)。真的是喝了那口水,自己的心跳立马就恢复正常了,然后就想到自己要加一个和机器交互的模块。加了之后,我发现面试官们还是没有任何反应,就回过头问他们,还有什么其他需求吗?然后他们说哦,没了,你已经做了很多了。囧。

7.你之前的跳槽情况那么多,他们不反感吗?

他们不反感。有些人完全不care你之前的经历,我猜是,在国外找工作是平等关系,你干得不开心了,觉得公司不合适就走,很正常。另外我的工作经历都是一个比一个好。

但是他们确实会有顾虑,其实现在跳槽是很正常的事情,所以前面提到很多公司面试会专门考察你的热情程度和求职动机。LinkedIn的最后一面仔细问了我每家公司离职的原因。我解释清楚当时的各方面原因,有公司不好的地方,也有自己不成熟的问题。但是我强调这次我去找美国的工作是我花很多精力去认真挑选的,而且由于身份问题,我一定会把下一份工作当作长期的事业。

话说回来,由于我的工作经历丰富,所以我也许比别人多一些推荐信,每段经历都有一封。这个对我的帮助太大了,Google是我面得最差的一个公司,搞不好没有这些推荐信我就挂了。谢谢你们!不过也只有Google要了这么多东西,其他公司什么都没要,就因为我有Google的pending offer,他们就都抢着要,可见Google招聘的品牌效应之大。