Was kann ich tun, wenn der Interviewer die Antwort auf seine Frage nicht kennt? [geschlossen]


48

Gestern hatte ich eine schreckliche Erfahrung in einem Interview.

Der Interviewer fragte mich nach der rein virtuellen Funktion. Ich sagte: Es kann oder kann nicht Definition in der Basisklasse haben, aber abgeleitete Klassen sollten Definition zur Verfügung stellen, es sei denn, sie möchten auch abstrakte Klasse sein.

Aber der Interviewer fragte immer wieder: "Kann rein virtuell eine Definition haben !!! ???" ... Ich sagte ja.

Wieder sagte er "Pure?"

Ich sagte ja. Abgeleitete Klassen können diese Funktion explizit aufrufen, wenn sie dieses bestimmte Verhalten wünschen.

Er hat mich rausgeschickt. Ich bin mir sicher, dass er nicht weiß, dass rein virtuelle Funktionen eine Definition haben können.

Wie gehe ich mit solchen Interviewern um?

Sollte ich nach der zweiten Frage lügen, dass es keine Definition geben kann? :)

Oder sollte ich mich an meine Worte halten und die Arbeitsmöglichkeit verlieren?


51
Sie sollten sie mit einem Beispiel für eine rein virtuelle Funktion mit einer Definition kontaktieren, damit sie es wissen.
GManNickG

22
GMans Vorschlag ist eine ausgezeichnete Idee. Sie werden den Interviewer wahrscheinlich beeindrucken, dass Sie sich genug um den Job gekümmert haben, um nachzufragen, ob er Ihnen glaubt oder nicht. Und wenn Sie ihm etwas so konfliktfrei wie möglich beibringen , sollte dies ihn nur ermutigen, Sie als Entwickler höher einzuschätzen. Trotzdem ist es eine schwierige Entscheidung, ob Sie dort arbeiten wollen oder nicht.
Cody Gray

47
Aber wollen Sie wirklich für solche Menschen arbeiten?

29
Einer meiner Interviewer hatte mir eine Frage gestellt, die diesen Ausdruck betraf arr[++i] = i. Und als ich sagte, dies rufe undefiniertes Verhalten hervor und erzählte ihm von Sequenzpunkten , war er für einen Moment sprachlos, und dann ließen sein Gesichtsausdruck und seine weiteren Fragen mich glauben, dass er diese Begriffe noch nie zuvor gehört hatte!
Nawaz

10
Denken Sie daran, dass Interviewer häufig nicht aufgrund ihrer technischen Fähigkeiten ausgewählt werden, sondern aufgrund ihrer Fähigkeit, die Kommunikationstalente des Interviewpartners einzuschätzen. Technische Fähigkeiten lassen sich leicht einschätzen, die Fähigkeit, produktiv und teamfähig zu sein, nicht. Klingt für mich, als hätten Sie reichlich Gelegenheit, Ihre Sichtweise anzupassen und Ihre Beharrlichkeit zu erklären, dies nicht zu tun, aber auch nicht zu bewerkstelligen. Das ist nicht gut gelaufen.
Hans Passant

Antworten:


82

Nein. Und Sie sollten Ihren Glückssternen danken, dass Sie von dieser bestimmten Kugel vermisst wurden. Für Menschen zu arbeiten, die sich weigern zuzugeben, dass sie möglicherweise nicht alles wissen und nicht von anderen lernen, ist eine SEHR unangenehme Erfahrung.


7
Genauer gesagt funktioniert das Bewerbungsgespräch in beide Richtungen. Während das Unternehmen mich als Arbeitnehmer beurteilt, verurteile ich sie als Arbeitgeber. Viele werden als mangelhaft empfunden.
NUR MEINE STELLUNGNAHME

Tatsächlich. Während meines Telefoninterviews für eine Position vor ein paar Tagen fragte der Interviewer nach einem Beispiel für etwas, das das Wissen von jemandem demonstrieren würde, der mit der von ihm verwendeten Sprache vertraut ist. Eine Frage dazu wurde in letzter Minute zum persönlichen Interview hinzugefügt. Ich kenne diese Jungs und ich weiß, dass sie großartige Entwickler sind, also denke ich, dass ich mit ihnen arbeiten möchte. :)
greyfade

49

Beispiel einer rein virtuellen Funktion mit einer Definition:

// 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
Dies ist nicht nur ein Beispiel für eine rein virtuelle Funktion mit einer Definition, sondern ein Beispiel dafür, wie sie tatsächlich nützlich sein kann. +1.
j_random_hacker

3
Ich wusste nicht, dass du das machen kannst. Cool! = D
gablin

2
Auf diese Weise können Sie ein polymorphes Basisobjekt erstellen. Sie können es dann zum dynamischen Weiterleiten der Hierarchie verwenden. Nützlich unter bestimmten Umständen, z. B. bei Plugins, um zu überprüfen, ob das Plugin vom erwarteten Typ ist (vorausgesetzt, es wird definitiv von Ihrer Basisklasse abgeleitet). Übrigens MUSS ein reiner virtueller Destruktor eine Definition erhalten.
CashCow

Wenn es nur auch noch trivial sein könnte, wäre das schön.
Deduplizierer

42

Es geht nicht um technische Korrektheit, sondern um soziale / kommunikative Fähigkeiten. Stehe fest, aber nimm den Standpunkt des Interviewers zur Kenntnis und erlaube ihm, das Gesicht zu wahren.

Sobald Sie sehen, wonach er gefischt hat ("rein?" Ist ein guter Hinweis), könnte eine gute Antwort lauten:

Es wird allgemein angenommen, dass rein virtuelle Funktionen keine Definition haben können. Technisch gesehen muss eine virtuelle Funktion jedoch =0in der Deklaration enthalten sein, damit sie rein ist . Es kann immer noch eine Definition haben (versuchen Sie es, es wird kompiliert!). Natürlich wird dies selten verwendet, und in der Praxis implizieren die meisten Leute, wenn sie "rein virtuell" sagen, dass die Definition fehlt.


3
Du hast meinen Kommentar im Grunde genommen 25 Minuten lang kopiert. bevor ich es geschrieben habe! Wie? - +1 und ähnlicher Kommentar gelöscht.
Steve314

3
Das ist ein weiterer guter Punkt. Ich habe meine Note einmal für einen Test gestritten, weil ich meinem Professor gezeigt habe, dass der Code, den ich für den Test geschrieben habe, kompiliert werden würde. Der Compiler lügt nicht ... je ...
jmort253

3
Das war genau mein Gedanke. Wenn ich nur "Ja, das kann ich" sage, scheint mir klar zu sein, dass der Interviewer dachte, er verstehe die Frage nicht. Indem Sie die Antwort erweitern, stellen Sie klar, dass Sie a) die Frage verstehen und b) die Antwort tatsächlich kennen. Ich glaube nicht, dass der Interviewer notwendigerweise im Unrecht war, wenn er versuchte, den Punkt auszudrücken. Es ist eindeutig ein weit verbreitetes Missverständnis, dass die Leute glauben, dass reine virtuelle Funktionen keine Definition haben können.
Dean Harding

10
@Steve Sie Zeitreise ab 500 Wiederholungen erhalten, müssen Sie die Benachrichtigung verpasst haben
Pekka unterstützt GoFundMonica

Vor ein paar Jahren habe ich in einem C ++ - Interview (für ein Hochleistungssystem) erklärt, dass die Verwendung eines Funktionsobjekts aufgrund von Inlining eine bessere Leistung als die Verwendung eines Funktionszeigers haben kann, und ihm dies erklärt. Ich habe auch das Buch "Effective C ++" zitiert. Er stand auf, um das Buch zu lesen und sagte, er wisse das nicht und sei beeindruckt. Es ist gut, Ihre Antwort zu erklären.
Softveda

10

Sie hätten erklären können, wie eine rein virtuelle Funktion mit einer Implementierung deklariert wird.

Ich wünschte, Sie wären hier, weil ich auch nicht mit der Vorgehensweise vertraut bin.


5
Sie deklarieren die Funktion einfach als rein virtuell und stellen dann eine Implementierung bereit. Es ist eine ziemlich ungewöhnliche Praxis, dies zu tun, aber in "Effective C ++, 3rd Edition" beschreibt Scott Meyers einige Szenarien, in denen es nützlich ist. Da es sich bei der Funktion um eine rein virtuelle Funktion handelt, ist die Klasse, in der sie deklariert ist, abstrakt. Da sie jedoch eine Implementierung enthält, gibt sie den Unterklassen eine Standardimplementierung, die sie bei Bedarf explizit verwenden können.

1
Nun, das erklärt nicht, wie es gemacht wird. Wenn jemand interessiert ist, schauen Sie unter en.wikipedia.org/wiki/… nach . Auf jeden Fall denke ich immer noch, dass es die beste Antwort gewesen wäre, zu erklären, wie es geht.

1
+1 - und ich schließe deine zweite Zeile an. Schlimmer noch, wenn ich nicht in einer außergewöhnlichen "aber manchmal falschen" Stimmung war, hätte ich mich auf die Seite des Interviewers gestellt. Das Problem ist, dass Sie Ihre Überzeugungen nur bis zu einem gewissen Grad erraten können, oder dass Sie letztendlich nichts wissen.
Steve314

1
@ Steve314: Heh, ich finde, je älter ich werde, desto offener bin ich für Irrtümer. Es gibt immer jemanden, der mehr weiß als ich. :-)

@Jonathon - ja, aber ohne einen 100% genauen Hinweis darauf, wie sicher ich bei all meinen verschiedenen Meinungen sein sollte, woher weiß ich, welche ich hinterfragen soll? Und offen zu sein für Unrecht, heißt das, dass ich immer davon ausgehen sollte, dass andere Menschen Recht haben und ich mich irre? Gelegentlich können wir alle zuversichtlich sein und uns dennoch irren. Aber heißt das, wir sollten niemals unser Vertrauen bekräftigen? Und wenn mein Selbstvertrauen nicht mein Anhaltspunkt dafür sein sollte, ob ich mich an meine Waffen halte, bis ich starke Beweise sehe, was sollte ich tun?
Steve314

6

Wenn ich einen Kandidaten interviewe, schaue ich oft, wie die Person mit Unsicherheit umgeht oder mit Konfrontation umgeht. Seien Sie das nächste Mal, wenn Sie ein Interview führen, sensibel und versuchen Sie, die Frage konstruktiv zu beantworten oder Ihre Position zu erläutern. Das ist vielleicht wichtiger als die richtige Antwort.


Das ist eine großartige Antwort.
Neil G

+1: So interviewe ich. Es geht mir mehr darum, wie wir interagieren und Gedanken austauschen, mehr darum, was richtig ist und was nicht. Erläutern Sie Ihre Position und / oder die Gründe dafür und Sie zeigen, dass Sie nicht nur kompetent sind, sondern auch ein "Teamplayer".
Mumie

Ein weiteres +1: Ich denke, es ist wichtig, Leute einzustellen, die gut argumentieren können . Wenn ein neuer Mitarbeiter nicht für seine Ideen eintreten kann, kommt er im Team mit anderen willensstarken Leuten nicht weit!
Zan Lynx

5

Ich war in Interviews, in denen ich mehr wusste als mein Interviewer. Sie wollten jedoch, dass jemand eine Rolle ausfüllt, und hatten (natürlich) niemanden, der auf dieser Ebene interviewen konnte.

Haben Sie in Ihrem Fall das Gefühl, dass es sich um blinde Ignoranz oder echtes Missverständnis handelte? Vielleicht eine Folge-E-Mail mit Beispielen und Referenzen: Sehen Sie, wie sie reagieren, bevor Sie sich entscheiden.

Ich tendiere zur "blinden Ignoranz", obwohl ich mich auf Ihre Frage stütze und klar bleiben würde ...


Der Interviewer hat nur diese Frage gestellt und mich rausgeschickt. Ich kann sie nicht kontaktieren, da ich keine E-Mail-ID habe.
bjskishore123

@ bjskishore123: über agentur? Ich würde jedoch wegbleiben, wenn es so wäre ...
gbn

ja, durch beratung.
bjskishore123

+1 Es ist eine gemeinsame Erfahrung. Ich hatte nur einmal ein Interview mit jemandem, der genug wusste, um meine Fähigkeiten richtig zu überprüfen.
Orbling

3

In einer solchen Situation würde ich vorschlagen, eine einfache Klasse mit einer virtuellen Funktion mit einem Körper zu schreiben und zu prüfen, ob diese kompiliert wird. Zumindest würde ich vorschlagen, das Thema zu googeln.

Wenn der Interviewer die Herausforderung annimmt, eine Niederlage zugibt und danach nicht so aussieht, als würde er Sie erwürgen, sollten Sie in guter Verfassung sein. Andernfalls ist dies wahrscheinlich nicht die Person, mit der Sie arbeiten möchten.


3

Ich bin völlig anderer Meinung als der Gedanke, dass Sie ein Unternehmen aufgeben sollten, weil der befragte Mann die Antwort auf seine Frage nicht kennt. Selbst wenn du arbeitest, triffst du Leute, die hartnäckig sind, auch wenn sie falsch liegen. Es ist eine gute Fähigkeit, Menschen zur richtigen Antwort zu manövrieren.

In meinem Fall fragte der Interviewer, wie die Varianz vieler Zahlen auf vielen Maschinen berechnet werden soll. Zunächst sagte ich, dass die Varianz der Mittelwert der Quadrate minus dem Quadrat der Mittelwerte ist. Er warf ein: "Nein, das ist es E[(x - mu)²]."

Ich sagte: "Ja, du hast recht. Aber deine Formel ist die gleiche wie meine. Lass es uns gemeinsam ableiten." Und dann haben wir es zusammen abgeleitet.

Wenn Sie in Ihrer Situation feststellen, dass der Interviewer ungläubig ist, müssen Sie Ihren Ansatz ändern. Sagen Sie ihm, dass es sich um eine selten bekannte Funktion handelt (damit Sie weniger als Besserwisser erscheinen). Wenn er möchte, senden Sie ihm nach dem Interview ein Beispielprogramm oder einen Verweis auf ein C ++ - Buch damit sich das interview anmutig weiterentwickeln kann.)

Versuchen Sie sich Dinge aus seiner Perspektive vorzustellen. Du wirst eines Tages Leute interviewen und manchmal liegst du falsch. Wie soll ein glänzender Kandidat eine solche Frage beantworten?


Der Mittelwert ist E [(x - mu) ²], obwohl Sie das wahrscheinlich gemeint haben. Man kann also auswerten, dass E [x² - 2xmu + mu²] = E [x²] - E [2xmu - 2mu²] - E [mu²] E [(x-mu)] immer 0 ist und E [mu²] = mu² ist mu ist eine so bewiesene Konstante.
CashCow

2

Ich denke, Sie hätten das Interview vom Schreibtisch auf einen Computer mit einem Compiler verschieben sollen. Das hätte das Problem gelöst.


1

EDIT: anscheinend irre ich mich total, siehe Kommentare unter dieser Antwort. Lassen Sie die Antwort hier für pädagogische Zwecke.

Leider irren Sie sich. Eine virtuelle Funktion kann eine Definition haben. eine rein virtuelle funktion darf das nicht. Das Fehlen einer Definition macht es rein.


8
Nein Entschuldigung. Er hat recht.
GManNickG

1
BZZT !!! Falsch! Die = 0 macht es rein. Solche Funktionen können Definitionen haben.
Edward Strange

4
huh, färbe mich überrascht. Ich habe das nie gewusst.
Philip Potter

3
Wikipedia erklärt: "Obwohl rein virtuelle Methoden in der Regel keine Implementierung in der Klasse haben, in der sie deklariert werden, dürfen rein virtuelle Methoden in C ++ eine Implementierung in ihrer deklarierenden Klasse enthalten. Dies bietet Ausweich- oder Standardverhalten, an das eine abgeleitete Klasse gegebenenfalls delegieren kann. " Auch wenn es ungewöhnlich oder untypisch ist, dass eine reine virtuelle Funktion ihre Implementierung definiert, ist dies möglich.
Cody Grey

1

Sie wissen, dass alles, was Sie beantwortet haben, richtig ist. Meiner Meinung nach haben Sie gute Arbeit geleistet, indem Sie sich an Ihre Antwort gehalten haben, da Sie Recht hatten. Es gibt keinen Grund zu lügen, denn wenn nicht heute, wird ein anderer Interviewer etwas über reine virtuelle Funktionen lernen !!!! Sind Sie derjenige, der sich leicht hinreißen lässt? Es besteht kein Grund, die Hoffnung zu verlieren, da Sie Ihr Recht kennen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.