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

本贴最后更新于 1455 天前,其中的信息可能已经时移世改

原贴地址: https://eleduck.com/posts/POGfvp

闲的没事儿接上期讲一讲 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 以后开始工作的一些经验。

  • 电鸭
    10 引用 • 27 回帖
  • 远程工作
    22 引用 • 107 回帖 • 3 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    324 引用 • 1395 回帖
  • 英语
    35 引用 • 153 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • tracverson

    请问这样在国内找到海外的远程工作难不难(在国内办公,拿美元工资),曾经留学过伦敦,普通交流没有问题,目前在做后端,前端也会一点

    ,另外想问的是,这样的工作机会一般在哪可以找到?国外的远程工作平台?

    听说找这样的工作,工资是国内同等技术水平的好几倍,不知道是否是真的呢?我工作经验目前有 7 年

    恳切期盼楼主的答复

推荐标签 标签

  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    4 引用 • 55 回帖 • 10 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    170 引用 • 414 回帖 • 429 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    129 引用 • 793 回帖 • 1 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 5 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 352 关注
  • 笔记

    好记性不如烂笔头。

    304 引用 • 777 回帖
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    330 引用 • 614 回帖
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 383 回帖 • 5 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 635 关注
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    7 引用 • 30 回帖 • 452 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    261 引用 • 662 回帖
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 89 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    313 引用 • 1667 回帖 • 1 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 286 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    19 引用 • 23 回帖 • 685 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    523 引用 • 4581 回帖 • 690 关注
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    370 引用 • 1215 回帖 • 582 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    15 引用 • 7 回帖 • 10 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    21 引用 • 140 回帖 • 28 关注
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    163 引用 • 1450 回帖
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖 • 1 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    198 引用 • 120 回帖
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 153 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    106 引用 • 152 回帖
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 290 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 370 关注
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    10 引用 • 54 回帖 • 126 关注