paint-brush
我如何搬到美国并在 Roku 找到工作经过@yantsishko
20,737 讀數
20,737 讀數

我如何搬到美国并在 Roku 找到工作

经过 Yan Tsishko13m2022/09/29
Read on Terminal Reader
Read this story w/o Javascript

太長; 讀書

2022年2月,我终于以O1工作签证移居美国。在此之前,经过 2.5 年的加强案件工作,等待批准。

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - 我如何搬到美国并在 Roku 找到工作
Yan Tsishko HackerNoon profile picture
0-item


2022年2月,我终于以O1工作签证移居美国。在此之前,为加强案件而进行了 2.5 年的工作,等待批准。


在此日期前 1.5 年,我开始准备前端职位的面试。目前在 Roku 担任高级前端工程师。


这篇文章和电报频道的创建是由于缺乏关于美国前端工程师面试的详细信息。

我以前做过的

搬迁前,我在白俄罗斯的外包公司工作了7年。这使我能够使用不同的技术、方法并从事各种项目。在搬迁之前,我已经担任过 26 名 JavaScript 工程师的工程经理职位(这加强了我的简历,特别是对于员工职位)。在过去的一年里,我在部门进行了大约 50 次技术面试。


但是在美国,我意识到我的经历并不完全相关,我需要从高级职位开始,才能弄清楚这里的流程是如何建立的,文化,以及如何进行面试,这与这里完全不同.


我在等待签证时提前 1.5 年开始准备技术面试。我工作周的每个早晨都花在准备上。随着时间的推移,它成为一种习惯,并没有引起任何不适。过了一段时间,我被提升为工程经理的职位,因为我的成长速度很快。

准备

1. Leetcode

我在 leetcode 上解决了 245 个问题。我主要关注数组、矩阵、树、链表、字符串、哈希表、排序和两个指针。在我的个人资料中,您可以看到我解决的主题。


  • 是我解决的所有任务。
  • 为了熟悉和刷新 JS 中的数据结构和算法,我使用了javascript-algorithms资源。
  • 要快速识别 Leetcode 问题模式,请阅读这篇文章 — 14 Leetcode 问题模式。它有助于识别问题。
  • 为了确定代码的复杂性,有一个关于 Big O 表示法的备忘单
  • 对于面试是什么样子的例子,我使用了面试资源。


2.大前端( https://bigfrontend.dev/

我解决了 50% 的 BFE 问题(简单和中等)。我在我的电报频道上发布了所有这些解决方案。该资源对于 Meta 的面试最有用,但其他公司或多或少可能会提出类似的问题。


3.系统设计

  • 为了准备系统设计,我使用了Evgenii Ray 的视频。他涵盖了我在实际采访中遇到的系统设计的大部分方面。
  • 对系统设计和实际工作(Web 性能)非常有用的资源 — 3perf
  • 所有关于可访问性


4.行为面试

在 glassdoor 上,您可以找到一些公司提出的问题和任务的示例。

最后,我在美国……

抵达后,我有2周的时差反应,面试没有通过,无法正常入睡。


但在适应之后,我开始积极与招聘人员建立电话联系,在 LinkedIn 上写作。每天有 20 到 30 条信息有机会,但其中大多数是无名公司或初创公司。


回帖前,我分析了公司,投资,是上市公司还是私人公司,他们做什么,他们使用什么技术(我主要关注React.js,JS / TS堆栈,以及前端位置)。


这是原始过滤器。


白天我和招聘人员打了 3-4 通电话,然后是 2 次技术面试。


我总共参加了大约 20 次模拟,以了解如何在面试中表现以及我的弱点是什么,但这与真实的面试相比是不一样的。在真正的面试中,我已经有了明显的成长,已经在 1-1.5 个月之后,我开始更有效地解决问题,发现需求,推销自己并回答行为问题,因为每次面试后我都会纠正错误,纠正故事.


我从小型初创公司和公司开始,我已经准备好被拒绝(这很重要!)。

两个月来,我每天都与招聘人员通电话,进行技术筛选,进行现场面试。现在一切都在线非常方便。经过近一个月的技术筛选,我什至说我很喜欢面试过程,有很多有趣的问题和人,但是现场时间到了……经过第一个5小时的面试,我的看法完全不同了,太难了!


一开始,我被拒绝了,这当然令人沮丧。但是一旦我收到第一个报价,我的动力立即增长......直到下一次拒绝。


我已经准备好被拒绝了,但听到它仍然令人不快,尤其是当你花了 5 到 6 个小时,他们给你发送了一个标准回复,我们决定在没有任何反馈的情况下与另一位候选人一起移动。这促使我反思和分析出了什么问题。我做笔记,并试图找到关于如何解决问题或需要澄清什么以及如何设计一些东西的答案。这有助于在未来的采访中将不同的解决方案组合成一个并产生高质量的解决方案。


此外,与招聘人员的交流帮助我提高了英语,一开始我可能连他们对我说的一半都听不懂,但后来我习惯了,就容易多了。


最后,我的面试非常好,但我不断被拒绝。最糟糕的是,你不明白出了什么问题。


面试流程

我的面试数据:

技术屏幕 (26) : Meta, Amazon, Apple, Google, Microsoft, Lyft, Uber, LinkedIn, Roku, Salesforce, PayPal, DoorDash, Robinhood, Roblox, Intuit, Zoom, Grammarly, Imply, Disco, Square, SigmaComputing, LiveRamp, Zoox、帕洛阿尔托网络、雪花、极光


现场面试 (15) : Meta, Amazon, Google, Microsoft, LinkedIn, Roku, Salesforce, PayPal, DoorDash, Zoom, Grammarly, SigmaComputing, LiveRamp, Zoox, Aurora


提供:谷歌、Roku、微软、贝宝、SigmaComputing、LiveRamp


申请前端职位时,可能只会问你前端的问题,但至少会问1个easy-mid级别的算法问题,主要是数据结构及其处理(不多在 JS 中:))。但有些人喜欢用老式的方式询问算法。


我上面提到的所有准备材料都涵盖了面试问题。


这个过程非常标准:

  1. 与招聘人员通话
  2. 技术筛选
  3. 现场(虚拟)面试:
  • 算法
  • 编写小部件或 JS 函数的任务
  • 系统设计,专注于前端
  • 行为面试

4. 谈判


1. 与招聘人员通话

在与招聘人员的电话中,您讨论一般性问题,了解有关您正在面试的公司和团队的更多信息。他们询问您的工作许可。在谈话中,他们询问您的经验并检查您的英语。他们会找出你在求职的哪个阶段,并可以以此为基础,例如,加快你的面试过程(在 Aurora,我说我完成了所有面试,如果我们能快速完成所有阶段,我同意。因此,所有阶段都在 4 天内完成,而现场只用了 3 轮)。


电话通常发生在您发送简历之前。只有当一切顺利并且匹配时,您才会被要求发送您的简历。他们可能会问你对薪水的期望,但我如实回答说,我刚来的时候不知道自己在市场上的价值是多少。这足以让他们忽略这个问题。您可以在同一个电话中询问您需要的所有信息,包括团队的技术堆栈。如果您有对您很重要的问题,现在是提问的时候了。对我来说,这是绿卡和技术栈的条款。


招聘人员尊重您的时间,因此您可以根据日历协调每个电话,从招聘人员的电话中进行选择,或者招聘人员可以从您的日历中进行选择。


在任何情况下都不要指定您的薪水期望,如果他们非常苛刻(只发生过一次),请指定一个广泛的范围。 Turo 的招聘人员反复问我期望什么,当我给他这个范围时,他说我们的薪酬少了 2 倍,我们无法匹配。


2、技术筛选

所以你已经通过了第一阶段,你被分配了一个技术筛选。通常是 45 分钟。在它上面,你会再次介绍一下你自己,你会被问到关于你的经验的问题,并会被要求解决一些小问题(90% 的情况下,它要么在 JS 和框架中制作一个小部件,要么是一个简单的算法的问题,或者更确切地说是 JS 中的数据结构)。偶尔,Hackerrank 在 HTML、CSS 和 JS 2-3 上会出现问题。这些都很容易解决。有时您可以使用您选择的任何编辑器。但大多数时候我会发送一个链接到我的在线编辑器(即使代码突出显示)。


最重要的是不要保持沉默,要大声思考,以便面试官跟随你的想法。


与代码执行有关,它是 50/50,有时您需要在需要时运行代码,想运行多少就运行多少,有时我什至不需要运行代码(甚至没有这种可能性)。


有一次,我被要求在技术筛选中设计一个电梯系统(没有代码),结果并不好:)


3. 现场(虚拟)面试

面试中最困难的阶段,因为它持续 3-6 小时。许多公司允许您将其拆分为 2 天,这取决于您。


它包括编码、系统设计和行为面试。


您可以向招聘人员询问每一轮现场的情况,以了解他们的期望。

编码轮次类似于技术筛选:找出需求、讨论解决方案、编码和测试。


系统设计

一直专注于前端问题,不需要讲高负载的系统、数据库等。你只需要描述浏览器中的一些功能,优化、定制和扩展的方法,描述如何将数据传输到服务器,如何存储它,存储它的位置,以及为什么。有时您需要设计多个具有请求和响应结构的端点。不要忘记可访问性,这非常重要!


行为面试

在这里,您可以期待有关您的经验、项目和团队合作的问题。基本上,这些问题是“当你……告诉我一个情况”


总的来说,问题涉及最具挑战性的项目、团队中的冲突、在截止日期临近但我们没有时间时我们做了什么,以及我们最大的失败是什么。


所有的故事都应该按照 STAR(情况-任务-行动-结果)方法论来讲述。故事应该不会很长。如果您没有解释某事或面试官误解了您,您将被要求澄清问题。


在大多数情况下,招聘经理会进行面试。最后,这是一个很好的机会,您可以提出有关团队和产品的所有问题。


谈判

没有任何压力或重要的阶段。我花了将近一个月的时间。对于一些公司,甚至有几轮,平均而言,我提出了 70-100k 的报价。询问有关您的反馈,以更好地了解您的表现,并将其用作谈判工具。但没有什么比还价更好的了。但重要的是不要走得太远,请事先查看levels.fyi网站上的补偿以了解范围。

关于公司的一些结论

在所有公司中,招聘人员都做得非常好,并在每一步都为您提供支持,告诉您在每一轮中会发生什么,如何准备,并告诉您一般的面试过程是什么样的。


亚马逊:我经历过最糟糕的面试。在所有回合中,我都无法理解面试官对我的要求,我大部分时间都澄清了要求并解释了我的解决方案,因为由于某种原因他们无法理解。当他们在编码过程中开始询问有关 JavaScript 的问题时,结果发现他们并不了解它,不得不花更多时间解释我为什么使用它以及它是如何工作的。结果,还有 5-7 分钟的时间来编码,但这已经足够完成了。在上一轮中,我遇到了树木的难题,我没有完全解决。


微软:有些面试官又不懂 JavaScript,只问了算法问题,问了一些关于 JavaScript 是如何工作的问题。这更像是一个全栈职位的面试。


Zoox :只问了数学问题和算法。


Aurora :同样,只问了算法,虽然这个职位是纯前端的。然而,我朋友的采访只关注前端问题。


Meta :我没想到这家公司会如此关注。我和一个招聘人员打了很多电话,有的持续了一个小时,他把面试过程的所有细节都说了一遍,提供了准备材料,询问了准备工作的进展情况并给出了建议,包括如何在面试中表现,问什么,最好不要问。问题集中在前端。现场结束后,招聘冻结立即开始......


LinkedIn :他们有一个 Ember.js 框架,所以问题只涉及纯 JavaScript 和前端。


苹果:在技术筛选后失去了我的反馈。仍在搜索中。


谷歌:面试过程以前端为重点。在获得 Google Hairing Committee 的批准后,您的下一步就是团队匹配。我在 L5 和 L4 级别之间有不同的反馈。结果,委员会给了我L4,没有额外的面试阶段。只有在成功的团队比赛之后,他们才会向您发送带有数字的报价,但是这个过程需要多长时间取决于许多因素。


我每周有 2 个团队电话,尽管我可以每天都做。该过程耗时2周。


我比较团队的标准:

  • 团队规模。前端、后端、基础设施工程师。

  • 技术堆栈(所有 Angular)。

  • 升级到 L5(时间和机会)。

  • 产品。

  • 责任。

  • 前端或全栈位置。甚至只有一个后端。

  • 发展过程。

  • 谁是产品的用户,有多少。也许这是一个内部项目,或者是一个面向大量用户的大型项目。

  • 评估我与经理或团队负责人沟通的舒适程度。


结果,我与负责这个产品性能的谷歌分析团队进行了匹配。在这个团队中,我看到了许多成长机会和晋升指标。


我如何接受报价

我比较了报价,并根据以下标准决定接受哪一个。

  1. 产品。您对产品感兴趣是非常重要的。我有多年的流媒体平台开发经验,了解用户和开发者的需求。在这些产品中,我可以学到很多东西,并看到自己面临的许多挑战。 Roku 给了我这个机会。


  2. 技术堆栈和工具。我不喜欢 Angular,我更喜欢 React.js。这是我选择 Roku 的最重要原因之一。


  3. 工作与生活的平衡。这是一件非常重要的事情。我不想燃烧殆尽。在面试过程中,你可以提出相关问题,并仔细聆听答案。


  4. 成长的机会。在技​​术方面和公司内部增长到领先地位(员工)


  5. 职位级别。在担任工程经理职位之后,我还没有准备好担任中间职位(是的,也有那些)。


  6. 总赔偿。基地和股票。 Roku 为高级职位支付 85% 的现金,这对我来说更有利可图,作为这个国家的初学者,因为在这个阶段现在需要钱。


  7. 绿卡流程。有些公司从第一个工作日开始办理绿卡,有些公司在 3、6、12 个月后开始办理。我根据 1 天和 3 个月过滤了公司。但事实证明,这些条款也可以协商,我可以协商从 3 个月到 1 个工作日。一个重要的细微差别,Meta 不发放绿卡,我在每次电话中询问他们,在面试的每个阶段,但我从来没有收到过答案,根本没有人。但是根据互联网上的信息,他们的一切都不好。


  8. 团队规模和职责。我不喜欢在你是一名前端工程师,甚至是两名前端工程师的团队中工作。我想成长和学习。团队中的工程师水平对我来说也很重要。


  9. 远程工作或办公室工作。我更喜欢办公室工作。在家工作对我来说不舒服。一些公司现在提供在办公室工作 3 天,远程工作 2 天,还有一些公司提供完全远程工作。


  10. 办公地点。我住在圣何塞,一些公司在旧金山设有办事处。开车到这里至少需要 1.5 小时。你想每天花3个小时在这上面吗?

提示

  • 每周不要安排超过 3 个(但最好是 2 个)现场。上周我一周内有 4 次现场,真是地狱!但我收到了 2 个优惠 :)

  • 在面试中,你的技能会呈指数级增长,所以不要立即通过你梦想中的公司的面试。

  • 面试后你可以和某人交谈,这有助于放松。

  • 每次面试后都要对错误进行处理,以了解可能出了什么问题,寻找面试中问题和任务的答案并尝试找出答案。

  • 准备 1-1.5 分钟的自我介绍文本,你会在面试的每个阶段讲出来。

  • 对于行为面试,尽可能多地准备和练习 STAR 故事,我有大约 20 个几乎涵盖了所有问题。花了大约一个月的时间来准备它们。

  • 购买 Calendly(或类似服务)的付费订阅,以便更轻松地管理您的采访。在电子邮件中发送日期意味着他们可以在一周内回复,并要求 5 个日期(分别),因此这 5 天对您来说是封锁的,您无法安排其他采访。


如果您有任何我没有涉及的问题或主题,请在此处的评论或我的电报频道中提问!