技術面接はパズルで知られています。 ホワイトボードにバイナリツリーを作成するか、ソートアルゴリズムを説明するか、10行以下でFizzBuzzを実装するように求められても、平均的なインタビューで技術的なプログラミングの質問に備える必要があります。
しかし、それだけが準備すべきものではありません。
現実には、多くの開発者は、回答間の差がほとんどない一般的なプログラミングインタビューの質問を解決できるでしょう。 では、次の候補者と何が違うのですか? それがまさにこれらの5つのヒントで焦点を当てることです。
1.推論と問題解決のプロセスを説明する
難しい質問をされたときにあなたができる最悪のことは、全く言葉を使わないことです。 残念ながら、偶然にこれを行うことは非常に簡単です。 重大な精神的エネルギーと集中力を必要とする問題に遭遇したとき、あなたの最初の傾向はあなたの心の中に後退することです。 これは自然なことですが、面接官にとってもあまり役に立ちません。
技術的な質問のポイントは、部分的には、問題の解決についてのあなたの考え方を明らかにすることです。 あなたのプロセスは何ですか? さまざまなコンポーネントをどのように分類しますか? どうやって解決策にたどり着きますか? うまくいかないことをしようとすると、どのように反応しますか? コードを実験したり、ホワイトボードに何かをスケッチしたりするのが上手ですか?
問題を解決するときに頭の中で何が起こっているのかを説明してください。 自分の声を録音してオンラインで公開するように振る舞い、他の人にその問題の解決方法を教えます。 面接官があなたに静かに考えるスペースを与えているとしても、そうするよう促されることなく、あなたの思考プロセスを説明することから利益を得るかもしれません。 これは、彼らがあなたのスキルと批判的思考をより完全に理解するのを助けるだけでなく、あなたをより思い出深いものにします。
2.技術面接で問題を解決するよりも良いことは何ですか? 2回解決する
解決策が1つしかない問題はほとんどなく、すべての問題には無限の誤った解決策があります。 したがって、問題を解決するための1つの方法にのみ焦点を合わせた場合、柔軟性とスキルセットを証明する大きな機会を逃しています。
単純によく知られているソリューションを使用したり、単一の言語で作業したりする代わりに、その特定の問題に関する議論を開き、さまざまなシナリオで解決します。 たとえば、FizzBuzzをプログラムするように求められた場合、2つの言語で、または2つの異なるパラダイムを使用して、または1つのソリューションのパフォーマンス制約と別のソリューションの美的制約を採用することで、プログラムを提供できます。
問題に複数の解決策があるかもしれないことを検証することにより、適応性、柔軟性、認識を示すことができます。これらはすべて、多くの可能性の中から適切な解決策を選択できるというインタビュアーへの信頼を植え付けます。
もちろん、行き過ぎないでください。複数の解決策で質問に答えるのがやりすぎだ、または喜んで歓迎されている場合、読書には芸術があります。 疑わしい場合は、二次的な選択肢を使用してソリューションを拡張するのに時間がかかるかどうかを面接官に尋ねるのを恐れないでください。
3.該当する場合、あなたの意見を共有することを恐れないでください
問題を解決するときに、自分の好みや意見に完全に基づいた決定を下すことがあります。 そしてそれは大丈夫です-雇用主はあなたの意見に興味を持っています! 状況に対する考え方や反応は、会社の文化に大きな違いをもたらします。 意見を持つことは、開発者としてのリーダーシップと技術的成熟の兆候でもあります。 あなたの意見について議論するには、特定の主題に関する他のポジションを評価したことが必要です。
ただし、意見は非常に密接に保持できることを忘れないでください。 特定の主題についてインタビュアーに同意できない場合は、その情報を共有するときに軽く踏み込んでください。 視点を持つことは良いことですが、それを共有することは必ずしも必要ではないことに注意し、あなたの戦いを選択する方法を知っていることも重要です。 経験則:質問がない限り、意見を共有しないでください。
4.「わからない」で答えを終わらせない
「小林丸」のシナリオに直面していない限り、インタビューの質問を「わからない」で終わらせないでください。これは仕事の選択肢ではないため、インタビューの選択肢にすべきではありません。
もちろん、すべてを知っておくべきだと言っているのではありません。 それ無理! しかし、仕事を成し遂げるために知っておくべきことを学ぶための戦略があることを示す必要があります。 「どうすればいいのかわかりませんが、それを理解する方法は次のとおりです。」と答えてみてください。 調査する可能性が最も高い方向を説明することをお勧めします。
何よりも、恥ずかしがらないでください! 学習は、主にあなたが知らないことを理解するプロセスです。 あなたの雇用主はあなたが完璧であることを期待していませんが、彼らはあなたが勤勉で知性的であり、問題で決してやめないことを期待しています。
5.常にチームのためにプレーする
あなたがフリーランスの開発者でない限り、あなたの仕事は常にチームのコンテキスト内で設定され、チームの成功は常にあなた自身の最優先事項です。 そのため、面接では、特定の日に問題を解決するだけでなく、チームが成功するために必要なことをすべて行うことに集中していることを反映する必要があります。
では、インタビューでこれをどのように伝えることができますか?
まるで真空状態にあるかのように問題について話し合うことはありません
ほとんどすべてのプロジェクトには、実質的にリソースの要件と制限があるため、問題の背景についての認識を示してください。 適切に解決されたが、予算を超えた問題は、本当に最大の解決策ではありません。
既存のチームに関する専門知識の認識を示す
質問に対する最良の答えは、チームの他の人にあなたと協力するように頼むことである場合があり、技術的な質問でそれらの人々を参照することができます。これは、あなたが他の人の専門知識に頼ることをいとわないこと、そしてあなたの目標が最高のソリューションに到達することであることを示しています。
チーム駆動型の値を明示的に伝える
これは十分に重要な問題なので、すぐに出て言ってください。 あなたの目標は、あなたの机に座って一日中コーディングするだけでなく、会社の成功を支援することであるということを雇用主に十分に認識させることです。
最終的に、開発者としてのあなたの仕事はコーディングだけではありません。 チームプレーヤー、リーダー、そして問題でやめたくない人になることです。 技術面接の機会は、目標を達成したりアルゴリズムを記述したりできることを示すだけでなく、競合他社よりも優位に立ち、雇用主に付加する価値を示すことでもあります。