「RAIIイディオムを説明する」は、C ++スクリーニングの良い質問ですか?[閉まっている]


13

一緒に仕事をしている会社から、候補者に電話をかけて候補者に電話をかけるときに恥ずかしい思いをさせないように、電話候補者のスクリーニングを依頼されました。

かなりの数の人がC ++開発者の役割に配置されていたことがわかります。私はC ++にあまり時間を費やしていませんが、この言語で些細なことや些細でないことをいくつか行っています。「RAIIのイディオムを説明する」は、ほとんどの深刻なC ++開発者が半分眠っている間に答えることができる素晴らしいソフトボールの質問であり、経験に関するより興味深い質問に進むことができると考えました。しかし、頭字語を「Resource Acquisition is Initialization」に拡張しても、10年以上のC ++の経験がある人はこの用語を認識していません。ある候補者は、Windows開発にこの手法を適用することは必ずしも実用的ではないと感じたとまで言いましたが、これは奇妙な感情だと思いましたが、その考えを裏付けていると思われる例がいくつかありました。)。

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

それで、「RAIIのイディオムを私に説明できますか?」公正なスクリーニングの質問ですか?すべての有能なC ++開発者がそれを理解することを期待するのは妥当ですか?この用語は私が考えるよりも難解ですか?候補者がその用語を知らないと仮定すると、RAIIを機能させるプラクティスを少なくとも内部化したかどうかを知るのに役立つフォローアップの質問はありますか?候補者に回答の自由度を与え、候補者がC ++開発の理解を実証するのに役立つ代替の「ウィーダー」質問がありますか?

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


3
「私が彼らの能力を判断するのに十分によく知っているC ++開発者の2人でさえ、彼らはこの用語を認識していないと言った」。はい。「だから、「RAIIのイディオムを私に説明してもらえますか?」何で質問する?あなたはそれについて知っている人々を見つけることができませんでした。まだ知らないことをさらに知る必要がありますか?おそらく、あなたはこの主題を軽視し(あなたはすでに答えを知っているので)、興味深いかもしれない「より良い代替の「ウィーダー」質問があります」に焦点を合わせるべきです。それは銃撃戦の意見であることを除いて、それはよく容認されません。
-S.ロット

9
イディオムは変わりますが、良い習慣は変わりません。特定のイディオムについて尋ねるのではなく、「クラスがリークしないことを確認するためにクラスを設計する際にどのようなステップを踏むのですか」と単純に尋ねるのはどうでしょうか。
Blrfl

サンプルサイズは小さく、C ++コミュニティに積極的に参加していませんが、最近はコミュニティが重要な知識と見なしているものがわかりません。私は本質的に、たとえば構文の基本を超えて実際のC ++知識を判断するために使用できる質問のレパートリーを拡張する方法を見つけようとしています。
ジェイソントゥルー

2
あなたの問題は私が期待したものではありません。RAIIが何であるかを知っており、雇われている人を見つけると思いますが、それは後になって、彼らがまだコーディングに苦しんでいることがわかります。
ケビン

1
@JasonTrue:フィズバズの質問は、文字列を逆にするような実際のプログラミングの質問であると思われます。とにかく、それは素晴らしい質問だと思います。また、インタビュイーが最も刺激的または重要だと思うc ++-0xの機能を尋ねることを検討することもできます。それは少し難しいですが、あなたが良い答えを得た場合、それはおそらく良いことを意味します。そして、質問は、あなたが空白の凝視を取得する場合、「どのブーストライブラリが最も重要/興味深いか」にいつでも戻ることができます。
ケビン

回答:


24

あなたは、経験から有能であることを知っているC ++開発者が、その頭字語や完全な表現にさえ不慣れであることを発見したようです。それだけでは、質問が電話中のスクリーニング質問として適切ではないことを示しているようです。

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


素晴らしい提案。私はこのアプローチが好きです。
ジェイソンTrue

電話インタビューでは時間がかかりすぎます。
HelloWorld

15

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


3

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


3

まあ、私は誰かが有能かどうかを知りたいとき、私が最初にすることは頭字語の知識をチェックすることです。それが確立されたら、私は彼らが私がクールだと思う他の技術の名前を知っていることを確認します。彼らがその後もそこにいるなら、私は彼らに好きな色のリストを頼みます。

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

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


私はスクリーニングインタビューで多くの難解な知識の質問をする傾向はありませんが、誰かが完全に無能ではないことを確認するためにやるべきデューデリジェンスが少しあります。したがって、候補者が自分の背景を自慢して見せることができるように、ある程度の知識を検証することができる自由回答形式の質問を探しています。履歴書でテクノロジーXを知っていると誰かが言った場合、「ある程度の」知識を期待します。私の質問は、C ++プログラマーが会話をさらに進めるための有用なゲートウェイとなるためにどのような知識を期待すべきでしょうか。
ジェイソントゥルー

4
@jason:ええ、おそらく数か月の間、RAIIの頭字語を思い出せるでしょう。その短命の知識は、私が長年C ++に触れていなくても、私を有能にしますか?それは簡潔なトリビアです。どのようにロックを処理するかを尋ね、奇妙な頭字語ではなく、実際の知識を理解していることを確認します。
悪魔のような子犬

1
@jason:同意します。基本にこの種の雑学が含まれていることに同意しません。バカはそれを知っているかもしれませんし、専門家は知らないかもしれません。スキルに関係のない何かに基づいて選択プロセスを行っています。
悪魔のような子犬

5
RAIIが何であるかを知ることは、本質的な知識ではありません。しかし、パターンに自動的に手を伸ばすことです。
btilly

2
RAIIは優れたC ++の基本概念であり、この用語は少なくとも20年間使用されています。トリビアとしてそれを却下することは、やや不公平だと思います。用語を知らない優れたC ++開発者がいる場合でも、私にとっては、自分の技術を研究していない人の匂いがします。
カズドラゴン14年

1

あなたの目的が完全に無能な人を素早く選別することであるなら、このようなものを試してください:

FizzBu​​zzテスト

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


1
私はこの質問を頻繁に使用し、受け取ったので、上記のコメントでそれについて言及しましたが、25分間の電話での会話で質問するのは厄介です。
ジェイソントゥルー

0

有効な質問ですが、スクリーニング用ではありません。インタビューで議論するために、私はそれを書面による質問として使用しました。事前の通知があれば、思考パターンについて多くの洞察を得ることができます。スクリーニングの質問として、それは単なる厄介なものです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.