Wie überprüfe oder bewerte ich die Debugging-Fähigkeiten einer Person? [geschlossen]

48

Welche Fähigkeiten bestimmen eine Person, die in der Lage ist, Code mühelos zu debuggen? Vor einiger Zeit führte mein Freund ein Interview mit einem relativ guten Programmierer. Der Programmierer wurde eingestellt. Er konnte guten Code schreiben, die Frameworks und Designmuster verstehen. Was ihm fehlte, war das Debuggen von Fähigkeiten. Er konnte überhaupt nicht debuggen und Probleme mit dem Code seines oder eines anderen zu finden, bereitete ihm große Schmerzen.

Seitdem überlegen wir, wie wir die Debug-Fähigkeiten einer Person einschätzen oder einschätzen können.

Die erste Frage lautet also: Welche Fähigkeiten bestimmen, ob eine Person Software effektiv debuggen kann?

Und die zweite: Wie kann man diese Fähigkeiten während des Interviews testen?

Michal B.
quelle
14
Bei einem Interview wurde mir tatsächlich Code zum Debuggen auf einem Computer gegeben. Sie hatten den Quellcode in tar oder gzip oder so geändert und wollten sehen, wie ich ihn debuggen würde.
wkl
4
Die einzige Möglichkeit, sicher zu sein, besteht darin, ihn oder sie "leben" zu lassen. Lassen Sie ihn oder sie im Voraus wissen, um welche Entwicklungsumgebung es sich handelt und dass es einen einfachen Codierungs- und Debug-Test geben wird.
Es muss nicht einmal live sein, @ ThorbjørnRavnAndersen. Ich habe an einigen Stellen ein Interview geführt, in dem mir ein Ausdruck einer kleinen Funktion zusammen mit einer Beschreibung der Funktionsweise dieser Funktion ausgehändigt wurde, und mich dann aufgefordert, "den Fehler zu finden".
Quanticle
@quanticle Auch hier gibt mein Unternehmen einen 5-Fragen-Programmiertest (etwa die Hälfte davon ist Debugging-Test) aus, bevor Sie für ein persönliches Interview in Betracht gezogen werden. Anscheinend
beseitigt
Geben Sie ihm einen Stack-Trace zur Analyse :-)
JustMe

Antworten:

24

Wenn die Person als Erstes den Code überprüfen und ihn mit einem Debugger durchgehen möchte, ist diese Person keine großartige Fehlerbehebung.

Wenn Sie noch keinen Aktionsplan haben und in den Debugger-Blind eintauchen, sind Sie im Grunde ein Ostereier. Dies gilt für jede Art der Fehlerbehebung.

In einer Interview-Situation ist eine Person, die fragt, wie das System funktioniert, und nach der Geschichte des Systems fragt, möglicherweise eine gute Problemlösung. Eine Person, die zuerst an das System und dann an die Mechanik denkt, könnte ein guter Ratgeber sein.

Dies gilt für jedes komplexe System.

ElGringoGrande
quelle
1
+1 für eine gute Perspektive auf diese. Ich bin damit einverstanden, aber wenn sie Mechaniker als Zweites denken, sind sie jetzt besser in der Lage, die Werkzeuge zu verwenden. Genau wie in Autos ist ein Ingenieur, der Mechanikerwerkzeuge nicht versteht oder nicht benutzen kann, überhaupt kein qualifizierter Ingenieur.
maple_shaft
16
Diese Antwort lässt keinen Raum für instinktives Debuggen. Jemand, der mit genügend Systemen, Codetypen oder Sprachen gearbeitet hat, kann sich oft in Richtung auf alles "riechen", was flippig ist. Manchmal müssen Sie die Vor- und Nachteile des Systems nicht kennen, um seine Fehler zu finden.
Jordanien
Erstens gibt es kein "instinktives Debuggen". Es gibt Heuristiken (auch "gebrochene Beine" genannt), die von Experten verwendet werden. So sicher. Wenn Heuristiken verfügbar sind, werden sie von Experten effektiv eingesetzt. Aber diese Heuristiken können diese Experten in den Hintern beißen. Werfen Sie einen Blick auf die zahlreichen Arbeiten, die an Experten der kognitiven Psychologie durchgeführt wurden, und Sie werden sehen. Ein guter Experte hat vielleicht gute Ideen, wo er anfangen soll, aber er sollte sich niemals vollständig auf diese Bauchgefühle verlassen. Und sie sollten zumindest teilweise in der Lage sein, diese Bauchgefühle zu erklären.
ElGringoGrande
10
Ich muss zu 100% mit Ihrem Schwarz-Weiß-Bild nicht einverstanden sein, wenn sie als erstes einen Kommentar abgeben. Ich würde sagen, wenn eine Person der Meinung ist, dass das Starten des Debuggers in einigen Fällen keine gute erste Option ist, ist diese Person auch keine gute Fehlerbehebung. Wenn das Problem darin besteht, dass die Kommunikation unterbrochen wurde, starte ich zuerst den Debugger und finde heraus, welche Prozesse / Threads / Tasks blockiert sind oder nicht mehr funktionieren. Ein weiterer Grund für das Starten des Debuggers besteht darin, zu prüfen, ob das Problem reproduzierbar ist. Sobald Sie wissen, wie Sie das System kaputt machen können, wird es viel einfacher, die Lösung zu finden.
Dunk
5
@ElGringoGrande er schlug das Gegenteil von dem vor, was ich lese. Der Punkt ist, dass die Leute das Debuggen von Natur aus besser können, wenn sie erfahrener werden. Die Tools oder Methoden sind nicht so wichtig wie die Effektivität. Deshalb ist Ihre Antwort unvollständig. Es gibt viele gültige Möglichkeiten zum Debuggen, z. B. einen Stuhl hochziehen, den Code durchgehen, Fragen stellen usw. Ich habe große PHP-Programme effektiv mit print getestet. Ich mag es nicht, aber es geht nicht so sehr um das Tool, sondern darum, wie Systeme im Allgemeinen funktionieren.
Jordanien
15

Ich würde argumentieren, dass das beste Maß für einen guten Softwareentwickler in einer bestimmten Sprache oder einem bestimmten Framework die Fähigkeit ist, komplexe Probleme kritisch zu analysieren und über gute Debugging-Fähigkeiten in der Sprache oder im Framework zu verfügen. Sie müssen in der Lage sein, Low-Level-Debugging sowie Kenntnisse im High-Level-Debugging mit gängigen Debugging-Tools nachzuweisen.

Dies bedeutet, dass ein Szenario für sie erstellt wird, das eine hohe Eignung für Debugging-Tools in der von ihnen gewählten IDE aufweist. Sie sollten nach Dingen suchen wie:

  • Ausführen einer Sandbox-Anwendung oder eines Servers im Debug-Modus oder Erstellen einer Anwendung mit Symbolen zum Debuggen

  • Bereitstellung und Demonstration von Remote-Debugging-Ports oder Debugging von Anwendungen ohne Sandbox, die mit Symbolen erstellt wurden (falls für die Sprache zutreffend)

  • Strategische Verwendung von Haltepunkten

  • Angepasste Eigenschaften von Haltepunkten, bedingte Ausdrücke für Haltepunkte (falls für die Sprache zutreffend)

  • Verwendung von Ausdrücken oder Variablenüberwachungen zur Überwachung von Variablenwerten oder Referenzen

  • Verwendung von Ad-hoc-Variablenwerten oder Referenz- oder Zeigermanipulation in Echtzeit

  • Demonstrieren Sie die Fähigkeit, den Anwendungsfluss zu betreten, zu überschreiten und zu verlassen

  • Kritische Bewertung des Aufrufstapels

  • Multithread-Anwendungen debuggen und verstehen.

Es sollten auch andere Debugging-Strategien ohne Tools demonstriert werden, z. B. das Analysieren von Protokollen und Quellcode sowie die Möglichkeit, ein Debugging auf niedriger Ebene auch ohne die Verwendung einer IDE durchzuführen.

maple_shaft
quelle
+1 ziemlich hilfreiche Liste. Und mehr angewendet.
Dipan Mehta
8
Ich bin der Meinung, dass das Debuggen von Multithread-Anwendungen eine völlig andere Realität ist als das Debuggen von Singlethread-Anwendungen. Anders und viel, viel schwieriger.
Bruce Ediger
20
@JarrodRoberson Brian Kernighan und Rob Pike haben in The Practice of Programming geschrieben, dass sie Print-Anweisungen immer noch den Debuggern vorziehen, weil sie weniger flüchtig sind. Viele Leute bevorzugen ein gutes Protokollierungssystem, das ihnen eine detaillierte Sicht auf den Codepfad gibt, ohne das Programm mittelfristig anzuhalten. Es ist auch einfacher, eine Protokolldatei zu lesen, als einen Core-Dump zu debuggen. Ihr Lackmus-Test kann also einige gute Programmierer ablehnen, da nicht jeder zustimmt, dass Debugger genauso nützlich sind wie alternative Debugging-Ansätze (Protokolle, Unit-Tests, Behauptungen)
MetricSystem
12
Debug-Druckanweisungen sind in Ordnung und können einem Debugger vorzuziehen sein, insbesondere wenn es um Parallelität geht. Ihr Problem mit ihnen könnte wirklich mit einem langsamen Compiler sein.
Ricky Clarkson
8

Ich würde sagen, Sie destillieren einen Fehler, den Sie in Ihrem System hatten, zu etwas, das im Rahmen eines Interviews besprochen werden kann. Starten Sie den Debugger und lassen Sie ihn dran.

Michael Brown
quelle
7

Stellen Sie ihm Fragen wie diese:

  1. Wie gehen Sie ein Problem an?

  2. Was ist eines der komplexen Projekte, die Sie durchgeführt haben und wie haben Sie es erreicht?

  3. Welche Debugging-Tools haben Sie verwendet?

  4. Haben Sie eine Präferenz für bestimmte Werkzeuge?

  5. Geben Sie ein Beispiel für Ihr eigenes Szenario und fragen Sie ihn, wie er es angehen wird.

  6. Wie würden Sie Ihre Fähigkeit bewerten, in einen anderen Code zu gelangen?

Sie können auf Ihre Bedenken eingehen, indem Sie Fragen stellen. Es besteht immer das Risiko, dass er in bestimmten Fähigkeiten gut oder schlecht ist. Aber wenn er gut lernt, hilft das sehr.

Noname
quelle
6

Wenn Sie sehen möchten, ob ein Programmierer debuggen kann, geben Sie ihm den zu korrigierenden Code. Es ist der gleiche Ansatz, wenn Sie sehen möchten, ob sie Code schreiben können. Geben Sie ihnen ein Problem und lassen Sie sie Code schreiben.

Jetzt bin ich verwirrt über diesen Programmierer, der keine Probleme beim Schreiben von Code hat, aber bei der Aufforderung zum Debuggen kläglich versagt. Bringt diese Person Codebeispiele wieder zum Erbrechen oder hält sie sich nur an Bereiche, in denen sie Erfahrungen mit dem Lesen und Schreiben in einer Datenbank hat? Wenn sie den Code nicht gleich beim ersten Mal richtig verstanden haben, können sie ihn nicht reparieren?

Vielleicht mag die Person das Debuggen einfach nicht und unternimmt keine Anstrengungen? Ich bin nicht gut darin, also hör auf, mich darum zu bitten - erlernte Hilflosigkeit.

Wenn Sie an einer vorhandenen Codebasis arbeiten möchten, müssen Sie den Code und die Dokumentation durchsehen und möglicherweise eigene Notizen und Entwürfe anfertigen.

Ich weiß, dass wir das Debuggen als Beheben von Produktionscode betrachten, der fehlgeschlagen ist, aber ich muss den Code beim Schreiben debuggen. Entweder ist diese Person kein sehr guter Programmierer, oder sie zieht es einfach vor, neuen Code zu schreiben. Tun wir das nicht alle?

JeffO
quelle
2
Wir alle debuggen unsere Programme. Am Anfang ist es einfach, weil das Programm klein ist und es einfach ist, alles im Kopf zu haben. Aber wenn es wächst und komplexer wird, wird das Debuggen schwieriger. Und jetzt - einige Leute können immer noch damit umgehen und finden einen Fehler in angemessener Zeit und einige Leute sind einfach verloren. Sie wissen nicht, wo sie sich konzentrieren sollen und wie sie
Michal B.
1
@MichalB .: Wir alle debuggen unsere Programme, aber einige Leute werden einen prinzipiellen Ansatz zeigen, während andere nur zufällig Dinge optimieren und sehen, was passiert .
Matthieu M.
Ich verstehe nicht, warum Sie verwirrt wären. Ein guter Entwickler und ein guter Betreuer zu sein, sind sehr unterschiedliche Fähigkeiten. Bestenfalls sind die meisten Leute nur in der einen oder der anderen geschult, wenn sie überhaupt geschult sind (was leider die Mehrheit der Entwickler abdeckt).
Dunk
3

Auf die gleiche Weise würden Sie die Codierungsfähigkeit einer Person bestimmen und ihnen Fragen zum Debuggen stellen.

Fragen Sie sie, "wie" sie einen Fehler in einer bestimmten Situation aufspüren würden.

Gehen Sie noch einen Schritt weiter, setzen Sie sich vor einen Computer und beobachten Sie, wie sie ein Problem beheben.

ozz
quelle
3

Ich habe Kandidaten oft hypothetische Situationen gegeben ... zum Beispiel reagiert ein Produktionssystem nicht mehr. Wie geht's? Sie antworten möglicherweise auf "Überprüfen Sie die Protokolle" und ich sage "Die Protokolle zeigen nichts Ungewöhnliches an, mit der Ausnahme, dass seit dem Auftreten des Problems nichts darauf geschrieben ist". Und so geht es weiter, bis ich zufrieden bin, dass ich die Fähigkeit der Kandidaten zur Problemlösung eingeschätzt habe.

James Roper
quelle
2

Normalerweise sind Menschen mit guten Fähigkeiten auch diejenigen mit guten Debugging-Fähigkeiten.

Während des Interviews können Sie ihnen (abhängig von ihrem Dienstalter) eine Art Puzzle zuweisen, wie zum Beispiel einen Algorithmus oder so. Das ist der einfache Weg.

Wenn Sie können, können Sie einen Code ausdrucken, indem Sie die Person fragen, ob hier etwas nicht stimmt und wie Sie es beheben können.

Ich ziehe es nicht ganz vor, verschleierte Interviewfragen zu stellen, bei denen die Fähigkeit der Leute, die Syntax zu lesen und zu korrigieren, im Vordergrund steht.

Dipan Mehta
quelle
+1 Tolle Antwort! Ich bin damit einverstanden, dass die besten Softwareentwickler über gute Debugging-Fähigkeiten verfügen, und ich bin auch der Meinung, dass das Erkennen von Syntaxfehlern nicht viel beweist. Die meisten IDEs und sogar einige gute Texteditoren (Notepad ++) erkennen Syntaxfehler in gängigen Sprachen. Ich bin jedoch anderer Meinung, dass ein Puzzle die Fähigkeit zum Debuggen demonstriert. Puzzles demonstrieren kritisches Denken, das eine andere, aber verwandte Fähigkeit ist.
maple_shaft
@maple_shaft danke für (noch ein +1). Richtig, Rätsel sind nicht direkt mit dem Debuggen verbunden . Aber es ist gut zu beurteilen, wie Menschen an Probleme herangehen - eine indirekte Sache.
Dipan Mehta
2
Ich schaue auf Puzzle und ich bin wie Ewwwwwwww. Sie haben wirklich nichts Besseres als "Gotcha" Zeug? und wie kommt "seniorität" ins bild? sollen ältere ppl schwierigere rätsel lösen? Sind alle guten Programmierer (oder Debugger) ein Fan von Sudoku? Sie könnten am Ende einige wirklich gute Programmierer nerven und Sie in der ganzen Stadt schlecht reden. gotcha Fragen sind eine Beleidigung <Punkt>, bitte kommen Sie mit etwas Besserem Männer.
Chani
@Scrooge Ich meinte es nur als Programmierpuzzlespiel - ich habe noch nie Sudoku mit hunderten von Interviews gespielt, die ich gemacht habe.
Dipan Mehta
2

Bitten Sie sie während eines Interviews, Ihnen von einem Fehler zu erzählen, den sie in der Vergangenheit behoben haben, und von den Schritten, die sie beim Debuggen verwendet haben.

Lassen Sie sich von ihnen erzählen, was sie in ihrer letzten Arbeit getan haben, welche Hausaufgaben sie gemacht haben usw. und was sie durchgemacht haben, um das Problem zu finden.

Schleis
quelle
2

Ich werde eine Erfahrung zusammen mit einer Rekrutenperspektive über den Test der Fähigkeiten eines Kandidaten beim Debuggen teilen. Ich bekam ein Interview, das drei Phasen hatte. Die zweite Stufe war ein "praktischer Fall". Mehr wusste ich in diesem Moment nicht. Als ich dort informiert wurde, gab es ein System, das nicht mehr funktionierte und sie wissen es nicht. Einige Bugs liegen dahinter.

Es wurde als Remote-Desktop für eine alte Testumgebung eingerichtet. Möglicherweise in einer nicht angeschlossenen oder isolierten Umgebung. Das Projekt bestand aus einigen Webformularen mit einigen ASP.NET-Steuerelementen und zugehörigem Code-Datei-Code. Das Codefile bezog sich auf eine Art Business-Schicht, für die ich nur eine DLL, keinen Quellcode und Methodenbeschreibungen habe. Die Webforms haben die CRUD-Funktionen ausgeführt, die Sie erwarten können. Auch eine kleine Suchfunktion. Die Business-Schicht sprach wiederum mit Views und SP auf einem SQL Server.

Sie haben einige Teile auf verschiedenen Ebenen zerbrochen. Ich bekam eine Arbeit mit Symptomen. "Suche nicht möglich" "Das Feld 'Region' ist nach der letzten Aktualisierung verschwunden" und so weiter. Wie Sie von Ihren Nutzern erhalten können.

Ich erinnere mich nicht an alle Details, aber zumindest ein Tabellenfeld wurde umbenannt, was zu einem defekten SP führte, der von der Suchfunktion verwendet wurde. Das bedeutet, dass kein Fehler in VS und kein BL-Quellcode zum Verfolgen von Feldnamen vorliegt. Ein SELECT-Parameter für Sqlcommand wurde falsch geschrieben und führte zu einer Fehlfunktion eines Webformulars. Es wurde auch ein Feld weggelassen, bei dem es sich um das fehlende Feld in GridView (Autogeneratecolumns) handelte. Eine ASP.NET-Schaltfläche wurde auf etwas verwiesen, das als duplizierte, erweiterte Methode gedacht sein muss und "vergessen" hat, die Schaltfläche auf eine neue Methode zu verweisen.

Auch solche Kleinigkeiten, die title in einem HTML-Tag verwenden, lassen dies nicht zu. Das gegenüberliegende ALT-Tag wurde in einem Steuerelement, das es benötigte, ebenfalls weggelassen. Es gab auch einige Fehler mit unkorrekten geschlossenen HTML-Tags, die jedoch keine Fehlfunktion zeigten. Ich bin mir nicht sicher, ob all das ein reiner Spielhaus-Projektfehler oder vielleicht dasselbe Projekt für verschiedene Rekrutierungen war. Ich habe nie gefragt. Der Schwierigkeitsgrad sollte natürlich den Bedürfnissen des Rekruten entsprechen.

Ein solcher Test sollte wahrscheinlich überprüft (nicht befolgt) werden, um nach dem Interview zu sehen, wie das Debuggen durchgeführt wurde. Für mich selbst in diesem Stadium fand ich den Test ein wenig lächerlich, aber das wäre auch der große Punkt. Wenn es war oder nicht, sollte es viel wert sein, den Kandidaten an der richtigen Stelle zu haben.

* Ich denke , dass Test der Kandidaten / meine Fähigkeiten * bewiesen wurde
* Analyse einer fremden System
* Verwenden Sie eine minimale Informations Fehler und Fehler zu finden
* Unter Zeitstress und ohne dass jemand helfen Ihnen, Code angenommen Korrekturen Auf
verschiedenen Ebenen des Wissens *;
** SQL-Datenbank und gespeicherte Prozeduren,
** Verwendung von DLL im Projekt,
** ASP.NET-Technik,
** geschichtete Architektur
** problemorientierter Aspekt

Aber auch die offensichtlicheren Dinge wie der Umgang mit der Entwicklerumgebung finden und verstehen das Db Server Management Tool. Sicherlich gibt es Kandidaten, die auf dem Papier wirklich gut aussehen, sich aber in der Praxis an solchen Aufgaben festhalten könnten.

Unabhängig
quelle
2

Ich wähle ein tatsächliches Problem aus, das für die Position relevant ist, und präsentiere es dem Kandidaten so, wie es mir präsentiert wurde. Natürlich biete ich ihnen einige allgemeine Hintergrundinformationen und eine kleine Menge relevanter Dokumentationen wie einen Codeausschnitt oder ein schematisches Diagramm.

Ich sage ihnen, dass es ihre Aufgabe ist, das Problem zu lösen, und ich biete ihnen an, alle technischen Fragen zu beantworten und ihnen das Ergebnis aller Experimente mitzuteilen, die sie durchführen möchten. Wenn sie sagen: "Ich würde hier eine Zielfernrohrsonde einsetzen", skizziere ich ihnen eine Spur dessen, was sie finden könnten. Wenn sie ein printfin eine Schleife einfügen wollen, werde ich ihnen sagen, dass es niemals herauskommt (!) Oder zuerst "7" und dann wiederholt "5" ausgeben. Wenn sie so weit vom Unkraut entfernt sind, dass ich keine aussagekräftigen Antworten geben kann, gebe ich zu, dass wir auf dem falschen Weg sind und woanders hin. Wenn sie stecken bleiben, stelle ich wichtige Fragen oder gebe Hinweise, bis wir weitermachen können.

Was ich sehen möchte, sind geordnete Denkprozesse, Entschlossenheit, zur Lösung zu gelangen, gut durchdachte Fragen und Experimente und im Idealfall eine erfolgreiche Identifizierung des Problems. Manchmal wähle ich Probleme aus, die zu komplex sind, um sie in einem einstündigen Interview vollständig zu debuggen, und am Ende gebe ich ihnen die richtige Antwort. An diesem Punkt suche ich nach einer Reaktion, die zeigt, dass sie mit dem Problem beschäftigt waren und diesen "Aha" -Moment und die Befriedigung erfahren, zur Ursache zu gelangen. Die besten Kandidaten werden zu diesem Zeitpunkt spontan Folgefragen stellen und versuchen, ihre mentale Karte des Problems mit dem zu verknüpfen, was wirklich vor sich ging.

Ben Jackson
quelle
1

Setzen Sie sich an einen Computer mit einigen einfachen Binärsymbolen (mit Debug-Symbolen), die standardmäßig mit einem Nullzeiger oder einem solchen + Quellcode + gdb versehen sind, und prüfen Sie, ob sie die Ursache für den Absturz finden können.

Kimvais
quelle
2
Dies sagt Ihnen nur, dass die Person Code und Binärdateien analysieren kann, um eine potenzielle Nullzeigerreferenz zu finden. Es demonstriert nicht wirklich den fachmännischen Umgang mit gängigen Debugging-Tools.
maple_shaft
1

Wenn Sie von Ihren Kandidaten vorläufige Code-Tests durchführen lassen, bitten Sie sie, den Code während des Interviews zu ändern, um entweder einen Fehler zu beheben oder eine neue Funktion hinzuzufügen, oder besser beides. Wenn Sie die Codetestspezifikationen ziemlich vage gestalten, würde dies das Erstellen von Testfällen mit "Bugs" erleichtern.

Sardathrion
quelle
1

Das Finden von "The Bug" in einem kleinen Code-Snippet ist eine sehr künstliche Situation. Ich nehme an, es könnte genauso hilfreich sein wie Rätsel und Denksportaufgaben.

Ein umfassenderer Ansatz würde verhaltensbezogene Fragen dazu stellen, wie der Kandidat in der Vergangenheit das Debuggen durchgeführt hat, wobei bestimmte Vorfälle angeführt und anschließend Fragen beantwortet werden.

Jemand, der gut in der Fehlersuche ist, kann über mehr als nur die Debug-Funktionen in der IDE sprechen. Was ist mit ... den Tools zur Fehlerberichterstattung, der Interaktion mit dem Endbenutzer, der Reproduktion des Fehlers, der Analyse der Protokolldateien und der Überprüfung?

Das Debuggen ist VIEL MEHR als das Durchsuchen eines Codeblocks, und jede Bewertung der Fähigkeiten einer Person beim Debuggen sollte dies widerlegen.

Angelo
quelle
Ich gehe gerne davon aus, dass es Fehler in der Software gibt, die wir noch nicht entdeckt haben. Es ist wie die Suche nach seismischen Fehlern. Die Frage ist, wie man nach verräterischen Zeichen sucht.
Christopher Mahan
1

Geben Sie jemandem einen tollen Code, den Ihr Unternehmen in der Produktion ausführt. Bitten Sie sie, einen subtilen Fehler einzuführen. Fragen Sie sie, warum sie diesen ausgewählt haben. Fragen Sie sie, wie sie es finden und beheben würden.

Bonuspunkt, wenn sie einen Fehler im Originalcode finden.

Verdoppeln Sie den Bonuspunkt, wenn Sie den Fehler im Originalcode beheben können.

Christopher Mahan
quelle
1

Ich neige dazu, die Leute zu bitten, mir den schwierigsten Fehler zu beschreiben, den sie jemals finden und beheben mussten, und was sie getan haben, um ihn zu finden und zu beheben. Ich weiß auch, dass, wenn der schwierigste Fehler etwas war, von dem man erwarten würde, dass er nur von Anfängern als schwierig empfunden wird, diese wahrscheinlich keine guten Problemlöser sind (es sei denn, dies ist ein Interview für Anfänger). Wenn es etwas wirklich Schwieriges ist und sie ihren Denkprozess beschreiben, während sie versuchen, ihn aufzuspüren, dann kann ich ein Gefühl dafür bekommen, wie gut sie sind. Was mich immer wieder erstaunt hat, ist die schiere Anzahl von Menschen, die einen "Hirsch im Scheinwerferlicht" sehen und sich kein einziges Beispiel für etwas vorstellen können, das kompliziert war. Tut mir leid, dass jemand, der die schwierigen Probleme jemand anderem überlässt, für nichts anderes interessiert ist als für einen Schulabbrecher.

HLGEM
quelle
1

Ich würde ein paar technologieunabhängige Fragen stellen, wie die folgenden:

  • Führen Sie mich durch alle Schritte, die Sie unternehmen, um die Ursache zu ermitteln und einen Fehler zu beheben.
  • Wie würden Sie den Call Stack beim Debuggen einer Multithreading-App verwenden?

Dies funktioniert besonders bei Telefoninterviews sehr gut, da Sie nur die Person benötigen, die Ihnen eine überzeugende Antwort gibt, die zeigt, wie es ihm bei der Behebung eines Problems wirklich geht.

Jaime Botero
quelle