インタビュアーが自分の質問に対する答えを知らない場合、私は何ができますか?[閉まっている]


48

昨日、インタビューでひどい経験をしました。

インタビュアーは、純粋な仮想機能について尋ねました。基本クラスに定義がある場合とない場合がありますが、派生クラスは抽象クラスにもなりたくない限り、定義を提供する必要があります。

しかし、インタビュアーは、「純粋仮想には定義があります!!! ???」と尋ね続けました。

再び彼は「純粋?」と言った。

もちろん。派生クラスは、特定の動作が必要な場合、明示的にその関数を呼び出すことができます。

彼は私を送った。彼は純粋な仮想関数が定義を持つことができるという事実を知らないと確信しています。

この種のインタビュアーに対処するには?

2回目に尋ねた後、定義できないと嘘をつくべきですか?:)

それとも私は私の言葉に固執し、仕事の機会を失う必要がありますか?


51
定義がある純粋な仮想関数の例で連絡する必要があります。
-GManNickG

22
GManの提案は素晴らしいアイデアです。面接担当者は、彼があなたを信じているかどうかに関係なく、フォローアップするのに十分な仕事をしていることに感心するでしょう。そして、可能な限り非対立的な方法で彼に何かを教えるなら、それは彼/彼女が開発者としてあなたをより高く考えることを奨励するだけです。ただし、そこで働きたいかどうかは難しい決断です。
コーディグレー

47
しかし、あなたは本当にそのような人々のために働きたいですか?

29
私のインタビュアーの一つは、この表現を含ん私の質問をしていましたarr[++i] = i。そして、これがundefined-behaviorを呼び出してシーケンスポイントについて彼に言ったとき、彼は一瞬言葉を失いました、そして彼の表情と彼のさらなる質問は、彼がこれらの用語を聞いたことさえないと信じさせました!
ナワズ

10
インタビュアーは、しばしば技術的なスキルではなく、インタビュイーのコミュニケーション能力を評価する能力のために選ばれることを考慮してください。技術的なスキルは簡単に評価できますが、生産性を上げてチームに適合する能力はそうではありません。私には音は、あなたのビューを適応する機会をたくさん得たそうが、どちらも達成しないためにあなたの主張を説明することを。それはうまくいきませんでした。
ハンスパッサン

回答:


82

いいえ。その特定の弾丸で逃した幸運の星に感謝する必要があります。すべてを知らないかもしれないと認めることを拒否し、他人から学ぶことを拒否する人々のために働くことは、非常に不快な経験です。


7
より正確には、就職の面接プロセスは両方の方法で機能します。会社が従業員として私を判断している間、私は彼らを雇用者として判断しています。多くの人が望んでいません。
ちょうど私の正しい意見

確かに。数日前の私の電話インタビューで、インタビュアーは、使用している言語に精通している人の知識を示す何かの例を求めました。それについての質問が最後の最後に対面インタビューに追加されました。私はこれらの人々を知っており、彼らが素晴らしい開発者であることを知っているので、彼らと一緒に働きたいと思います。:)
greyfade

49

定義付きの純粋仮想関数の例:

// 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
}

6
これは、定義を含む純粋な仮想関数の例ではなく、実際にどのように役立つかを示す例です。+1。
j_random_hacker

3
それができるとは知らなかった。クール!= D-
ギャブリン

2
これは、ベースポリモーフィックオブジェクトを作成する方法です。その後、それを使用して階層を下にdynamic_castできます。プラグインが予期されるタイプであることを確認するために、プラグインなどの特定の状況で役立ちます(基本クラスから確実に派生するという仮定で)。ちなみに、純粋な仮想デストラクタには定義が必要です。
CashCow

今でもそれが些細なことでしかないなら、それはいいだろう。
デデュプリケーター

42

当面の問題は技術的な正確さではなく、社会的/コミュニケーションスキルです。しっかりしているが、インタビュアーの視点を認め、彼らが顔を救うことを許可する。

彼が何のために釣りをしているのかを確認できたら(「純粋?」が良い手がかりです)、良い答えは次のとおりです。

一般的に、純粋な 仮想関数には定義を持たないと考えられています。ただし、技術的に言えば、仮想関数が純粋であるために=0は、宣言に含まれている必要があります。それはまだ定義を持つことができます(試してください、コンパイルされます!)。もちろん、これはめったに使用されず、実際には、ほとんどの人が「純粋な仮想」と言うとき、定義がないことを意味します。


3
あなたは基本的に私のコメントを25分コピーしました。書く前に!どうやって?-+1と同様のテーマのコメントが削除されました。
Steve314

3
それは別の良い点です。テストで書いたコードがコンパイルされることを教授に示したので、テストで成績を主張したことがあります。コンパイラは嘘をつきません...今まで
...-jmort253

3
これはまさに私の考えでした。明確にせずに「はい」と言うだけで、インタビュアーが質問を理解していないと思ったことは明らかです。答えを拡大することで、a)質問を理解し、b)実際に答えを知っていることを明確にします。私はインタビュアーがポイントを押し付けようとして必ずしも間違っているとは思わないそれは、人々が純粋な仮想機能に定義がないと考えることは明らかにかなり一般的な誤解だ。
ディーンハーディング

10
あなたは500議員以降からタイムトラベルを取得@Steve、あなたは通知を見逃している必要があります
ペッカはGoFundMonicaサポート

同じ数年、C ++のインタビュー(高性能システム用)で、関数オブジェクトを使用すると、インライン化のために関数ポインターを使用するよりもパフォーマンスが向上する可能性があることを説明しました。「Effective C ++」という本も引用しました。彼は実際に本をチェックするために立ち上がって、彼はこれを知らないと感銘を受けたと言いました。あなたの答えを説明するのは良いことです。
softveda

10

実装を持つ純粋な仮想関数を宣言する方法を説明できたはずです。

実際、私もあなたがそうすることを望んでいます。


5
関数pure virtualを宣言し、実装を提供するだけです。これを行うことは非常に一般的ではありませんが、「効果的なC ++、第3版」では、Scott Meyersが有用ないくつかのシナリオについて説明しています。特に、関数は純粋な仮想であるため、宣言されたクラスは抽象ですが、実装があるため、必要に応じて明示的に使用を選択できるデフォルトの実装をサブクラスに提供します。

1
まあ、それはそれが行われた方法を説明していません。興味のある方はen.wikipedia.org/wiki/…をご覧ください。とにかく、私はまだそれを行う方法を説明するのが最良の回答だろうと思う。

1
+1-そして、2番目の行を2番目にします。さらに悪いことに、私が例外的に「しかし時には間違っている」気分になっていない限り、私はインタビュアーに味方したでしょう。問題は、信念をある程度までしか推測できないか、何も知らないままになってしまうことです。
Steve314

1
@ Steve314:へえ、私は年をとるほど、間違っていることにもっと気づきます。私よりもよく知っている人が常にいます。:-)

@Jonathon-はい、しかし、私がさまざまな意見についてどれだけ自信があるべきかを100%正確に示すことなく、どの意見を疑問視すべきかを知るにはどうすればよいですか?そして、間違っていることにオープンであるということは、他の人が正しいと私はいつも間違っていると仮定するべきだということですか?私たちは皆、時折自信がありながら間違っていることがありますが、それは自信を表明するべきではないということですか?そして、強い証拠を見るまで自分の銃に執着するかどうかのガイドが私の自信レベルにならないなら、何をすべきでしょうか?
Steve314

6

候補者にインタビューするとき、私は多くの場合、その人がどのように不確実性を処理するか、または対立に対処するかを見たいと思っています。次回インタビューするときは、これに敏感で、建設的な質問に答えるか、自分の立場を説明してください。それは正しい答えよりも重要かもしれません。


これは素晴らしい答えです。
ニールG

+1:これは私がインタビューする方法です。正しいこととそうでないことよりも、私たちがどのように相互作用し、意見を交換するかをもっと気にかけています。あなたの立場を詳しく説明し、そして/またはその背後にある理由を説明して、あなたはあなたが有能であるだけでなく、あなたが「チームプレイヤー」でもあることを示します。
マミー

別の+1:よく議論できる人を雇うことが重要だと思う。新規採用者が彼または彼女のアイデアに立ち向かえない場合、他の強い意欲を持つ人々とチームを組むことはできません。
ザンリンクス

5

私は面接担当者以上のことを知っていたインタビューに参加しました。しかし、彼らは誰かに役割を果たしてほしいと望み、そのレベルで面接できる(もちろん)誰もいませんでした。

あなたの場合、それは盲目的な無知であると感じていますか、それとも本物の誤解ですか?おそらく、例と参考文献を含むフォローアップメール:決定する前にそれらがどのように反応するかを確認してください。

私はあなたの質問に基づいていますが、「盲目無知」に向かっている傾向があります...


インタビュアーはこの質問のみを尋ね、私を送りました。メールIDがないため、連絡できません。
bjskishore123

@ bjskishore123:代理店経由?これはそれをした場合しかし、私は...離れていたい
GBN

はい、コンサルティングを通じて。
bjskishore123

+1これは一般的な経験です。自分のスキルセットを適切にチェックするのに十分な知識がある人とのインタビューは一度しかありません。
オーブリング

3

このような状況では、本体を持つ仮想関数を持つ単純なクラスを作成し、コンパイルされるかどうかを確認することを提案します。少なくとも、トピックをグーグル検索することを提案します。

インタビュアーが挑戦を引き受け、敗北を認め、その後彼があなたを絞めようとしているように見えないなら、あなたは良い状態にあるはずです。そうでなければ、これはおそらくあなたが働きたい人ではないでしょう。


3

私はあなたにインタビューする人が彼の質問への答えを知らないので、あなたが会社をあきらめるべきであるという考えに全く反対します。あなたが働いているときでさえ、間違っていても頑固な人に会うでしょう。人を正しい答えに導くのは良いスキルです。

私の場合、インタビュアーは多くのマシンで多くの数の分散を計算する方法を尋ねました。最初に、分散は平方の平均から平均の平方を引いたものであると言った。彼は「いや、そうだ」と間投したE[(x - mu)²]

「はい、あなたは正しいです。しかし、あなたの式は私のものと同じです。一緒に導きましょう。」そして、それを一緒に導きました。

あなたの状況で、面接官が信じられないことを認識したら、あなたのアプローチを変える必要があります。それはめったに知られていない機能であり(これはあなたがすべてを知っているように聞こえるようにするためです)、彼があなたに彼にインタビューの後にサンプルプログラムまたはC ++本への参照を彼に送りたいと伝えます(これはインタビューが順調に進むことができるように。)

彼の視点から物事を想像してみてください。いつの日か人々にインタビューすることになるでしょうし、時にはあなたは間違っているでしょう。輝かしい候補者にそのような質問に答えてもらいたいですか?


平均はE [(x-mu)²]ですが、おそらくそれを意味します。したがって、E [x²-2xmu +mu²] = E [x²]-E [2xmu-2mu²]-E [mu²] E [(x-mu)]は常に0で、E [mu²] =mu²として評価できます。 muはこうして証明された定数です。
CashCow

2

インタビューを机からコンパイラを備えたコンピュータに移した方がいいと思います。これで問題は解決しました。


1

編集:明らかに私はまったく間違っています、この答えの下のコメントを参照してください。教育目的のためにここに答えを残します。

悲しいことに、あなたは間違っています。仮想関数は定義を有していてもよいです。純粋仮想関数がないことがあります。定義の欠如はそれを純粋にするものです。


8
いいえ、ごめんなさい。彼は正しい。
-GManNickG

1
BZZT !!! 違う!= 0はそれを純粋にするものです。このような関数には定義を含めることができます。
エドワードストレンジ

4
ハァッ、私を驚かせる。私はこれを知りませんでした。
フィリップポッター

3
ウィキペディアは、「純粋仮想メソッドは通常、それらを宣言するクラスに実装を持たないが、C ++の純粋仮想メソッドは宣言クラスに実装を含めることを許可され、派生クラスが適切な場合に委任できるフォールバックまたはデフォルトの動作を提供します。 」そのため、純粋仮想関数がその実装を定義することは珍しいまたは非定型ですが、可能です。
コーディグレー

1

あなたが答えたものは何でも正しいことを知っています。私の意見では、あなたは正しかったのであなたの答えに固執することで良い仕事をした。嘘をつく必要はありません。今日でなければ、インタビュアーが純粋な仮想機能について学習するからです!!!! ..彼もあなたをテストして、あなたの決断がどれだけしっかりしているのかを確認しますか?あなたは簡単に夢中になる人ですか?あなたはあなたが正しいことを知っているので、希望を失う必要はありません

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