Ist „Erklären Sie die RAII-Sprache“ eine gute C ++ - Screening-Frage? [geschlossen]


13

Eine Firma, mit der ich zusammenarbeite, hat mich gebeten, telefonische Überprüfungen durchzuführen, um sicherzustellen, dass sie sich nicht völlig schämen, wenn sie jemanden an einen potenziellen Kunden senden.

Es stellte sich heraus, dass eine ganze Reihe von Mitarbeitern für eine C ++ - Entwicklerrolle eingestellt wurden. Ich verbringe nicht viel Zeit in C ++, aber ich habe ein paar triviale und nicht-triviale Projekte in der Sprache gemacht. Ich dachte mir, dass "Erklären Sie die RAII-Sprache" eine nette Softball-Frage sein würde, die die meisten ernsthaften C ++ - Entwickler im Halbschlaf beantworten könnten, und es mir ermöglichen würde, auf interessantere Fragen zur Erfahrung überzugehen. Es stellt sich jedoch heraus, dass Personen mit mehr als 10 Jahren C ++ - Erfahrung den Begriff nicht erkennen, auch wenn ich das Akronym auf "Ressourcenbeschaffung ist Initialisierung" erweitere. Ein Kandidat meinte sogar, es sei nicht immer praktikabel, die Technik in der Windows-Entwicklung anzuwenden, was ich als merkwürdig empfand, aber ich konnte ein paar Beispiele sehen, die diesen Gedankengang wohl unterstützen.).

Selbst ein paar C ++ - Entwickler, die ich gut genug kenne, um ihre Kompetenz beurteilen zu können, sagten, sie hätten den Begriff nicht erkannt, aber als sie eine Zusammenfassung der Technik lasen, sagten sie: "Oh ja, ich wusste nicht, dass das einen Namen hat. Ich nur dachte an diese Dinge als etwas, was du nur tun musst . " Ich erinnere mich an den Begriff aus der zweiten Ausgabe von Stroustrups Buch, obwohl die volle Wirkung zu dieser Zeit nicht einsank.

Also, ist "Kannst du mir die RAII-Redewendung erklären?" eine faire Screening-Frage? Ist es vernünftig zu erwarten, dass alle kompetenten C ++ - Entwickler es verstehen? Ist der Begriff esoterischer als ich denken würde? Angenommen, ein Kandidat kennt den Begriff nicht, gibt es Anschlussfragen, die mir helfen könnten, herauszufinden, ob er die Praktiken, die RAII funktionieren lassen, zumindest verinnerlicht hat? Gibt es bessere alternative "Unkraut" -Fragen, die dem Kandidaten einen gewissen Spielraum bei der Beantwortung geben und ihm helfen, sein Verständnis der C ++ - Entwicklung zu demonstrieren?

Bearbeiten zum Hinzufügen : Um das zu verdeutlichen, bin ich kein Interviewer, der Leute disqualifiziert, weil sie keine Schlagworte und Akronyme kennen. Ich halte es jedoch für vernünftig zu erwarten, dass ein erfahrener C ++ - Programmierer bewährte Methoden für das Ressourcenmanagement verinnerlicht hat. Ich denke auch, dass es wichtig ist, zu überprüfen, ob ein Kandidat einige "Grundlagen" über die Technologie versteht, in der er Fachkenntnisse besitzt, bevor er zu interessanteren Fragen über Design, Problemlösung usw. übergeht. Ich denke, was ich suche, ist ein guter Weg eine offene Frage zu stellen, die für ein kurzes Telefon-Screening geeignet ist und die ich verwenden kann, um das grundlegende Verständnis eines Kandidaten für gute Ressourcenmanagement-Praktiken in C ++ zu beurteilen, bevor ich "harte" Fragen stelle.


3
"Selbst ein paar C ++ - Entwickler, die ich gut genug kenne, um ihre Kompetenz einzuschätzen, sagten, sie hätten den Begriff nicht erkannt". Okay. "Kannst du mir das RAII-Idiom erklären? Eine faire Screening-Frage?" Warum fragst du? Sie konnten keine Leute finden, die davon wussten. Was müssen Sie noch wissen, was Sie noch nicht wissen? Vielleicht solltest du dieses Thema herunterspielen (da du die Antwort bereits kennst) und dich auf "Gibt es bessere alternative" Jägerfragen "konzentrieren, die interessant sein könnten. Abgesehen davon, dass es sich um eine Schießerei handelt, die nicht gut toleriert wird.
S.Lott

9
Redewendungen ändern sich, gute Praxis nicht. Anstatt nach einer bestimmten Redewendung zu fragen, fragen Sie einfach: "Welche Schritte unternehmen Sie beim Entwerfen einer Klasse, um sicherzustellen, dass sie nicht ausläuft?"
Blrfl

Fair genug, obwohl meine Stichprobengröße gering ist und ich mich nicht mehr aktiv in der C ++ - Community engagiere, weiß ich nicht, was die Community heutzutage als grundlegendes Wissen ansieht. Ich versuche im Wesentlichen herauszufinden, wie ich mein Fragenrepertoire erweitern kann, mit dem ich echte C ++ - Kenntnisse beurteilen kann, die über die Grundlagen der Syntax hinausgehen.
JasonTrue

2
Dein Problem ist nicht das, was ich erwartet habe. Ich ging davon aus, dass Sie jemanden finden würden, der weiß, was RAII ist, eingestellt wird und erst später herausfindet, dass er immer noch am Codieren scheiße ist.
Kevin

1
@JasonTrue: Ich denke, Fizz-Buzz-Fragen sind eigentlich Programmierfragen wie das Umkehren eines Strings. Aber trotzdem denke ich, dass es eine gute Frage ist. Sie könnten auch überlegen, welche Funktionen in c ++ - 0x der Befragte für am aufregendsten oder am wichtigsten hält. Es ist ein bisschen schwieriger, aber wenn Sie eine gute Antwort bekommen, bedeutet es wahrscheinlich gute Dinge. Und die Frage kann immer wieder auf "Welche Boost-Bibliotheken sind am wichtigsten / interessantesten" zurückgreifen, wenn Sie einen leeren Blick erhalten.
Kevin

Antworten:


24

Sie scheinen festgestellt zu haben, dass C ++ - Entwickler, von denen Sie aus Erfahrung wissen, dass sie mit diesem Akronym oder sogar dem vollständigen Ausdruck nicht vertraut sind. Dies allein scheint darauf hinzudeuten, dass die Frage während eines Telefongesprächs nicht als Screening-Frage geeignet ist.

Auf der anderen Seite könnten Sie über einen Umweg zum selben Punkt gelangen, indem Sie ein Szenario darstellen. Beispiel: "Sie implementieren eine Log-Klasse, die Protokollierungsinformationen in eine Datei schreibt. Offensichtlich benötigen Sie eine Mitgliedsvariable, die ein Datei-Handle (std :: FILE *) ist. Wo ordnen Sie diese Datei zu und geben sie frei Griff?" Wenn der Kandidat anfängt, über das Erstellen einer open () - und einer close () -Methode zu sprechen, anstatt das Dateihandle im Konstruktor zuzuweisen und das Handle im Destruktor zu lösen, können Sie danach fragen, wie sich die Klasse verhalten würde, wenn die Aufruf von Code ausgelöst Ausnahmen usw.


Ein ausgezeichneter Vorschlag. Ich mag diesen Ansatz.
JasonTrue

Dauert zu lange in einem Telefoninterview.
HelloWorld

15

Ich denke nicht, dass es eine praktische Frage ist, wie sie vorgeschlagen wird. Ich denke, Sie werden feststellen, dass viele Entwickler in das Lager "Oh, ja, ich wusste nicht, dass das einen Namen hat" fallen werden. Ich würde vorschlagen, dass Sie die Kandidaten auf das Konzept und nicht den Namen des Konzepts testen. Geben Sie ihnen ein Codebeispiel und fragen Sie, warum es unvollständig ist, oder lassen Sie sie nachweisen, dass sie das Konzept kennen.


3

Ich halte das für eine berechtigte Frage. Ich weiß zwar nicht, wie beliebt der RAII-Begriff ist (in meinem Team wird der Begriff RAII immer verwendet), aber das Konzept des Ressourcenhandlings ist wichtig, insbesondere, wenn Sie auch ausnahmesichere und Multithread-Sicherheit wünschen .


3

Nun, ich weiß, wenn ich wissen will, ob jemand kompetent ist, überprüfe ich zuerst die Kenntnis der Akronyme. Sobald das festgelegt ist, stelle ich sicher, dass sie die Namen anderer Technologien kennen, die ich für cool halte. Wenn sie danach noch da sind, frage ich sie nach einer Liste ihrer Lieblingsfarben.

Ich kann so etwas nicht ausstehen. Ich meine, am Ende des Interviews sind das Sirenen und Warnglocken. Ich möchte nicht an einem Ort arbeiten, an dem es tatsächlich darauf ankommt, dass ich bizarre Mnemoniken kenne, die mein Chef für "grundlegend" hält. Ich kann mir nicht die Mühe machen, Namen von Leuten zu lernen, mit denen ich mich jahrelang befasst habe, also verschwende ich verdammt noch mal keinen Hirnraum mit niedlichen Akronymen, die Best Practices beschreiben.

Schau dir meinen Code an. Fragen Sie mich, wie ich es machen würde. Ich werde Mist auf ein Whiteboard kritzeln, bis die Kühe nach Hause kommen. Ich codiere dir eine App. Gib mir keine Quatschfragen. Trivia ist immer ein Erfolg oder Miss, und es ist niemals grundlegend.


Ich neige nicht dazu, viele esoterische Wissensfragen in Screening-Interviews zu stellen, aber ich muss ein bisschen Sorgfalt walten lassen, um sicherzustellen, dass jemand nicht völlig inkompetent ist. Dementsprechend bin ich auf der Suche nach einer offenen Frage, die es mir ermöglicht, ein gewisses Maß an Wissen zu überprüfen und gleichzeitig dem Kandidaten zu ermöglichen, seinen eigenen Hintergrund zu zeigen. Ich erwarte "etwas" direktes Wissen, wenn jemand sagt, dass er Technologie X in seinem Lebenslauf kennt; Meine Frage lautet: Welches Wissen sollte ich von einem C ++ - Programmierer erwarten, der ein nützliches Tor für weitere Gespräche ist?
JasonTrue

4
@ Jason: Nun, ich werde mich wahrscheinlich für ein paar Monate an das RAII-Akronym erinnern können. Macht mich dieses kurzlebige Wissen kompetent, obwohl ich C ++ seit Jahren nicht mehr angerührt habe? Es ist kernige Kleinigkeit. Fragen Sie sie, wie sie mit Schlössern umgehen, und stellen Sie sicher, dass sie das tatsächliche WISSEN und nicht das seltsame Akronym verstehen.
Satanicpuppy

1
@ Jason: Ich stimme zu. Ich stimme einfach nicht zu, dass die Grundlagen diese Art von Trivia beinhalten. Ein Idiot könnte es wissen und ein Experte könnte es nicht wissen. Sie stützen Ihren Auswahlprozess auf etwas, das für Ihre Fähigkeiten unerheblich ist.
Satanicpuppy

5
Zu wissen, was RAII heißt, ist kein wesentliches Wissen. Aber automatisch nach dem Muster greifen ist.
btilly

2
RAII ist ein grundlegendes Konzept für gutes C ++, und der Begriff gibt es seit mindestens 20 Jahren. Ich denke, dass es etwas unfair ist, es als Kleinigkeit abzutun. Während es gute C ++ - Entwickler gibt, die den Begriff nicht kennen, riecht es für mich nach jemandem, der sein Handwerk nicht erforscht.
Kaz Dragon

1

Wenn Sie die Inkompetenzen schnell herausfiltern möchten, versuchen Sie Folgendes:

FizzBuzz Test

Dann können Sie C ++ - Konzepte und -Praktiken denjenigen überlassen, die in der Lage sind, C ++ - Fachkenntnisse besser zu bewerten.


1
Ich habe diese Frage häufig verwendet und erhalten und sie oben in meinem Kommentar erwähnt, finde es jedoch unangenehm, sie in einem 25-minütigen Telefongespräch zu stellen.
JasonTrue

0

Es ist eine berechtigte Frage, aber nicht für das Screening. Ich benutzte es als schriftliche Frage, um sie beim Interview zu besprechen. Sie können nach vorheriger Ankündigung viele Einblicke in Denkmuster erhalten. Als Screening-Frage ist es nur eine böse Falle.

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.