2022年2月、ついにO1就労ビザで渡米。これに先立って、承認を待って、ケースを強化するための2.5年の作業が行われました。 この日の 1.5 年前に、私はフロント エンド職の面接の準備を始めました。現在、Roku でシニア フロントエンド エンジニアとして働いています。 この投稿と の作成は、米国のフロントエンド エンジニアのインタビューに関する詳細な情報が不足していることが動機でした。 テレグラム チャネル 私が前にしたこと 移転前は、ベラルーシのアウトソーシング会社で7年間働いていました。これにより、さまざまなテクノロジー、アプローチを使用し、さまざまなプロジェクトに取り組むことができました。移転する前に、私はすでに 26 人の JavaScript エンジニアと共にエンジニアリング マネージャーとしての地位を占めていました (これにより、特にスタッフ ポジションの履歴書が強化されました)。この 1 年間で、私はこの部門で約 50 件の技術面接を実施しました。 しかし、アメリカでは、自分の経験がまったく役に立たないことに気付きました。ここではプロセスがどのように構築されているか、文化、インタビューの実施方法を理解するために、上級職から始める必要があります。これらはここではまったく異なります。 . 技術面接の準備は、ビザを待っている 1 年半前から始めました。平日の毎朝は準備に費やされました。それは時間の経過とともに習慣になり、不快感を引き起こしませんでした。しばらくすると、私は急速に成長していたため、エンジニアリング マネージャーの地位に昇進しました。 準備 1.リートコード leetcode で 245 の問題を解決しました。主に、配列、行列、ツリー、連結リスト、文字列、ハッシュ テーブル、並べ替え、および 2 つのポインターに焦点を当てました。私の では、私が解決したトピックを見ることができます。 プロフィール に私が解決したすべてのタスクがあります。 ここ JS のデータ構造とアルゴリズムに慣れてリフレッシュするために、 リソースを使用しました。 javascript-algorithms Leetcode の問題パターンをすばやく特定するには、この記事 — をお読みください。問題の特定に役立ちます。 14 Leetcode problems patterns コードの複雑さを判断するために、Big O 記法に関する があります。 チート シート インタビューがどのようなものかの例として、 リソースを使用しました。 インタビュー 2. ビッグフロントエンド ( ) https://bigfrontend.dev/ BFE の問題の 50% を解決しました (簡単および中程度)。これらすべてのソリューションを で公開しました。このリソースは Meta でのインタビューに最も役立ちますが、他の企業も多かれ少なかれ同様の質問をする可能性があります。 電報チャンネル 3. システム設計 システム設計の準備として、 ビデオを使用しました。彼は、私が実際のインタビューで遭遇したシステム設計のほとんどの側面をカバーしていました。 Evgenii Ray の システム設計と実際の作業 (Web パフォーマンス) に非常に役立つリソース — 3perf について アクセシビリティ 4.行動面談 準備 回答の例。 する質問のリストと 模擬面接では、 電報チャンネルと を使用しました。 FAANG Pramp 私はまた、この と を使用して、そこからすべてを解決し、最後まで読みました。 電報チャネル エフゲニー・レイの概念 Glassdoor では、企業が尋ねる質問とタスクの例をいくつか見つけることができます。 そしてついに、私はアメリカにいます… 到着後、2週間の時差ぼけがあり、面接に合格する方法がなく、普通に眠ることができませんでした. しかし、順応した後、私は積極的に採用担当者との電話を設定し始め、LinkedIn に書き込みました。 1 日あたり 20 ~ 30 件の機会を伴うメッセージがありましたが、そのほとんどは無名の企業またはスタートアップです。 メッセージに返信する前に、会社、投資、公開会社か非公開会社か、彼らが何をしていて、どのような技術を使用しているかを分析しました (基本的に、React.js、JS / TS スタック、フロント エンドに焦点を当てました)。位置)。 これが元のフィルターです。 日中、採用担当者と 3 ~ 4 回の電話があり、その後 2 回の技術面接がありました。 合計で約 20 回の模擬試験に参加して、面接での振る舞い方や自分の弱点を理解しましたが、これは実際の面接とは比較になりません。実際の面接では、私はすでに目立った成長を遂げており、1〜1.5か月後、問題をより効率的に解決し、要件を見つけ、自分自身を売り込み、行動に関する質問に答え始めました。各面接の後、間違いに取り組み、ストーリーを修正したからです。 . 私は小さなスタートアップや企業から始めたので、拒否されることは覚悟していました (これは重要です!)。 2ヶ月間毎日、採用担当者との電話、技術審査、現場面接を行いました。今ではすべてがオンラインになっていることは非常に便利です。ほぼ 1 か月の技術審査の後、面接プロセスが好きだとさえ言いました。興味深い問題や人がたくさんいるのですが、オンサイトの時間が来ました…最初の 5 時間の面接の後、私の意見はまったく別の方向に変わりました。 、それはすっごく難しいです! 最初は断られて、もちろんイライラしました。しかし、最初のオファーを受け取るとすぐに、私のモチベーションはすぐに高まります.. 次の拒否まで. 私は拒否する準備ができていましたが、特に 5 ~ 6 時間かけて、フィードバックなしで別の候補者と一緒に移動することを決定したという標準的な返信を受け取った場合は特に、聞くのは不快です.これにより、何が悪かったのかを振り返り、分析するようになりました。メモを取り、問題を解決する方法や明確にする必要があること、何かを設計する方法についての答えを見つけようとしました。これは、将来のインタビューで、さまざまなソリューションを 1 つに結合し、高品質のソリューションを作成するのに役立ちました。 また、採用担当者とのコミュニケーションのおかげで英語が上達し、最初は半分も理解できなかったかもしれませんが、次第に慣れてきてとても楽になりました。 最終的に、私は本当に良い面接を受けましたが、いくつかの面接で拒否され続けました。そして最悪なのは、何がうまくいかなかったのか理解できないことです。 面接の流れ 私のインタビュー統計: : Meta、Amazon、Apple、Google、Microsoft、Lyft、Uber、LinkedIn、Roku、Salesforce、PayPal、DoorDash、Robinhood、Roblox、Intuit、Zoom、Grammarly、Imply、Disco、Square、SigmaComputing、LiveRamp、 Zoox、Palo Alto Networks、Snowflake、Aurora Tech Screens (26) : Meta、Amazon、Google、Microsoft、LinkedIn、Roku、Salesforce、PayPal、DoorDash、Zoom、Grammarly、SigmaComputing、LiveRamp、Zoox、Aurora オンサイト インタビュー (15) : Google、Roku、Microsoft、PayPal、SigmaComputing、LiveRamp オファー フロントエンドのポジションに応募する場合、おそらくフロントエンドに関する質問のみが求められますが、主にデータ構造とその処理について、少なくとも 1 つの簡単な中間レベルのアルゴリズムの問題が尋ねられます (多くはありません)。 JSで:))。しかし、昔ながらの方法でアルゴリズムに質問するのが好きな人もいます。 上記の準備資料はすべて、面接の質問をカバーしています。 プロセスは非常に標準的です。 採用担当者に電話 技術審査 オンサイト (仮想) インタビュー: アルゴリズム ウィジェットまたは JS 関数をコーディングするためのタスク フロントエンドを中心としたシステム設計 行動面接 4. 交渉 1.採用担当者に電話する 採用担当者との電話では、一般的な質問について話し合い、面接対象の会社とチームについて詳しく学びます。彼らはあなたの労働許可証について尋ねます。会話では、彼らはあなたの経験について尋ね、あなたの英語をチェックします。彼らは、あなたが就職活動のどの段階にいるかを調べ、これに基づいて、たとえば、面接プロセスをスピードアップすることができます (Aurora で、私はすべての面接を完了したと言いました。その結果、すべてのステージが 4 日間で完了し、オンサイトはわずか 3 ラウンドで完了しました)。 履歴書を送る前に電話がかかってくることがよくあります。すべてがうまくいき、一致した場合にのみ、履歴書を送信するよう求められます。彼らはあなたの給料の期待について尋ねるかもしれませんが、私は正直に答えました。彼らが質問を無視するには、これで十分でした。チームの技術スタックなど、必要なすべての情報を同じ通話で尋ねることができます。あなたにとって重要な質問がある場合は、今がその質問をするときです。私にとって、それはグリーンカードと技術スタックの条件でした。 採用担当者はあなたの時間を尊重するので、採用担当者のカレンダーから選択するか、採用担当者があなたのカレンダーから選択するか、カレンダーに従って各通話を調整します。 いずれにせよ、給与の期待値を指定しないでください。要求が非常に厳しい場合 (一度しか発生していない場合) は、広い範囲を指定してください。 Turo の採用担当者は、私が何を期待しているかを繰り返し尋ねてきました。 2. 技術審査 あなたは一次審査を通過し、技術審査を受けました。通常は45分です。繰り返しますが、あなたは自分自身について少し話し、あなたの経験について質問され、いくつかの小さな問題を解決するために与えられます (90% で、JS とフレームワークで小さなウィジェットを作成するか、簡単なアルゴリズムの問題、またはむしろ JS のデータ構造)。ときどき、Hackerrank で HTML、CSS、および JS に関する問題が発生しました (2–3)。これらは解決するのがかなり簡単です。任意のエディターを使用できる場合もあります。しかし、ほとんどの場合、オンライン エディターへのリンクを送信します (コードを強調表示しても)。 最も重要なことは、黙っていることではなく、インタビュアーがあなたの考えに従うように大声で考えることです。 コードの実行に関しては、50/50 です。必要なときに必要なだけコードを実行する必要がある場合もあれば、コードを実行する必要がない場合もあります (そのような可能性すらありません)。 技術審査でエレベータシステムの設計(コードなし)を依頼されたことがありましたが、うまくいきませんでした:) 3. オンサイト(仮想)面接 面接は 3 ~ 6 時間かかるため、面接の中で最も難しい段階です。多くの会社では、2 日に分割することができますが、これはあなた次第です。 コーディング、システム設計、行動面接で構成されています。 採用担当者にオンサイトの各ラウンドについて尋ねて、彼らに何を期待するかを理解することができます. は、技術的なスクリーニングに似ています。要件を見つけ、ソリューションについて話し合い、コーディングし、テストします。 コーディング ラウンド システムデザイン 常にフロントエンドの問題に焦点を当てており、負荷の高いシステムやデータベースなどについて話す必要はありません。ブラウザのいくつかの機能、最適化、カスタマイズ、拡張の方法、サーバーへのデータの転送方法、方法について説明するだけで済みます。保管方法、保管場所、保管理由。リクエストとレスポンスの構造を持つ複数のエンドポイントを設計する必要がある場合があります。アクセシビリティを忘れないでください。これは非常に重要です。 行動面接 ここでは、あなたの経験、プロジェクト、チームワークに関する質問を期待できます。基本的に、これらの質問は「あなたが…のときの状況を教えてください」です。 一般的に、最も困難なプロジェクト、チーム内の対立、締め切りが迫っていて時間がないときに何をしたか、最大の失敗は何かについて質問されました。 すべてのストーリーは、STAR (状況 - タスク - アクション - 結果) の方法論に従って語られる必要があります。話はあまり長くないはずです。あなたが何かを説明しなかった場合、またはインタビュアーがあなたを誤解した場合は、明確にする質問が行われます. ほとんどの場合、採用担当者が面接を行います。最後に、これはチームと製品に関するすべての質問をする絶好の機会です。 交渉 それほどストレスの多い、または重要な段階はありません。ほぼ1か月かかりました。一部の企業では、平均して数回のラウンドが行われ、私は 70 ~ 100,000 ドルでオファーを出しました。あなたがどれほど優れていたかをよりよく理解し、それを交渉ツールとして使用するために、あなたについてのフィードバックを求めてください。しかし、カウンターオファーほど効果的なものはありません。ただし、範囲を理解するために、事前にlevels.fyi Webサイトで補正を確認してください。 企業に関するいくつかの結論 すべての企業で、採用担当者は非常に優れた仕事をしており、あらゆる段階であなたをサポートし、各ラウンドで何を期待するか、どのように準備するかを教え、面接プロセスが一般的にどのように見えるかを教えてくれます. : 今までで最悪の面接でした。面接官が私に何を望んでいるのかを理解するのに苦労しました。ほとんどの場合、要件を明確にし、解決策を説明しました。なぜなら、彼らは何らかの理由でそれを理解できなかったからです。そして、彼らがコーディング プロセス中に JavaScript について質問し始めたとき、彼らはそれを知らず、なぜ私が JavaScript を使用するのか、どのように機能するのかを説明するのにより多くの時間を費やさなければならなかったことが判明しました。その結果、コーディングに 5 ~ 7 分かかりましたが、これで十分です。最後のラウンドで、私は完全には解決できなかった木に関する難しい問題を抱えていました。 Amazon : インタビュアーの何人かは JavaScript を知らず、アルゴリズムの問題だけを尋ね、JavaScript がどのように機能するかについて質問しました。それは、フルスタックポジションの面接のようなものでした. Microsoft : 数学の問題とアルゴリズムだけが出題されました。 Zoox : ここでも、ポジションは純粋なフロント エンドですが、アルゴリズムのみが求められました。しかし、私の友人のインタビューは、フロントエンドの質問だけに焦点を当てていました. Aurora : この会社がこれほど注目されるとは思っていませんでした。採用担当者と何度も電話をしましたが、中には 1 時間かかるものもあり、面接プロセスについて詳しく説明し、準備資料を提供し、準備状況を尋ね、面接での振る舞い方などのアドバイスを提供しました。 、何を尋ねるべきか、何を尋ねないほうがよいか。質問はフロントエンドに焦点を当てていました。オンサイトの後、すぐに採用凍結が始まりました… Meta : 彼らは Ember.js フレームワークを持っているので、質問は純粋な JavaScript とフロントエンドに関するものだけです。 LinkedIn : テクニカル スクリーニング後にフィードバックを失いました。まだ探している。 Apple : 面接プロセスはフロントエンドに焦点を当てていました。 Google Hairing Committee の承認を得たら、次はチーム マッチングです。 L5 レベルと L4 レベルの間でさまざまなフィードバックがありました。その結果、委員会は追加の面接段階なしで L4 を与えてくれました。チームの試合が成功した後にのみ、彼らはあなたに番号付きのオファーを送信しますが、このプロセスにかかる時間は多くの要因によって異なります. Google 毎日でも構いませんが、週に 2 回のチームコールがありました。このプロセスには 2 週間かかりました。 チームを比較した基準: チームサイズ。フロントエンド、バックエンド、インフラエンジニア。 技術スタック (すべて Angular)。 L5 への昇格 (時間と機会)。 製品。 責任。 フロントエンドまたはフルスタックポジション。バックエンドのみもありました。 開発プロセス。 製品のユーザーは誰で、何人ですか。おそらく、これは内部プロジェクトか、多数のユーザー向けの大規模プロジェクトです。 マネージャーまたはチームリーダーとのコミュニケーションがどれだけ快適かを評価しました。 その結果、この製品のパフォーマンスを担当する Google アナリティクス チームとマッチングしました。このチームでは、成長の機会と昇進の指標がたくさん見られました。 オファーを受け入れるにはどうすればよいですか オファーを比較し、次の基準に従ってどれを受け入れるかを決定しました。 製品があなたにとって興味を持っていることは非常に重要です。私はストリーミング プラットフォームの開発に長年の経験があり、ユーザーと開発者のニーズを知っています。そのような製品では、多くのことを学び、自分自身の多くの課題を見ることができます。ロクは私にこの機会を与えてくれます。 製品。 Angular は好きではありません。React.js の方が好きです。これが、私が Roku を選んだ最も重要な理由の 1 つです。 技術スタックとツール。 これは非常に重要なことです。燃え尽きたくありません。面接の過程で、それについて質問し、その答えを注意深く聞くことができます。 仕事と生活のバランス。 技術面、社内での成長をリードポジションへ(スタッフ) 成長の機会。 エンジニアリング マネージャーの地位を離れた後、私はミドル ポジションの準備ができていませんでした (そう、ミドル ポジションもありました)。 ポジションレベル。 ベースとストック。 Roku は上級職の 85% を現金で支払います。これは、この国の初心者である私にとってより有益です。この段階では、今ここでお金が必要になるからです。 全額補償。 グリーンカードの手続きを最初の営業日から開始する会社もあれば、3、6、12 か月後に開始する会社もあります。 1 日と 3 か月に基づいて企業をフィルタリングしました。しかし、結局のところ、これらの条件も交渉可能であり、3 か月から 1 営業日で交渉することができました。重要なニュアンスとして、Meta はグリーンカードを発行しません。インタビューのすべての段階で、電話をかけるたびにそれについて尋ねましたが、答えはまったく得られませんでした。しかし、インターネット上の情報によると、すべてが悪いです。 グリーンカードの手続き。 フロントエンド エンジニアが 1 人、または 2 人というチームで働くのは好きではありません。成長して学びたいと思っています。チーム内のエンジニアのレベルも私にとって重要でした。 チームの規模と責任。 私はオフィスワークの方が好きです。在宅勤務は私にとって快適ではありません。一部の企業は現在、オフィスで 3 日間、リモートで 2 日間働くことを提案しており、一部の企業は完全なリモートワークを提供しています。 リモートワークやオフィスワーク。 私はサンノゼに住んでおり、いくつかの企業はサンフランシスコにオフィスを構えています。ここまで車で少なくとも 1.5 時間はかかります。これに1日3時間費やしたいですか? オフィスの場所。 チップ 1 週間に 3 つ (できれば 2 つ) を超えるオンサイトをスケジュールしないでください。先週、私は 1 週間に 4 つのオンサイトに参加しましたが、それは地獄でした!しかし、私は2つのオファーを得ました:) 面接では、あなたのスキルは指数関数的に成長するので、夢の会社との面接にすぐに合格しないでください. 面接の後、誰かと話すことができ、リラックスするのに役立ちます。 各面接の後に間違いに取り組み、何が間違っていたのかを理解し、面接での質問やタスクへの回答を探し、それを理解しようとします. 自己紹介用のテキストを 1 ~ 1.5 分間準備します。面接の各段階で説明します。 行動面接では、できるだけ多くの STAR ストーリーを準備して練習します。ほぼすべての質問をカバーする約 20 のストーリーがありました。それらを準備するのに約1か月かかりました。 Calendly (または同様のサービス) の有料サブスクリプションを購入して、面接の管理を容易にします。日付を電子メールで送信すると、彼らは 1 週間以内に応答できることを意味し、(それぞれ) 5 つの日付を要求するため、これらの 5 日間はブロックされ、他の面接をスケジュールすることはできません。 私がカバーしていない質問やトピックがある場合は、ここのコメントまたは私の で質問してください。 テレグラム チャンネル