Bei einem "Bad Code" -Interview wird dem Befragten ein Ausschnitt aus einem "Bad Code" angezeigt, der korrigiert oder auf Fehler hingewiesen werden soll. Ich habe Probleme mit diesen Interviews, weil ich einige Zeit brauche, um den Code zu lesen, herauszufinden, was er tut, und auf die Fehler hinzuweisen. In einer Situation, in der Zeitdruck herrscht, friere ich ein und sehe, dass der Code funktionieren sollte, auch wenn dies nicht der Fall ist.
Was ist ein guter Weg, um mit dieser Art von Interview umzugehen, und was sind allgemein einige gute Techniken, um Code schnell zu lesen und zu verstehen ?
interview
reading-code
Quantikel
quelle
quelle
Antworten:
Schlechter Code Interviews (wenn sie richtig gemacht wurden) sollten Ihnen Code mit folgendem Inhalt zeigen:
using
bei Bedarf nicht die Anweisung in C # verwenden oder einArrayList
anstelle von ein verwendenList<T>
)ref
undout
Parameter so oft?)Es gibt eine mentale Checkliste, die Sie durchgehen sollten und die alle oben genannten Punkte erfüllt. Wenn Sie sich den Code nicht ansehen und das tun können, ist das ein Punkt der Verbesserung. Welche Sprache Sie auch immer als "kompetent" bezeichnen, Sie sollten in der Lage sein, sich einen Codeblock anzusehen und auf diese vier Arten von Fehlern hinzuweisen.
Ich habe kürzlich über einen Code gebloggt, der all diese Probleme aufweist . Er soll Ihnen helfen, denselben mentalen Prozess zu durchlaufen.
Ayende geht mit seiner Wages of Sin- Serie noch tiefer .
quelle
List<T>
null
Versuche nicht, es schnell zu verstehen. Das Ziel hier ist nicht zu sehen, ob Sie den Code wie einen Guru verstehen können, sondern zu sehen, wie Sie denken.
Der Schlüssel IMO ist einfach laut zu denken. Also, selbst wenn Sie einfrieren - dann sagen Sie einfach: "Ich betone hier, aber lassen Sie mich das langsam laut durchgehen."
Vorausgesetzt, Sie haben die Fähigkeit, laut zu denken, wird Sie genug verlangsamen, um Ihren Verstand richtig zu machen. Wenn die Interviews geschickt genug sind, werden sie Ihre Situation erkennen und Ihnen weiterhelfen, bis Sie klar denken. Sie versuchen nicht, dich dazu zu bringen, dumm auszusehen - nur eine mächtige Technik, um zu sehen, wie du denkst.
quelle
Wahrscheinlich ist der Zeitdruck, den Sie spüren, völlig selbst auferlegt. Es hat mehr damit zu tun, dass Sie sich unsicher fühlen und sich Gedanken darüber machen, wie gut Sie sich messen können.
Der beste Rat, den jeder geben kann, ist: Entspannen Sie sich. Nehmen Sie sich Zeit, sehen Sie sich den Code an und sprechen Sie über das, was Sie sehen, während Sie es sehen. Fühlen Sie sich frei, über die guten und die schlechten Seiten zu sprechen. Es wird Ihnen helfen, Ihre Nervosität und innere Sorgen zu lindern, dass zu viel Zeit vergeht.
Darüber hinaus kann es ein bisschen einfacher sein, bestimmte Details zu erkennen, wenn Sie verschiedene „Durchgänge“ durchlaufen. Suchen Sie in einem Durchgang nach nicht übereinstimmenden Klammern oder Tippfehlern. Nehmen Sie einen weiteren Pass und suchen Sie nach verschleierten Linien. Nehmen Sie eine andere, die nach semantischen Brezeln sucht. Wenn Sie sich auf eine Art von "Falschem" konzentrieren, können Sie diese Details leichter erkennen und Ihre innere Stimme (wieder) reduzieren, indem Sie sich fragen, ob Sie es schnell / gut genug machen.
Überlegen Sie sich vor allem, was Sie tun und denken - es hilft Ihnen und dem Interviewer.
quelle
Ich war noch nie in einer solchen Art von Interview, aber wenn ich versuche, an einem heiklen Stück Code zu arbeiten, von dem ich vermute, dass er schlecht ist, spreche ich manchmal leise mit mir. Ich finde, dass das Vokalisieren manchmal beim Lösen von Problemen hilft. Auch in einem Interview können Sie versuchen, die Ausführungsschritte als Diagramm oder etwas mit Bleistift und Papier nachzuzeichnen. Das hat früher in der Schule für mich funktioniert, manchmal auch bei der Arbeit. YMMV natürlich ...
quelle
Ich würde denken, ein guter Startpunkt (wenn Sie nichts Offensichtliches sehen) wäre das "Debuggen". Wenn Sie mögliche Probleme nicht von Anfang an erkennen, sollten Sie zunächst eine kleine Liste von Testwerten erstellen. Gute Werte sind ein (normaler) Wert für 'happy path', ein Wert für 'zero' oder 'empty', Nullen, ein sehr kleiner Wert (eine Zeichenfolge mit 1 Zeichen, die Ganzzahl 1 usw.), ein sehr großer oder sehr langer Wert value und 'strange' typspezifische Werte (z. B. Unicode-Zeichen für Zeichenfolgen, negative Zahlen für Ints usw.). Es würde hier nicht schaden zu erwähnen, dass Sie normalerweise Komponententests mit diesen Werten schreiben würden, um den Code zu testen, und diese nur ausführen würden, um die Funktion zu verifizieren.
Beginnen Sie mit Ihren Happy-Path-Werten. Für eine Additionsfunktion können Sie mit 3 oder 4 beginnen. Untersuchen Sie jede Zeile auf Tipp- und Logikfehler und verfolgen Sie dabei die Werte lokaler Variablen. Hoffentlich finden Sie ein paar Fehler. Wenn Sie mit dem glücklichen Weg fertig sind, werden Sie ein besseres Gefühl für den Code haben und sich hoffentlich ein bisschen weniger überfordert fühlen. Sagen Sie also so etwas wie "Jetzt, wo ich ein besseres Gefühl dafür habe, was dieser Code tut, bin ich Gehen Sie einen Schritt zurück und schauen Sie es sich an. "Dann tun Sie genau das. Suchen Sie nach Dingen, die für Sie als Dinge herausstechen, die Sie anders gemacht hätten (schlechte Entwurfsentscheidungen, schlecht benannte Variablen, untersuchen Sie mögliche Fehler usw.).
Wenn Sie dadurch nicht weiter kommen oder das Gefühl haben, nichts mehr zu sagen, kehren Sie zu Ihrer Liste der Testwerte zurück und wiederholen Sie diese mit einem neuen Wert, von dem Sie glauben, dass er wahrscheinlich Probleme verursacht.
Das wird dich zumindest zum Laufen bringen.
quelle
Wie Stephen Bailey bereits sagte, ist lautes Denken in dieser Situation eine hervorragende Technik, da Ihre Interviewer Ihren Denkprozess sehen können. Erklären Sie, was Sie herausfinden wollen. Das andere, was Sie tun können, ist den Interviewern mitzuteilen, dass Sie den Code richtig durchlesen werden, bevor Sie eine Diagnose über die Unzulänglichkeit des Codes erstellen. Ich war auf beiden Seiten des Tisches und ich weiß, dass es in diesen Situationen für beide Seiten frustrierend sein kann.
quelle
Wenn Sie bei einem schriftlichen Test weniger Druck verspüren, ziehen Sie Ihr Notebook heraus und machen Sie sich Notizen. Ich habe ein Notizbuch herausgezogen und angefangen, als Teil meines Denkprozesses in einem Interview Notizen zu skizzieren. Wenn Sie ein Notizbuch und einen Stift haben, sehen Sie selbst organisiert aus. Sie könnten ein paar Punkte aufschreiben, nach denen gesucht werden muss, Syntax, Logikfehler, Datentypinkongruenzen, Werte lokaler Variablen (die Liste kann je nach Art des Codes variieren, den Sie haben, meine Liste für ein komplexes Stück SQL würde variieren) Seien Sie anders als jemand, der einen Code erhalten hat, der nicht datenzentriert ist, wenn Sie den Prozess usw. durchlaufen. Selbst wenn Sie nicht alle Probleme finden, bevor der Interviewer weitermachen möchte, kann er eine Liste der Dinge sehen, die Sie überprüfen wollten. Wenn Sie im Voraus eine Checkliste mit den gesuchten Dingen erstellen, können Sie sicherer mit dem Prozess beginnen und wissen, welche Dinge Sie sich ansehen möchten. In der Regel geht es bei diesen Fragen eher darum, wie Sie die Fehler finden, als dass Sie tatsächlich alle finden.
quelle
Ich bin ein bisschen zu spät zu dieser Party, aber eine Technik, die Sie verwenden könnten, wäre, Komponententests für den fraglichen Code zu schreiben. Dann können Sie sich weniger auf das konzentrieren, was am Code auf subtile Weise falsch ist, als vielmehr auf die erwarteten Ergebnisse, die Sie suchen. Ich würde lieber jemanden einstellen, der gute Tests schreiben kann, als jemanden, der sofort erkennt, was an einem Code-Teil falsch ist.
quelle
Möglicherweise gibt es zwei Probleme:
Es könnte ein "Stress-Interview" sein http://en.wikipedia.org/wiki/Job_interview#Stress . Interviewer versucht zu sehen, wie Sie mit Stress umgehen, da das Arbeitsumfeld so ist.
ODER
Sie könnten selbst gestresst werden. In diesem Fall müssen Sie diesen Stress bewältigen, z. B. nach innen schauen und sehen, wie Sie ruhig bleiben können.
quelle