昨日はインタビューでひどい経験をしました。
インタビュアーから純粋仮想関数について尋ねられました。私は言った、それは基本クラスに定義があるかもしれないし、ないかもしれないが、それらが抽象クラスになりたくない限り、派生クラスは定義を提供するべきです。
しかし、インタビュアーは「純粋な仮想には定義があるのか!!! ???」...
もう一度彼は「純粋?」と言った。
もちろん。許可されています。特定の動作が必要な場合、派生クラスは明示的にその関数を呼び出すことができます。
彼は私を送り出した。私は彼が純粋な仮想関数が定義を持つことができるという事実を知らないと確信しています。
この種のインタビュアーの扱い方は?
2回目を聞いた後、それは定義を持つことができないと嘘をつくべきですか? :)
または私は私の言葉に固執し、雇用機会を失うべきですか?
いいえ。そして、その特定の弾丸で見逃したラッキースターに感謝する必要があります。すべてを知っているわけではなく、他人から学ぶことを拒否することを認めない人のために働くことは、非常に不愉快な経験です。
定義付きの純粋仮想関数の例:
// object.hpp
struct object
{
// virtual destructor, to allow use as a public base class,
// but pure to ensure object itself isn't instantiated
virtual ~object() = 0;
};
inline object::~object()
{
// empty implementation
}
目下の問題は、技術的な正確さではなく、社会的/コミュニケーション能力です。しっかりと立ちますが、面接官の視点を認めて、面接官が面を保存できるようにします。
彼が何のために釣りをしていたかがわかると(「純粋?」が良い手掛かりです)、良い答えは次のようになるでしょう:
pure仮想関数は定義を持つことができないと一般的に考えられています。ただし、技術的には、仮想関数が純粋であるためには、
=0
宣言内。それはまだ定義を持つことができます(試してください、コンパイルします!)。もちろん、これが使用されることはめったになく、実際には、ほとんどの人が「純粋な仮想」と言うとき、定義が存在しないことを意味します。
あなたは、実装を持つ純粋な仮想関数を宣言する方法を説明することができました。
実際、私もその方法をよく知らないので、ここに来てほしいです。
多くの場合、候補者に面接するとき、その人が不確実性をどのように処理するか、または対立に対処する方法を確認しようとしています。次に面接するときは、これに敏感になり、建設的に質問に答えるか、自分の立場を説明してください。それは正解よりも重要かもしれません。
私は面接をしていて、面接担当者よりも多くのことを知っていました。しかし、彼らは誰かに役割を果たしてほしかったので、そのレベルで面接できる人はいませんでした。
あなたの場合、あなたはそれが盲目的な無知、または本当の誤解だったと思いますか?おそらく、例と参考文献が記載されたフォローアップメール:決定する前に、彼らがどのように反応するかを確認してください。
私はあなたの質問に基づいていますが、私は「盲目の無知」に向いている傾向があり、明確にとどまります...
面接する人が質問への答えを知らないので、会社をあきらめるべきだという考えにはまったく同意しません。仕事をしているときでも、間違っていても頑固な人に出会います。正しい答えに人々を操縦することは良いスキルです。
私の場合、インタビュアーは、多くのマシンで多くの数値の分散を計算する方法を尋ねました。最初に、分散とは平方の平均から平均の平方を引いたものであると言いました。 「いいえ、それはE[(x - mu)²]
です。」
「はい、そうです。あなたの公式は私のものと同じです。一緒に導出しましょう。」そして、それを一緒に導き出しました。
あなたの状況で、インタビュアーが信じられないことを認めたとき、あなたはあなたのアプローチを変える必要があります。これはめったに知られていない機能であることを教えてください(これは、あまり知られていないように聞こえるようにするためです)。彼が望む場合は、インタビュー後にサンプルプログラムまたはC++ブックへの参照を送信します(これは面接をスムーズに進めることができます。)
彼の視点から物事を想像してみてください。あなたはいつか人々にインタビューするつもりです、そして時にはあなたは間違っているでしょう。輝く候補者にそのような質問にどのように答えてもらいたいですか?
このような状況では、本体を備えた仮想関数を使用して単純なクラスを記述し、コンパイルされるかどうかを確認することを提案します。少なくとも、私はトピックをグーグルすることを提案します。
インタビュアーが挑戦を受け入れ、敗北を認め、彼がその後あなたを絞め殺そうとしているように見えなければ、あなたは良い状態にあるはずです。そうでなければ、これはおそらくあなたと一緒に働きたい人ではありません。
インタビューを机からコンパイラのあるコンピュータに移すべきだったと思います。それで問題は解決したでしょう。
編集:明らかに私は完全に間違っています、この回答の下のコメントを参照してください。教育目的でここに答えを残します。
悲しいことに、あなたは間違っています。 virtual関数には定義がある場合があります。 a pure virtual関数はできません。定義の欠如はそれを純粋にするものです。
あなたが答えたことは何でも正しいことを知っています。私の意見では、あなたは正しかったので、あなたの答えに固執することによって良い仕事をしました。嘘をつく必要はありません。今日でないと、インタビュアーが純粋な仮想関数について学ぶことになるからです!!!! ...彼はあなたをテストして、あなたの決定がどれだけしっかりしているかを確認しているのでしょうか?あなたは簡単に夢中になる人ですか?あなたは正しいことを知っているので、希望を失う必要はありません