Googleの面接の準備方法

すべてのソフトウェアエンジニアは、彼の技術力で人々を感動させるよう努めています。この世界のハイテク巨人は、何十億ものユーザーにサービスを提供できる技術者のために働くのに最適な場所です。最近のインタビューでは、いくつかのラウンドがあり、GoogleとAmazonからオファーを受けました。過去数年間、オンラインコミュニティは、面接の準備に大いに役立ってきました。この投稿では、インタビューへの私の道についてすべてを共有し、私の学習へのコミュニティの貢献を取り戻します。








インタビューSWE



このプロセスは通常、採用担当者が潜在的な候補者のリストをまとめることから始まります。その後、候補者は最初のスクリーニングを経て、彼/彼女がその仕事に適しているかどうかが決定されます。これが明確になると、次の手順を含む典型的なSWEインタビューが実施されます。



  • プログラミング-3から5ラウンド;

  • システム設計-1ラウンド;

  • リーダーシップの原則-ラウンド1。



インタビューの大部分を占めるコーディングサイクルの準備に焦点を当てます。ただし、次のセクションでは、システム設計とリーダーシップのスキルについて簡単に説明します。



A.プログラミング



ソフトウェアエンジニアは、あいまいさ、不明確な要件の処理、複雑なタスクのサブタスクへの分割、エッジケースの処理、妥協による妥協の作業の終了など、困難な状況に陥ることがよくあります。プログラミングインタビューはアイデアを得る1つの方法です。これらのスキルの。



簡単にするために、プログラミング手順では、データ構造とアルゴリズムを使用して問題を解決することに焦点を当てています。これらの質問は一般的に複雑であり、候補者の分析能力に対する貴重な洞察を提供します。



アルゴリズムとデータ構造を使用して問題を解決する方法を学びます。このスキルは時間の経過とともに習得され、近道はありません。唯一の真の公式は一貫性です。自然な問題解決能力を身につけるまで、練習し、練習し、練習します。



準備戦略



1.準備時間の見積もり



時間の見積もりは無視されることが多く、必要とは見なされません。アルゴリズムとデータ構造の問題をどれだけうまく解決できるかを調整することをお勧めします。私は自分の長所と短所を調べ、準備時間を大まかに見積もりました。この評価は、私が長期的(および短期的)な目標に向けて心を整えるのに役立ち、やる気を維持しました。



「準備するのに十分な時間をとってください。常に。十分に準備されていないよりも準備が多すぎる方が良い**。


合計準備時間は、経験によって異なる場合があります。一般的に、私はトレーニングのレベルを次のように分けました。



  • 初心者は、少なくとも1つのプログラミング言語で快適にコードを書くことができます。彼はDSとアルゴリズムの基本的な知識が不足しています。簡単な問題の解決や時間がかかることの難しさ。

  • 平均。その人はデータ構造とアルゴリズムをよく知っています。難易度は問題ありません。平均的な複雑さのほとんどの問題を解決できます。激しく戦う。

  • 高度。中程度の難易度で問題ありません。最も複雑な問題を解決することができます。



面接の前に、中級レベルになりました。





準備時間の見積もり



2.プログラミングを学ぶプラットフォーム



私は主にLeetCodeInterviewBitGFG使ってプログラミングを練習し ましたインタビューの前に、私は約320のLeetCodeの問題、80のInterviewBit、30のGFGの質問を解決しました。





タスクの分散方法



中難易度のタスクは非常に重要です。面接の質問のほとんどは中難易度です。中程度の難易度の問題を解決すると、より速くなり、問題解決スキルが向上します。



早い段階で、単純な質問から中程度の質問から始めることが重要です。十分な自信を感じたらすぐに、やりがいのある仕事から始めましょう。難しい問題を解決できない場合でも、やる気を維持してください。彼らの解決策を試し、改善するためにあなたが交渉したよりも時間がかかるかもしれません。やる気を高めるために、圧倒されるたびに簡単な仕事に戻りました。



成長の考え方を維持します。解決できない問題はすべて、新しいことを学ぶ機会です。



  • LeetCode: , . LeetCode — . . , LeetCode Premium; .

  • InterviewBit: . . , ( ). InterviewBit .

  • GFG:このプラットフォームを使用して、アルゴリズムとデータ構造の基本に関する問題と記事を見つけました。トピックの説明とそこにある実装は本当に良いです。GFGには、特定の企業やトピックに関連する一連のタスクもあります。



私は1つのリソースに完全に依存していませんでした。みんな新しいアイデアをくれました。私は日記をつけ、常に知識を広げていきました。



  • Courseraのアルゴリズムスペシャライゼーション:このCourseraトラックは素晴らしいです!データ構造とアルゴリズムのすべての基本的なトピックといくつかの高度なトピックをカバーする、合計4つのコースがあります。初心者に最適です。

  • Youtube: . . ( , , THNLGf019nRo) — ! BackToBack SWE.

  • CTCI EPI:   . . , . .

  • CLRS:   , . , .



最後になりましたが、 VaidehiJoshiによる BaseCSに関する記事彼女は、アルゴリズムとデータ構造のいくつかのトピックについて直感的で簡単な説明を書いています。



3.タイマーを開始します



面接の期間が短くなるにつれて、問題をどのように解決するかに取り組むことが非常に重要です。通常、プログラミング面接は45〜50分続き、候補者は2つの中間、1つは難しい、または1つは簡単で1つは難しい問題を解決することが期待されます。



元の質問を解決できたとしても、より多くの時間を費やしたとしても、2番目の質問を解決するのに十分な時間がないことを意味します。



問題を解決するのにかかった時間をカウントダウンするタイマーを設定しました。



  • 平均タスク:20分。

  • 難しい作業:40〜45分。



初心者は時間を無視することができます:彼らにとって、正しい解決策を見つけることは明らかにより重要です。



4.模擬面接



実際のインタビューの前に、私はたくさんのシミュレーションを経験しました。模擬面接は非常に役立ちます。テスト環境の早い段階で失敗すると、有用な情報が得られます。それはあなたがあなたの思考プロセスのギャップを見つけるのを助けるでしょう。すべての間違いを修正し、すべての誤った面接で良くなるようにしてください。



「シミュレーションに数回合格した場合は、それを良い兆候と見なしてください。」



自由:



  • LeetCodeの模倣

  • [無料のピアツーピアスキーム] Pramp

  • [無料のピアツーピア] InterviewBit



有料の模擬面接は有益です。たとえば、面接後のフィードバックは、採用担当者が何を期待していたかについて多くの詳細を提供します。



  • [有料] ExpertMitra

  • [有料]モッキ

  • 【有料】トライアル技術面接



5.プロモーション計画を作成します



これまで、準備のさまざまな要素について多くのことを話してきました。それでは、すべてをまとめてプロモーションプランを作成してみましょう。面接の1か月前に私のカレンダーのスクリーンショットをチェックしてください。





準備スケジュール



すべての準備をタスクに分割しました。面接前の数週間(さらには数ヶ月)の毎日の目標を設定します。これは私が混乱を避け、ゴールに向かう途中で迷子にならないようにするのに役立ちました。



  • 平日は事務作業をしていたので、数時間を割くことができました。今回は問題解決を計画しました。

  • 私は週末に理論を読み、それに多くの時間を費やすことができました。

  • インタビューに近づいて、私は模倣を計画しました。ここ数週間、私はプログラミングセッションの数を減らし、CTCIとEPIを読むことに集中しました。







毎週の時間配分



私たちの多くは家族の責任とフルタイムの仕事を持っていることを私は知っています。すべてではなく、常に計画どおりに進むとは限りません。しかし、その考えは習慣を形成することです。進捗状況と完了していないものを追跡します。適切なスケジュールが見つかるまでスケジュールを調整します。



B.システム設計



このラウンドでは、技術設計スキルをテストします。低レベル設計(LLD)と高レベル設計(HLD)に分けることができます。この分野の知識は、業界での経験とともに成長します。



分散システム、負荷分散、ネットワークプロトコル、コンシステントハッシュ、CAP定理、レプリケーション、シャーディングなどの概念についての知識を習得してください。





C.リーダーシップの原則。動作



前のラウンドとは異なり、このセクションは技術的ではありません。会社は彼の言葉で候補者についてもっと学ぶことを期待している。会社は興味があるかもしれません:

  • 候補者の性格。

  • 以前のプロジェクトと仕事の経験。

  • 困難な状況で何をしましたか。

  • 良いレビューと悪いレビューにどのように反応しましたか。



主なことは、透明性を保ち、自分らしくいることです。 SARモデル(状況、行動、結果)に関するCTCI

言及されているセクションを強調し ます。アイデアは、前の仕事からの物語を配布することによって重要な重要な議論を特定することです。ここだ コミュニティのスキルのマップあなたがそれらについての詳細を学ぶことができるように(別名ソフトスキル)。





SAR





  • LeetCode Codeforces. , , .

  • «Shuffle» LeetCode. . .

  • IDE, Google Docs, CollabEdit, .

  • . , .

  • , . , , . , .





Q1。データ構造とアルゴリズムのどのトピックに焦点を当てるべきですか?どのリソースにリンクしましたか?

前述の学習リソースが役立ちます。トピックごとに個別のリソースを追加しませんでした。これにより、投稿が大きくなりすぎます。



トピックは順不同:

リンクリスト、ビット操作、スタックとキュー、バイナリ検索、ヒープ、貪欲なアルゴリズム、動的計画法、ベクトル/配列 リスト、ビッグO表記、時間と空間、並べ替え、ポインター、TCP / IPウィンドウ、システムの分離セット、文字列操作、グラフとツリー、システムの安定性の維持、幅優先検索と深さ優先検索、再帰、バックトラッキング、ハッシュ、構文ツリー、プルーニングツリー、インデックス付き二分木。



Q2。どのプログラミング言語を勉強しましたか?

内外で1つの言語を学びます。私の意見では、これで十分です。私はJavaが好きです。



Q3。すべての問題を解決するためにどのタスクを練習するのが適切かをどうやって知るのですか?

すべての問題を解決することはほとんど不可能です。ただし、データ構造とアルゴリズムの分野からは最大12〜15のトピックがあります。テーマの問題を解決することにより、各トピックをよりよくマスターするようにしてください。練習すれば、目的のデータ構造とアルゴリズムを決定できるようになります。量より質に焦点を合わせます。



Q4。大会に出場しない場合、チャンスはありますか?

そのとおり。このコンテキストでの競技会のプログラミングはオプションです。



  • 競技プログラミングはスポーツであり、そのタスクの範囲はプロダクションプログラミングよりも広いです。CodeChefやCodeforcesなどのプラットフォームは、この種のプログラミングに傾倒しています。

  • もちろん、競技プログラミングが本番プログラミングと重複し、役立つ可能性のある分野もあります。たとえば、採用担当者があなたのプロフィールや問題解決スキルなどに注意を向けるのに役立ちます。



ただし、コーディングラウンドは非常に異なる段階を表しており、優先順位も異なります。



Q5。面接の招待状を受け取るにはどうすればよいですか?どのように応募しましたか?

採用担当者はLinkedIn経由で直接私に連絡しました。候補者の選び方がわかりません。しかし、私はいくつかの提案があります。



  • あなたが学生である間、あなたの研究に集中してください。コンテストやハッカソンに参加し、興味深く革新的なプロジェクトに取り組みます。オープンソースプロジェクトに貢献してみてください。あなたのプロフィールを目立たせる方法はたくさんあります。



最も重要なことは、あなたの旅行を楽しんでください。あなたの仕事に勤勉になりなさい。忍耐を持ち、敬意を払い、常に昨日よりも今日が良くなるように努力してください。バナーの割引に10%追加される特別なHABRプロモーションコードを忘れないでください。残りは続きます。






画像






その他の職業やコース


















All Articles