私が多くのインタビューを行った私の会社の経験から、インタビューする人がそれを適切に行う方法についての手がかりを持っていない可能性が十分にあります。そこで、彼らは一連の技術的な質問を準備し、そのスコアを計算して履歴書を作成します。ただし、これには多くの欠点があり、次の理由で実行しないでください。
あなたはポイントの知識を求めます。プログラマーがその領域で何かをやったことがない場合、彼/彼女はまだ優秀な同僚かもしれませんが、その特定の答えを知らないだけです。対照的に、誰かがインタビューの準備をして、その特定の質問に対する答えをネット上で見つけた場合、あなたは正しい答えを得るが、その人は実際のトピックについて全く手がかりを持たないかもしれない。
人々は就職の面接で緊張しています。脳には、パニック状態にある場合、ロジックなどの上位レベルの多くの領域をシャットダウンするこの優れた機能があります。つまり、神経質になっていると、日常の状況で答えの質が得られない可能性があります。面接のようなストレスの多い状況に対処できる人もいれば、多くの人が対処できない人もいます。
単一の正解を使用して、その特定の答えを見つけるスキルをテストします。これは、同僚が必要とする多くのスキルの1つですが、必要なスキルではありません。したがって、これらの質問の1つまたは2つで、その知識の領域をテストするのに十分なはずです。次に、他のスキルを照会する必要があります。問題解決の質問のみを含むインタビューでは、同じスキルを何度もテストします。
良いプログラミングタスクの質問とは何ですか?
これらの有名な「短いプログラムを書くことができますか?」という質問には、ほとんどのプログラマーがIDEの助けなしでは1行のコードを書くことができないという大きな問題があります。しかし、それは日常の作業状況ではまったく問題ではありません。なぜなら、プログラマは常にIDEを手伝ってくれるからです。そのため、「エラーを見つける」、「50行のコードを書く...」、または単純な質問でさえも考慮する必要があり、申請者は自分のツール(IDE、Google)を利用できないことを考慮します。
たとえば、Googleが私を助けてくれれば、基本的に1分以内にどんな質問にも答えることができますが、インターネットに接続できなければ、どうしようもないようです。私はそれを外部委託されたメモリと呼びます。それは私を邪魔する代わりに、本当に重要なことに焦点を当てるのに非常に役立ちます-下層の仕組みを理解する-他のすべてを調べることができるからです。しかし、ランダムなAPIの詳細については私に尋ねないでください。私はそれらを知らないので、私はそのためにGoogleを持っています。
とはいえ、良いプログラミングタスクの質問は、これが仕事の絶対的な要件でない限り、APIや特別なコーディングスキルを知ることに焦点を合わせるべきではありません。知識を得ることができるので、その人がすでに知っていることを尋ねるよりも、その人が知識を得るのがどれほど良いかを知る方が良いです。
プログラミングタスクの良い質問は、短くてシンプルで、わずか数行のコードですべての言語でコーディングできることです。特に-できる限り多くのことを教えてください。 、人がどのように働いて答えを見つけるかについて、説明するがあります。例:
「整数の配列を取り、最初の整数が最後の整数の後にあるように並べ替え、他のすべてがそれに応じてシフトするように、選択した言語で関数を作成します。」
この時点で申請者が最初に尋ねる必要があるのは、「申し訳ありません...タスクを説明していただけますか?」です。プログラマーがこれまでに何をすべきかについて明確な説明を与えられていないからです。この後に説明が続きます。問題のコードは、オーバーフローを右側に追加して、配列の内容を左にシフトする必要があります。
このタスクは非常に単純なので、あらゆるレベルのプログラミングレベルを卒業した人は誰でも適切に答えられるはずです。これは、プログラマーがツールなしで作業しなければならず、神経質になると論理的に考える能力が低下することを考慮に入れています。ただし、単に左シフトが一般的な「左から右」の本能に反しており、人々が考えることを余儀なくされているため、質問の言葉の方法と人々のアプローチの方法から、人々がどのように問題を解決するかをまだ示しています二番目の。
この質問には多くの可能な答えがあります。そのため、ソリューションが実際に機能するかどうかではなく、コードの開発方法に注目することが重要な部分です。申請者はヌルをテストしますか?オーバーフローはどのように保存されますか?ループまたはmem-setが使用されていますか?申請者はどのようにコードの正確性を検証しますか?この簡単な質問は、その人がどのように働いているかについての伝記全体を教えてくれます。
一般的な知識の良い質問とは何ですか?
良い質問は簡単に答えられ、幅広い回答(いわゆる「未解決の質問」)が可能になり、短時間でできる限り応募者についてできる限り学ぶことができます。
例:
(C ++プログラマーに尋ねる):「C ++以外の言語は何ですか?」
これはエントリーレベルの質問であり、申請者は、質問されたトピックについて何も知らなければ、現時点で救済するチャンスがかなりあります。この時点で「いいえ」は、彼/彼女がすべて答えなければならないいくつかの質問で彼/彼女を苦しめることよりも優れています:「ごめん、私はそれについて何も知りません。」
さらに、まずその人が知っている他の言語を教えてくれます。さらに、その人がプログラミングの世界をより広く見たいと思うか、または単一の言語(したがって機能/技術)だけを持っている人がいるかどうかを学びます) 見る。
(その後、Javaを知っていると言ってみましょう):あなたの意見でC ++とJavaのトップ3の違いは何ですか?」
これは未解決の質問であり、多くの回答が得られるため、申請者は少なくとも3つを見つけるチャンスがあります。(個人的な意見)トップ3を要求すると、考えられる答えが制限されるだけでなく、優先度に基づいて並べ替えが行われます。それでも答えは簡単です(またはそうあるべきです)。
これは、さまざまなプログラミング言語に関する多くの詳細な知識をテストする簡単な質問です。それらのトピックの知識は本当にどれくらい深いのですか?これらの回答から、プログラミング言語の基礎となるメカニズムの知識と実際の理解について多くを知ることができます。その人がどれほど汚い詳細に費やしたか、または彼/彼女がさまざまなAPI関数をリンクし、それらの下で何が実際に発生するのか全くわからない場合。
このエントリーレベルの質問の概念とそれに続く単純で詳細な知識の質問は、他のほとんどのトピックでも使用できます。常にこのスキームで:救済の質問、確認の質問、詳細な質問。別の例(Javaインタビューから):
- 「マルチスレッド開発の経験をどのように評価しますか?」
- 「マルチスレッドアプリケーションを開発する際に考慮すべき上位3つの重要事項を挙げてください。」
- 「これらのアプリケーションの開発に役立つJava APIの3つのクラスに名前を付け、それらの用途を簡単に説明してください。」
これらの3つの質問は、ポイント知識とストレスレベルを考慮して答えるのが公平であると同時に、申請者がそれらのトピックについて本当に知っている技術的な質問よりも多くを教えてくれます。
そのため、次回誰かが20個のコーディング質問を続けて尋ねたとき、その人は基本的に誰かに適切にインタビューする方法がわからないことがわかります。;)