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.
Antworten:
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.
quelle
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.
quelle
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 .
quelle
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.
quelle
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.
quelle
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.
quelle