逗比程序媛的湾区FLAGT面试求职经验 | 数盟社区



逗比程序媛的湾区FLAGT面试求职经验 | 数盟社区

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招聘的品牌效应之大。


Read full article from 逗比程序媛的湾区FLAGT面试求职经验 | 数盟社区


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts