大学で数年間プログラミングを勉強している人に期待することと実際に知っていることの間には大きな違いがあるようです。
面接で複雑すぎる質問をしているような気がしません。私の通常の質問のいくつかは:
参照型と値型の違いは何ですか?
インタビュイーが自分の答えを実際に理解していないようである場合、または使用している用語がわからない場合は、int i = 0と書くとどうなるかを説明するように依頼して、詳細を調べます。メソッドでは、オブジェクトo = 0、オブジェクトo = new MyClass()などはどうですか...
基本的に、面接対象者をだましてコールスタックやヒープなどを教えてくれるようにできる限りのことを行い、言語にとらわれない概念にとどまろうとします。インタビュイーがC、C ++、またはc#をたくさんやったと私に言った場合、私は特定の言語と、場合によっては実装の詳細について詳しく説明します。
必要に応じて、インタビューの対象者に、コールスタックとは何か、または選択した命令型言語で関数に渡された引数が格納される場所を尋ねます。
ほとんどのインタビュー対象者は、コールスタックが何であるか、ボクシングの考慮事項はもちろんのこと、何も知りません。
抽象クラスとインターフェースの違いは何ですか?どちらを使用するべきですか?
通常、私はまた、いくつかの継承といくつかの抽象的なファクトリを使用することを目的としたユースケースを備えた小さなライブラリの設計を想像するように依頼します
インタビュー対象者のほとんどは、実際の目的がどのような継承であるかをまったく知りません。彼らは通常、いくつかのキーワード(仮想、オーバーライドなど)を知っていますが、仮想テーブルが何であるかを説明することは言うまでもなく、それらをいつ使用するか本当に知りません。
事前にCVをスクリーニングしていますが、複雑なアーキテクチャを含む実際のプロジェクトで5年の経験がある人でも、面接対象者全員がこれら2つの質問に正しく答えることができるのは25%未満です。そして、私が適切に言うとき、私は「詳細」を意味しません...概念が何であるかについてのおおよその考えを持っているだけです。
後輩については、時間の整理の仕方がわからない人や、産業の構築プロセスなどに慣れていない人を雇っても大丈夫ですが、「コールスタック」は、コンピューターサイエンスを数年勉強した後、愚かであるか、やる気がなくなったか、大学を非常に賢く選択しませんでした。
私はここで過激すぎると思いますか?大学を卒業した後、これらの基本的な概念を学ぶことは一般的ですか?これらに精通しておらず、数年後に非常に優れたソフトウェアエンジニアになった人々をご存知ですか?そして、私の会社には才能のある人々を引き付けることに問題があると思いますか、それともあなた自身の雇用プロセスで同じ種類の問題を経験しますか?
編集。「即時型」については、通常はフランス語でインタビューを行うので、それはフランス語から英語への文字通りの翻訳でした。私の質問ではそれを修正しました。しかし、それでも、皆さんは私が何を意味しているのかを完全に理解していると思います。