想去欧洲科技业工作请看此!Facebook、Google、B


89人参与 |分类: X真生活|时间: 2020-07-10
想去欧洲科技业工作请看此!Facebook、Google、B

最近结束了几个海外的面试,想留下一些个人心得。如果刚好有机会帮助到人的话就更好了。

公司 &地点选择

根据一些大大的分享,近几年没有 OPT,要直接找到美国的工作不是一件容易的事情;H1B 抽到的机率也一年比一年低,所以本次面试的目标,全部都锁定欧洲的公司或在欧洲有分部的公司。

而考量到 VISA 的问题,找的公司都是比较大型的公司,处理 VISA 比较有经验。

以下是本次有面试的几间公司 :

準备 &面试过程

跟大部份人的过程十分类似,因此不会写太多细节,例如 phone interview 的进行方式之类的。会比较着重在个人心得的杂记。

準备履历

自己觉得履历没有写得很好,但原则就是多看多改。可以让人 Google 到的东西尽量要更新,例如 GitHub,LinkedIn。

投履历

尽量找该公司内部人推荐,没有的话再从网站上面投。以个人的经验是,内推有 phone interview 的机率是 100 % ;反之则是 0 % 。

不过我没有投很多家,也许误差很大。

Online coding test

跟 Leetcode 很像,就是在线上解 Leetcode 类型的题目。不是每间公司都有这关。

HR phone screen

大部份是一般 screen 的问题,只要可以用英文与 HR 沟通,不会有什幺大问题。

有些公司会有简单的技术问题,例如前一阵子有人在 Hacker News 分享面试 Google 的第一关问题,参考价值很高

HR 也会在这个阶段解释接下来的面试流程,有不清楚的可以把握机会问清楚。有特殊需求的也可以趁这个时候说明,例如需要公司帮忙申请 VISA,可以赶快寻求共识。以免面试结束后发现你要的公司给不起.

Technical phone interview

由于我投的职位有些跟系统有关,所以分 coding & system 分享。

Coding

在过程中尽量跟 interviewer 沟通,了解是否在正确的道路上。就我的稀少经验中,有几个 interviewer 给的建议都非常的好,让我在开始踏上错误的方法前及时的回头。

Always think loud,把想到的事情尽量讲出来,例如「I am thinking if I can replace this part with blahblah,the complexity can be reduced to O」之类的。

最后通常会有机会可以问 interviewer 问题,这里指的是跟面试本身较无关的问题。有些大大觉得问 interviewer 问题会影响结果,就我个人的想法而言,我其实觉得不要问很离题的问题应该都还好。因此我大部份问的问题就是跟工作 &生活有关的问题。也得到了很多有趣的资讯。

System

非常非常非常广,可以说是一台现代 Linux server 上面有的都有可能出现。举些例子:

Interview 的方式也很特别,例如其中一个面试开始前,interviewer 就要求我离开键盘,不要使用 terminal & browser。

接着开始情境模拟,例如碰到一个怎样的状况,会从什幺线索开始查,可能的 workaround 是什幺;如果想要解决 root cause 要怎幺解决。

个人感觉是 system interview 的準备难度比 coding 难上不少。主因是 system 的问题可以不断的越问越深;但因为写程式的过程中其实有不少的 abstraction,不一定有机会了解更深一层的运作方式。另外就是 coding interview 的準备资源非常的多;但 system interview 就没有这幺多可以抱佛脚的东西。

后续会推荐两本书籍,有兴趣的大大们可以参考。

Onsite interview

分三部份: coding & system & system design

Coding

Onsite 后基本上就是白板题,进行的方式跟 phone interview 没有太大不同,只是要习惯在完全没有 IDE / editor 的帮助下,写人看的懂的 code。

由于是在白板上作答,有一些优点可以运用。例如可以先用一些图像化的方式解释想做的事情。如果需要 binary search 就可以先画个图,说待会写的 code 是这样那样。

另一个优点是看的到人了,可以多观察 interviewer,例如觉得怪怪的时候就尽快问是不是走错路了。

偶尔也可以喘口气思考一下,或者利用一两句话放鬆一下,整理思绪。

System

要有在白板上解释任何被问到东西的能力。例如被问到 directory, regular file, inode 之类的关係的时候,要可以在白板上利用一堆表和线解释出来。

或者可能会需要解释 OSI model 中,主要几层做了什幺事情从最底层到最上层的东西都可能会考。非常硬的一关。

System Design

在每一间公司都有遇到,题目基本上就是「Design XX」XX 可以是任何现代网路的服务,例如 Facebook,Gmail,dropbox。

但实际上不可能要求在这幺短的时间内设计这幺大的东西,因此过程反而像是跟 interviewer 讨论,是不是只做这些部份,剩下的就先不要。

在实际开始规划前,问的问题非常重要,会直接的影响怎幺设计系统。例如「How many users will use the system?」就是一个最根本,一定要问的问题。

Imagine Dropbox with 10 users v.s. 10 million users.

问完以后就会在白板上画出需要的 components,例如 HTTP server,DB,Cache,storage。

最简单的版本完成以后,就会根据这个版本慢慢的越变越好。在改善的过程中一定会有一些很两难的问题,可以试说着说明各种方案的好坏,tradeoff 是什幺,也许在什幺样的情况下我会选 A,而另一个会选 B。

一些参考方向:

进阶的:

结果Offer:Reject after onsite interview:Reject after sending resume:心得

在準备面试的过程中,压力非常的大;有时候会想说,我写程式也不一定用的到这些。

Steve Jobs 在 史丹福大学的毕业生演讲中分享过:「我没预期这些东西会对实际生活带来什幺具体的作用。但是 10 年后,当我们设计第一部麦金塔电脑时,它又浮现在我心中。」

我自己的想法是,把整个过程变成另一种提升自我的方法:例如

在抱持着这样的信念下,不论成功与否,都会有很多收穫。

另外,整个準备 + 面试的过程我并没有刻意拉得很长。

一方面是自己身体在压力大下并不是很健康;另外就是不想长时间的影响工作上的表现。

在收到第一个 rejection 的时候,心里有短短的失望了一下。
但很庆幸自己有坚持下去,最近有一个还不错的结果。

另外在整个过程中,保持跟 HR 良好的沟通也非常重要。

跟我合作的 HR 里,在每次通知结果时,我都会问可否给我一些 interviewer 的 feedback。而他们也不吝于分享,因为对 HR 来说,recruiting 到好的人是他们最重要的工作。这些 feedback 也在接下来的一些面试中有许多无形的帮助。

书籍推荐

这两本书也许不是很适合拿来抱佛脚的书,因为两本书都超级厚,内容丰富的程度非常适合拿来打底。

其实两本我也都还没有完全看完,也还一直持续在看,希望有朝一日可以看完他们 XD

致谢

Last but not the least。在这些过程中受到非常多人的帮助,因此特地开一个 section 致上最深的谢意与敬意。

KKStream

简单介绍,我们是 KKBOX Group 的一间子公司,是 Multimedia Streaming Service 的 total solution provider。

公司目前有稳定的商业模式,也一直在探索不同的方式。跟大部份公司一样,一样会有各式各样的问题,但较为可贵的是我们愿意改变而变得更好。

对公司的感谢不是三言两语可以说完,想以简单的两行说明

而 KKStream、KKTV 和 KKBOX 的几位强者同事 &主管们,让我一直有学习的目标,打从心里感谢我的同事和主管们。

另外,我们也还一直持续的在寻找优秀的人,有兴趣的大大们可以参考以下网址 https://goo.gl/1QjHGE

或者想要找我聊,也都非常欢迎

中央研究院 陈昇玮博士

昇玮老师是我在毕业后进入中研院的实验室老师

是非常非常强的实务派老师,好几次我抱着电脑看着他把我的 code 从数十行改到不到十行

没有昇玮老师的指导 &鞭策,我绝对不可能有机会完成出国工作的梦想

如果有计画到中研院资讯所,也非常推荐昇玮老师的实验室 :D

Others

另外也很感谢在过程中帮忙内推的同学与同事们,没有你们我应该连面试的机会都没有 QQ

最后感谢在过程中一直为我打气在我身边帮我加油的人。