Ich möchte unbedingt, dass Sie den Whiteboard-Code testen, den Sie schreiben sollen. Ich möchte, dass Sie laut sprechen, während Sie es schreiben, es durchsehen, die meisten von Ihnen begangenen Syntaxfehler erkennen und darauf hinweisen, wie es effizienter sein könnte. Tatsächlich ist das der Grund, warum man es am Whiteboard macht. Es ist keine One-Shot-Write-it-All-Out-Sache. Es ist eine Unterhaltung, die durch Code vermittelt wird und nicht über meinen Schreibtisch, sondern am Whiteboard stattfindet.
Hier sind einige gute Möglichkeiten, um den "Whiteboard-Codierungstest" nicht zu bestehen:
- Lehn es ab
- Stellen Sie keine einzige klärende Frage (Sprache, Plattform, etwas über die Anforderungen) UND sagen Sie mir nicht Ihre Annahmen darüber UND treffen Sie Annahmen, die weit davon entfernt sind, was ich beantwortet hätte
(zB: schreibe es in Fortran, interpretiere "display" oder "print" als "write to the event log", so etwas. Ich könnte es zulassen, wenn du mir vorher sagst, das wären deine Annahmen)
- Fragen Sie mich, in welcher Sprache ich es haben möchte, erhalten Sie eine Antwort in der Stellenbeschreibung und schreiben Sie sie dann in einer anderen Sprache, da Sie sich in der von mir gewünschten Sprache nicht wohl fühlen.
(Wir sind hier Berater. Ich teste das Verhalten von Beratern genauso wie das Codieren. Es ist nur richtig, den Kunden zu fragen, ob er tatsächlich eine Wahl hat. Es ist schwierig, die Gespräche mit Leuten zu kontrollieren, die Sie bezahlen. Dies ist Lektion 1. Es ist eine Markieren Sie gegen Sie in einem beliebigen Thema, aber für das spezielle "Sie stellen einen X-Programmierer ein, aber ich möchte nicht für Sie in X schreiben" haben Sie jetzt zwei große schwarze Markierungen.)
- Zeigen Sie mir, was für ein Architekturastronaut Sie sind, indem Sie zwei Whiteboards mit Schnittstellen, Fabrikmustern, Abstraktionen, Injektionen und Tests füllen, wenn Sie "die Zahlen von eins bis fünf drucken" sollen.
(Sie denken, ich übertreibe, aber ich hatte einen Mann, der mein Problem dramatisch verallgemeinerte. Wenn wir uns an das obige Beispiel halten, würde seine Lösung anstelle von 1 bis 5 eine beliebige Folge von ganzen Zahlen ergeben (woher ?, fragte ich mich) und war 5 Mal so lange wie bei anderen - und er vergaß, die Funktion, die die Arbeit ausgeführt hat, tatsächlich aufzurufen. Wiederholte Aufforderungen und der Hinweis, dass er sie durchlaufen habe, als wäre er der Debugger, führten nicht dazu, dass er bemerkte, dass die Funktion nie aufgerufen wurde.)
Ich sage immer "Magst du das?" "kannst du das verbessern?" "geh mir durch das" und dergleichen. In der Regel wird das fehlende Semikolon in dieser Konversation entdeckt oder das einzelne. Wenn nicht, bezeichne ich es normalerweise als nervenaufreibend.
Andere Dinge, von denen du denkst, dass sie für mich nicht wichtig sind:
- Wenn Sie fertig sind, kann ich es noch lesen? Haben Sie verschmiert, gekritzelt, die Farben gewechselt, Pfeile durchgestrichen und im Allgemeinen ein Chaos hinterlassen, das jetzt nicht mehr verwendet werden kann? Oder wissen Sie, dass Whiteboards löschbar sind, auf Codezeilen in der Luft zeigen, anstatt sie zu umkreisen / anzuhalten, und mir etwas hinterlassen haben, das ich fotografieren und in der Designdatei aufbewahren könnte?
- Wie viel hast du mich gefragt, als du es getan hast? Möchten Sie in Ruhe gelassen werden und Ihren Code nicht diskutieren, oder sehen Sie Code als eine kollaborative Sache? Wie haben Sie reagiert, als ich Sie fragte, was Sie noch geschrieben haben?
- Haben Sie sich über die "leichte" Aufgabe lustig gemacht oder sind Sie bei der "schweren" Aufgabe in Ohnmacht gefallen? Warst du unhöflich, wenn du gefragt wurdest, ob du Code kannst? Lassen Sie sich von einem technischen Problem leicht einschüchtern oder sind Sie arrogant in Bezug auf Ihre Fähigkeit, einen guten Algorithmus zu entwickeln?
- Arbeiten Sie es in Ihrem Kopf aus oder erinnern Sie sich an eine Lösung, die Sie irgendwo gelesen haben? Ich kann in der Regel für die schweren Probleme erzählen.
- Hast du geplant, wo du angefangen hast zu schreiben? Leute, denen das Whiteboard ausgeht, fangen normalerweise zu niedrig an oder schreiben zu groß - ich kann sagen, dass sie nicht wussten, dass dies 20 Codezeilen sein würden und so nur Platz für 5 - glauben Sie, oder nicht, dieses winzige Detail spiegelt sich wider größere schätzende Aufgaben außerdem.
- Hast du es dir angesehen, bevor du gesagt hast, dass du fertig bist? Habe ich gesehen, wie Sie darauf hingewiesen haben oder sich durch das Bild geklopft haben und es selbst getestet haben, bevor ich Sie dazu aufgefordert habe? Als ich Sie dazu aufforderte oder Ihnen spezielle Fragen stellte, haben Sie es sich noch einmal angesehen oder sind einfach aus dem Gedächtnis verschwunden? Sind Sie bereit zu berücksichtigen, dass Ihr erster Entwurf möglicherweise nicht vollständig ist?
Ich empfehle dringend, das Programmieren am Whiteboard zu üben. Ich warne die Befragten immer davor, dass sie dazu aufgefordert werden. Wenn Sie Zugriff auf ein tatsächliches Whiteboard haben, stellen Sie sich einige einfache Probleme und üben Sie diese dort. Es wird Ihrer Leistung und Ihrem Selbstvertrauen helfen.
Tut mir leid, ich weiß, dass ich im Gebiet TL; DR bin, aber hier ist die Sache - beim Codieren am Whiteboard geht es um mehr als nur um Codierung . Es ist ein Test, bei dem Sie mehr als nur die Syntax verstehen. Es gibt viele Verhaltensweisen guter Programmierer, die sich in Ihrer Antwort auf diese Aufgabe zeigen. Wenn Sie denken, dass es nur um das Codieren geht, verpassen Sie den Punkt.
In anderen Gesprächen über Whiteboard-Tests wurde mir gesagt, dass ich einen guten Kandidaten damit ablehnen könnte. Ehrlich gesagt, das ist ein Risiko, das ich eingehen möchte. Jede Einstellungsrunde besteht aus mehreren Personen, die ich einstellen könnte. Einige Leute mit hervorragenden Lebensläufen, die im Frage-und-Antwort-Teil des Interviews gut abschneiden, fallen am Whiteboard auseinander und können offensichtlich keinen einfachen Code in der Sprache schreiben, die sie zu kennen behaupten. Ich könnte einige von diesen gemietet haben. Jedes Werkzeug, das dies verhindert, werde ich weiterhin verwenden. Ich bin nie in einem Boot gelandet, das niemand mieten konnte, weil alle meine Kandidaten am Whiteboard durcheinander geraten sind und ich nicht damit rechne, dass ich es jemals tun werde.