私が今まで受け取ったベストホワイトボードのインタビューのアドバイス:通信!


ホワイトボードのインタビューは、ハイテク産業で遍在している.喜びを持っていない人のために、ホワイトボードのインタビューは、ホワイトボード、紙、またはコンピュータのインタビュー中に技術的な質問を解決するために候補を求めるの練習です.この種の環境は圧力鍋のように感じることができます、そして、最も有能なエンジニアさえばらばらにします.
この記事では、私はホワイトボードのインタビューを通過するために今までに受け取った最高のアドバイスに沿って渡すつもりです.私はホワイトボードのインタビューの公正性や効果に対処するつもりはないと思います.

アドバイス:通信!
私が受け取った技術面接のアドバイスの最高の部分は、あなたに伝えることができるコミュニケーション、コミュニケーション、通信することです!これは反抗的なアドバイスのように思えるかもしれませんが、私はあなたにインタビューする前に準備する最も重要なスキルであることを示すことができます.
注意:この記事の残りの例について説明するように、彼らは私にとって最も馴染みのあるドメインとしてソフトウェア工学の傾きを持つでしょう.その傾斜にもかかわらず、任意のホワイトボードのインタビューにこれらのスキルを適用することができます.

あなたは何を言いますか.
のインタビューでは、あなたのインタビューは、ホワイトボードの質問をスローするとしましょう.あなたはホワイトボードにステップアップし、熱狂的に問題を解決開始?
だめ!
それはみんなの本能である傾向があります、しかし、それは確かに行く正しい方法でありません.あなたが問題を理解すると思うとしても、前進する前にいくつかの重要なステップを取るべきです.

まず、質問を再表示
あなたは、彼らがあなたに何をするよう頼んでいるかについて理解しますか?証明する.それらの問題を再確認し、肯定を求める.あなたは実際にあなたが完全に彼らが求めているものを理解していない見つけるために驚くかもしれない - おそらく、問題は似ていますが、過去に完成した練習問題と同じです.試して真のフィズバズの例を使用すると、次のように問題を再表示できます.
私の関数の唯一のパラメータは整数となります.私の関数の唯一のパラメータは整数になります.私の関数の唯一の出力は、数字1から始まり、入力番号で終わることです.となっている.しかし、出力が3と5の倍数ならば、出力はfizzである.私の理解は正しいですか?"
インタビューは肯定か、おそらく、あなたの理解は正しくありませんし、彼らはあなたが理解するのに役立ちます.問題が解決しない状況はありません - それはあなたが問題を明確にすることができますし、あなたが議論しながら少し時間を考える時間を与えます.さらに、議論を開始すると、この方法は、実際の課題を解決しようとしているときにそれ以外のマニフェストかもしれないいくつかの神経を鎮めるために役立ちます.

エッジについて尋ねる
まだ解決策をコーディングするのに右へ飛び込む時間でありません.入力と予想される出力について少し考えて、問題への潜在的なエッジケースについて考えてください.それらについて尋ねなさい.多くの場合、インタビュアーはエッジケースについてさえ考えませんでした.すごい - それはあなたが分析しているとバグを防ぐために努力することを示しています.
フィズバズ例を使いましょう.この問題の解決に成功した後、エッジケースに関する正しい方法は次のようになります.
問題の私の理解を確認した今、私はいくつかの潜在的なエッジのケースについて尋ねたいと思います.入力が数以外のタイプである可能性はありますか?

テストについて尋ねる
これは無料で、あなたはそれを活用する必要があります.単純に、関数が通過するテストケースがあるかどうかを確認します.あなたのインタビュアーはあなたにこの質問をすることを期待しているかもしれません.しかし、それはインタビュアーが質問を期待していなかった可能性もあります“ああ、この候補は、テストについて知っている!”

偽のコードを書き、それが意味をなすかどうか尋ねる
もう一度、実際の言語でコードを書き始める必要はありません.あなたは自分自身が正しいロジックを考え出すしようとするよりも、言語のメソッドや他の特異性を覚えてしようとして制約を見つけることができます.代わりに、インタビュアーを使用して、擬似コードを書くことから始めて、後で実際のコードを入力することを知っています.(偶然にも、実際のコードを書くにはこれが妥当な方法です).あなたの擬似コードがインタビュアーに意味をなすならば、あなたは尋ねることができます.それは彼らが“ヒントを与える”したくないタイプである可能性がありますが、それはまた、彼らはあなたが考える方法に興味があるでしょうし、あなたとあなたの擬似コードを議論したい可能性があります.私が候補にインタビューするとき、私は後者に興味があります - めったに我々は実際に真空でソフトウェアを開発することはありません.
言い換えると、最悪の場合では、インタビュアーはあなたにフィードバックを実際に提供することなく続けるように言います.最良の場合では、インタビュアーは実際のコードに移行する際に、あなたの擬似コードの論理的欠陥を指摘します.
スーパーボーナス:あなたの擬似コードが良いように見える場合は、実際のコードにそれを翻訳困難を持って終了すると、実際には、今では多くのポイントを獲得している!確かに、いくつかのエリート企業では、彼らは機能的なコード以外の何かを受け入れることはありませんが、単に偽のコードを介して理由ができることは多くの偉大な企業に十分です.
私たちのフィズバズの例に従って、次の擬似コードを考え出しましょう.最終的にはJavaScriptでコードを書いていますが、この時点ではほとんど問題がありません.
function fizzBuzz(n) {
  // If n is not a number or not an integer greater than zero, return null
  // create empty array to store output
  // Loop through numbers from 1 to n
  // If number modulo 3 is zero, add 'fizz' to output array
  // Else If number modulo 5 is zero, add 'buzz' to output array
  // Else If number modulo 3 is zero and number modulo 5 is zero, add 'fizzbuzz' to array
  // Else add the number to the array
  // return output array
}
この時点で、あなたは3番目のbuzzステートメントに決して到達しないことに気づくかもしれません.また、インタビュアーを使用して擬似コードを確認すると、彼らは無料(真剣に)あなたにそれを提供する可能性があります.その場合は、最初に3番目の条件を確認してください.
function fizzBuzz(n) {
  // If n is not a number or not an integer greater than zero, return null
  // create empty array to store output
  // Loop through numbers from 1 to n
  // If number modulo 3 is zero and number modulo 5 is zero, add 'fizzbuzz' to array
  // Else If number modulo 3 is zero, add 'fizz' to output array
  // Else If number modulo 5 is zero, add 'buzz' to output array
  // Else add the number to the array
  // return output array
}

実際のコードを書き、それが悪く見えるかどうか尋ねる
最後に、あなたはあなたの擬似コードを実際のコードに変えるべきです.あなたも、コメントを削除する必要はありません.この時点で、あなたの言語の適切なコードをプラグインする必要があります.いくつかの構文やメソッド名を忘れた場合は、あまりにも多くの悲しみなしで、この情報をあなたのインタビュアーを尋ねることができる必要があります.彼らはあなたのトラブルを与える場合は、ちょうど今のところ擬似コードとして残すと言う.
function fizzBuzz(n) {
  if (isNaN(n) || !Number.isInteger(n) || n < 1) return null;

  let output = [];

  for (let i = 1; i <= n; i++) {
    if (i % 3 === 0 && i % 5 === 0) {
      output.push('fizzbuzz');
    } else if (i % 3 === 0) {
      output.push('fizz');
    } else if (i % 5 === 0) {
      output.push('buzz');
    } else {
      output.push(i);
    }
  }

  return output;
}
この時点で、あなたのソリューションが良いように尋ねるのを躊躇しないでください!彼らはそれを改善するためにいくつかのヒントを提供するかもしれない場合.すべてのこのコミュニケーションの点数をポイント - あなたが客観的にあなたの仕事を改善する方法を議論する気があるならば、あなたははっきりしていて、より簡単に働くようです.

スタック?助けを求める!
あなたが道に沿ってトラブルを抱えている場合は、いくつかの助けを求めることは違法ではない.ちょっとそれを会話で話してください.例えば、
「私はここで少し立ち往生しています、あなたは正しい方向に私を抱かせるどんなヒントを持っていますか?」
答えは“いいえ、私はあなた自身でここから解決することができますかどうかを確認したいと思います”しかし、それはまた非常によく、“はい”有用な先端となる可能性があります!

ボーナス:インタビューの前に通信すること
面接の前に、人的資源や面接の面接要領を持つべきです.あなたがインタビューのコーディング部分があるかどうか好奇心旺盛ですか?尋ねる!さらに、あなたが準備する必要があります特に何かがあるかどうか尋ねることができます.彼らは非常によく、彼らは質問、質問の数、質問のスタイルを尋ねる言語を指定するようなヒントを与えるかもしれない(例えば、アルゴリズムを開発する対バグを見つける).彼らはあなたがコンピュータに座っているかどうかホワイトボードで立っているかを伝えるかもしれない - 非常に有用な情報を練習するために使用することができるかもしれない、または、少なくとも、精神的に準備する.

我々はみんな人間だ
とりわけ、我々がすべての人間であるということを思い出してください.あなたのインタビュアーはあなたの立場にあり、技術的なインタビューのストレスを理解しています.あなたのインタビュアーはおそらくかなりの少数の候補者がそれを発汗しているのを見ましたが、会話の方法で問題を公然と議論しているかもしれません.あなたがこれを成し遂げることができるならば、あなたは大きな形になります.