分享一些个人为美国公司远程工作的经验分享 -- 面试部分

薄荷152阅读12评论1 个月前

闲的没事儿接上期讲一讲Toptal或者其他工作的面试流程吧。上个帖子地址:https://eleduck.com/posts/ez1fgq

在北美,完全支持远程工作的公司很少。一般我们耳熟能详的,比如Github,GitLab,Stackoverflow等等。这些公司一般都只招聘Senior甚至更有资历的程序员。所以一般的国内开发很难加入到这样的团队中。另外,北美远程工作中有很重要的一点就是,他们对时区还是有很重要的要求的。并不是说,你是远程工作者,你就能在国内某个十八线小城市轻松拿着硅谷的工资赚汇率差了。一般就算是远程工作者,公司也会要求至少4到8小时的时间重合。也就是说,你应该是身处在北美或者南美时区的。当然,在哪个城市无所谓。当然了,考虑到某些特别的网络情况,所以总体而言在国内给一个合法正规的北美公司做远程这样的机会是比较少见的。更多的是国内背景的公司创始人可能会考虑招聘国内远程开发来降低用人成本。这点在电鸭这个平台应该也有很好的体现。而不管是否是远程工作者,对于一般的公司来讲,面试流程和正常坐班工作者不会有很大区别。所以想找到一个合适的远程工作机会,确实不容易。

这也是我选择Toptal的理由,因为Toptal本身严格的面试流程加上社区化的管理,使得你在Toptal这个平台上的面试流程会被大大简化。基本上Toptal上的公司不会再过多过问技术问题,只是聊一下公司文化是否符合,就可以轻松决定是否给你一个远程的工作合约。注意,Toptal严禁开发和公司私自签订任何雇佣合同,不管是合同工还是全职工,而Toptal本身只提供合同工机会,所以所有上面的工作都是以合同工的形式出现的。也就是说,你所有的工作都是以每小时计时,而不是年薪,也不包括任何福利,股票,等等。但是Toptal本身好的一点是,它保证你的收入,因为你的工资是Toptal发给你的,所以你不用担心企业拖欠你的工作报酬。企业拖欠的话,也是Toptal受到损失,而不是你。这是我非常看重的一点。

然后就讲一讲面试流程好了。上一个帖子说到了,第一个面试是英语。针对开发者,接下来还有三轮面试。

首先是一个在Codility上的在线解题测试。一共三道题,每道题100分。Codility会做准确率测试和优化测试两种测试,一般每种测试各占50分。当然有的题目不适合做优化(速度)测试的话,那么准确率测试会占到100分。三道题一共300分,拿到210分以上就可以过关。题目都是英文描述,主流编程语言都支持。这个没什么好说的,就是leetcode。当然了,边写题边Google也没人管你,如果能找到原题,那么恭喜你白拿100分。答题结束以后,Toptal会给你一封邮件,让你选择一个时间进行接下来的面试。原则上说如果你不到210分是不能下一轮的,但是我有个朋友只得了180分也让他进行下一轮了,不是很懂发生了什么。

下一轮,是和一个Toptal平台上的Senior开发做视频面试,面试者都是随机分配的。内容就是在两个十五分钟之内快速写完两个方程。这里要强调快速是因为他只看准确率,而不看优化。每个方程给最多15分钟的时间,语言任选,在线上REPL或者本地IDE或者终端写都无所谓,你需要分享你的屏幕给面试者,他会看着你写。15分钟很严格,不能超时。不过题目不会是很难得题,一般就是Leetcode里面简单难度的题。写完以后对方会当场给你几个简单的测试,全过就是过了。我当时全过的所以我不太清楚如果只过部分会是什么结果,这个还真的看面试者心情。当然了,如果时间内没写出来的话,肯定是挂的。另外,有可能在面试开始前,如果你上一轮在线测试不到210分的话,面试者可能会跟你探讨一下上面的题目,看看你的思路等等。这是我朋友遇到的情况,不过因为朋友没有在15分钟之内写出来题目,所以挂在这轮了。当然就算你过了210分他还是可能会问你思路的。

说句题外话,Toptal上大多数都是欧洲人,所以斯拉夫口音非常重,印度人来面试的不多,所以去Toptal上面试要适应一下俄罗斯口味的英语。

如果上一轮快速写代码的测试过了的话,最后一轮是写一个APP。这轮说难不难说简单不简单。这个APP一般要求有用户登陆和注册页面,要求有不同的用户组,不同的权限。再加上两到三种不同的数据,做一些列表,实现每种列表的CRUD功能。网页或者手机APP都可以。比如说,用户 -> 发帖 -> 评论 这样的列表关系。用户只能更新或者删除自己帖子,也能删除自己帖子下的评论但是不能更新,也能删除或者更新自己在别的用户下的评论。超级管理员可以增删查改用户,增删查改评论,增删查改发帖,同时也能给予或者移除一个用户的权限等等。有时候会有三种权限,比如普通用户,管理员用户,Root管理员用户等等。反正会是一个很符合实际逻辑的小应用。会有最多两周的时间来完成。如果是手机应用的话,可以用Firebase。网页应用的话,从前端到后端要自己完成,不用放在服务器上。UI自己设计,不作要求,但是不能一点儿CSS没有,基本上简单的Materials,Bootstrap,jQuery UI或者AntD就可以满足需求了。如果什么地方要求描述不清的话一般可以自由发挥,只要符合实际即可。

完成了以后,需要再约另一个面试者,也是Toptal上的Senior开发。他会要求你本地启动APP,然后完成演示功能。再让你打开代码,随机问你一些实现方式,如果你有任何非主流的实现方式或者安全漏洞。他会和你探讨,或者询问。这一轮基本上是面试你的实际写代码能力。如果有一些简单的需求实现没有完成的话无伤大雅。比如我当时就忘了实现一个列表对日期的筛选,但这些都是小事情。他主要考察,一方面你实现某些功能的方式是否足够安全,实现方式是否主流。一方面你的代码风格,架构,是否使用了合理的框架,数据库实现是否合理。一方面你是否能按需求独立完成一个应用。这些主要体现在,用户登陆认证结构设计,请求的权限管理结构设计,数据库的结构设计等等。如果你用ORM的话,是否会被SQL注入等。还有安全方面的,是否会被XSS攻击,是否使用了HTTPS,如何应对DDoS攻击,如何应对爬虫等等。考察的算是比较全面的了。

最后如果你全都通过的话,那么你就正式加入了Toptal,下次我会更新加入了Toptal以后开始工作的一些经验。

分享主题:
经历
加载中…
精选评论
1 个月前150****5838

前端也有算法相关测试吗?

1 个月前薄荷

是的,开发的面试流程全都是一样的。Toptal一般不分前端后端,招进来一定是一个全栈。当然如果您是做移动开发的话,你可以用Firebase,那可能会减少一些后端工作。另外一种是所谓的UX/UI,那个偏设计,面试流程是不同的。

4 天前150****5838

soga,谢谢这么详细的分享!

1 个月前波派

感谢分享,干货满满。

关于时区的考虑,我有个疑问想请教。根据你所说的假如雇主期望至少有4个小时的重合,那是不是如果想找英文工作环境的话,可能是就我在图上所画的东欧洲和马来西亚,澳新地区可能比较适合了呢?

1 个月前薄荷

可以这么理解。但是考虑到实际情况,可能南亚会比较合适。我个人觉得澳洲或者欧洲的工作机会比较少。而且欧洲的话,他们从语言文化和时间上也会更倾向北美的工作者。

感谢精彩分享,倾尽最后一格电量为你充电,记得继续啊😀

1 个月前薄荷

谢谢您

1 个月前nolotus

感谢分享

1 个月前markstien

宝贵经验

25 天前Hans英毅

非常棒!楼主是否有想过为国内自由职业者提供出海培训,如面试,英语培训,职业生涯指导这些?我觉得楼主特别合适!

24 天前薄荷

谢谢,暂时还没有。因为我本人也不是经验非常丰富,而且自己也在快速学习进步中,所以日常安排非常繁忙。我会尽量抽空把我自己认为有价值的内容分享出来,当然也是免费的。如果大家觉得有价值自然是最好。如果没有那么有价值,那就是当作个人的一些分享好了。

6 天前Michael

谢谢,楼主, 非常有价值的分享。 期待您后续的分享~

推荐话题
    加载中…
加入组织

微信扫码,每周推送工作机会。