web-dev-qa-db-ja.com

「RAIIイディオムを説明してください」はC ++スクリーニングの良い質問ですか?

私が協力している会社から、電話による候補者のスクリーニングを行い、潜在的なクライアントに誰かを送る際に完全に恥ずかしくないことを確認するよう依頼されました。

結局のところ、かなりの数の人々がC++開発者の役割のために配置されていました。 C++にはあまり時間を費やしていませんが、言語でいくつかの重要なプロジェクトと重要なプロジェクトを行ってきました。 「RAIIイディオムの説明」は、ほとんどの真面目なC++開発者が半分眠っている間に答えられる素晴らしいソフトボールの質問であり、経験についてのより興味深い質問に進むことができると考えました。しかし、C++の経験が10年以上ある人は、頭字語を「Resource Acquisition is Initialization」に拡張しても、この用語を認識しないことがわかりました。ある候補者は、この手法をWindows開発に適用することが常に実用的であるとは限らないと感じていましたが、これは奇妙な感情だと思いましたが、その考えを支持していると思われる例がいくつかありました。 (しかし、実際には間違いなく)。

自分の能力を判断するのに十分知っているいくつかのC++開発者でさえ、彼らは用語を認識していないと言いましたが、テクニックの要約を読んだとき、「ああ、そうです、名前があることを知りませんでした。それらのことをあなたがしなければならないこととして考えました。」 Stroustrupの本の第2版の当時の言葉を覚えていますが、当時は完全な影響はありませんでした。

それで、「RAIIイディオムを私に説明してくれませんか?」公正なスクリーニング質問?すべての有能なC++開発者にそれを理解することを期待することは理にかなっていますか?その言葉は私が思うより難解なのでしょうか?候補者がこの用語を知らない場合、RAIIを機能させるための慣行を少なくとも内部化したかどうかを確認するのに役立つフォローアップ質問はありますか?受験者に回答の自由度を与え、受験者がC++開発についての理解を示すのに役立つ、より優れた代替の「ウィーダー」質問はありますか?

編集して追加:明確にするために、私は人々が流行語や頭字語を知らないために失格にするようなインタビュアーではありません。ただし、経験豊富なC++プログラマーがリソース管理の優れた実践を取り入れていることを期待するのは理にかなっていると思います。また、候補者が専門知識を主張するテクノロジーについての「基本」を理解していることを確認してから、デザインや問題解決などの興味深い質問に進むことも重要だと思います。私が探しているのは良い方法だと思います「難しい」質問をする前に、C++での適切なリソース管理の実践に関する候補者の基本的な理解を判断するために使用できる、短い電話でのスクリーニングに適した自由回答形式の質問をします。

13
JasonTrue

あなたは、経験から知っているC++開発者が有能であることを知っているようです。それだけでは、質問が電話中のスクリーニング質問として適切でないことを示しているようです。

一方、シナリオをポーズすることで、より遠回りの方法で同じポイントに到達できます。たとえば、「ログ情報をファイルに書き込むLogクラスを実装しています。明らかに、ファイルハンドル(std :: FILE *)であるメンバー変数が必要です。このファイルをどこに割り当てて解放しますか?扱う?"候補者が、コンストラクターでファイルハンドルを割り当て、デストラクタでハンドルの割り当てを解除するのではなく、open()およびclose()メソッドの作成について話し始めた場合、クラスがどのように動作するかなどについて尋ねることで、フォローアップできますコードを呼び出すと例外が発生するなど.

24
Justin Cave

それが提案されているので、それは実際的な問題ではないと思います。多くの開発者が「ああ、そうだ、名前があったのを知らなかった」という陣営に陥るでしょう。候補者を概念の名前ではなく概念でテストすることをお勧めします。彼らにコード例を与え、なぜそれが不完全であるかを尋ねるか、彼らにコンセプトを知っていることを彼らに実証してもらいます。

15
GEL

私は正しい質問だと思います。 RAII用語の人気度はわかりませんが(私のチームでは、常にRAIIの用語を使用しています)、例外処理やマルチスレッド対応が必要な場合は特に、リソース処理の概念が重要です。 。

3
Armando

まあ、私は誰かが有能であるかどうかを知りたいとき、私がする最初のことは頭字語の知識をチェックすることです。それが確立されたら、私が彼らが私がクールだと思う他のテクノロジーの名前を知っていることを確認します。それでもまだそこにいる場合は、お気に入りの色のリストを求めます。

こういうのは我慢できない。つまり、私のインタビューの終わりに、これはサイレンと警告ベルです。上司が「基本的」であると考える奇妙なニーモニックを知っていることが実際に重要な場所で働きたくありません。私が長年扱ってきた人々の名前を学ぶのに煩わされることはないので、地獄がベストプラクティスを説明するかわいい頭字語で脳のスペースを無駄にしないように確信しています。

私のコードを見てください。どうしたらいいのか聞いてください。牛が家に帰るまで、私はホワイトボードにがらくたを落書きします。アプリをコーディングします。でたらめな雑学クイズを出さないでください。雑学は常にヒットまたはミスであり、それは決して基本的ではありません。

3
Satanicpuppy

あなたの目的が完全な無能者を迅速に排除することであるなら、このようなことを試してください:

FizzBu​​zzテスト

その後、C++の専門知識を評価するために、C++の概念と実践をより良い立場に置く人に任せることができます。

1
Harold Bamford

これは有効な質問ですが、スクリーニングには使用できません。面接で話し合うために、筆記用の質問として使用しました。事前の通知により、思考パターンについて多くの洞察を得ることができます。選別用の質問として、それは単なる厄介な罠です。

0
david.pfx