分解:技術面接の問題に対処する方法

問題をより管理しやすくする方法を理解するための安全なレシピ。

1.質問を受け取ったとき(コードを1行書く前)

質問を確実に理解するための最も簡単な方法は、テストケースを確認することです。

インタビュアーで明確にすること:
予想される入力は何ですか?予想される出力は何ですか?
特定のテストケースについての前提条件

テストケースを調べた後、追跡する必要がある変数と、この問題に対して最も意味のあるデータ構造の種類をメモします。

問題を解決する方法を常に考えてください。あなたが解決できるより小さく、より簡単な副問題はありますか?もしそうなら、そのソリューションはどのように見えるでしょうか?

2.コードの記述(そして行き詰まった場合の対処)

アルゴリズムを理解し、ロジックを説明したら、次に行うことは、アイデアをコードに変換することです。

この時点で、ブルートフォースはまったく問題ありません。実行中のソリューションを作成することは(ランタイムとスペース効率が完全ではない場合でも)、コードを時期尚早に最適化しようとするよりもはるかに優れています。

コードを書くときは、次のことを忘れないでください。

  1. 現在作業中のコードと、ソリューションに追加する理由について明確に話します。
  2. わかりやすい変数名を使用し、コードを読みやすくするようにしてください
  3. 思考プロセスや、ソリューションの長所と短所についてインタビュー担当者と話し合う
  4. 可能な場合はコードをモジュール化します(ヘルパー関数は友達です!)

立ち往生したり、考える時間が必要な場合に、その厄介な沈黙を処理することについて…

それは私たち全員に起こります、そして、インタビューの間にこれに遭遇することは完全に普通です。私の経験では、技術面接のほとんどすべてで、自分自身で考える必要があり、面接官と話を続けることができない瞬間があります。これが起こるとき、私は通常、次の行に沿って何かを言います:

私は自分の解決策について考え、それが理にかなっているかどうかを確認するために少し時間が必要です
これが正しいアプローチであるかどうかは完全にはわかりません。仕事を再確認してください
多分(提案されたソリューションの一部を挿入)は実際には機能しないかもしれません(エッジケースを挿入します)...それに対処する方法を考えています

インタビュアーは通常あなたの側にいて、あなたが成功するのを見たいと思っています-彼または彼女があなたにヒントを与えたなら、それを忘れないでください!

3.ソリューションの確認と最適化の追加

コードの記述が終了したら、テストケースでコードをトレースして、プログラムが期待どおりに動作することを確認します。

この時点で考慮することをお勧めします:

  1. 見逃している可能性のあるエッジケース
  2. 1エラーごとのオフ(特にインデックス作成時またはループ使用時)
  3. コードにクリーンアップできる反復性はありますか?

最適化を試みるときに尋ねる質問:

  1. 現在の実行時間とスペースの複雑さは何ですか?
  2. 別のデータ構造を使用したり、アプローチをわずかに変更した場合、改善の余地はありますか?

コードを確認するとき、意図しないエラーを犯した可能性が十分にあることを忘れないでください。初めて見た他の人の作品のようにプログラムをトレースしてみてください。

すべてをまとめる

面接はスキルであり、他のスキルと同様に練習で改善できます!技術的な問題を乗り越え、選択した言語とデータ構造に慣れることは、面接中に強力なパフォーマンスの可能性を高めるために前もって行う作業です。

質問、データ構造、およびレビューのためのリソースのリストについては、こちらをご覧ください。4週間の次の技術面接の計画

各インタビューは学習経験であり、結果に関係なく、以前は得られなかった貴重な洞察を得たことに留意してください。前向きであり、フィードバックから学ぶことは、継続的に改善するための素晴らしい方法です!幸運を!

このガイドが何らかの形であなたを助けることができた場合、拍手を送ってください:)それは本当に私にとって多くのことを意味します-あなたの旅に感謝と幸運を!