Aufgrund meiner Erfahrung in meiner Firma, in der ich viele Interviews geführt habe, besteht eine gute Chance, dass die befragte Person keine Ahnung hat, wie das richtig gemacht werden soll. Also haben sie eine Reihe von technischen Fragen vorbereitet und daraus eine Punktzahl errechnet und daraus Ihren Lebenslauf gemacht. Dies hat jedoch viele Nachteile und sollte aus den folgenden Gründen nicht durchgeführt werden:
Sie fragen Punktwissen. Wenn der Programmierer in diesem Bereich noch nie etwas getan hat, ist er / sie möglicherweise immer noch ein ausgezeichneter Mitarbeiter, kennt diese bestimmte Antwort jedoch nicht. Im Gegensatz dazu: Wenn sich jemand auf das Interview vorbereitet und die Antwort auf diese spezielle Frage im Internet gefunden hat, erhalten Sie die richtige Antwort, aber diese Person hat möglicherweise überhaupt keine Ahnung vom eigentlichen Thema.
Die Leute sind nervös in Vorstellungsgesprächen. Das Gehirn hat diese großartige Funktion, um viele übergeordnete Bereiche (wie die Logik) in Panik zu schließen, was bedeutet: Wenn Sie nervös sind, liefern Sie möglicherweise nicht die Qualität der Antworten, die Sie in einer alltäglichen Situation erwarten würden. Manche Menschen können mit einer stressigen Situation wie einem Interview umgehen, viele nicht.
Mit einer einzigen, korrekten Antwort testen Sie die Fähigkeit dieser Person, diese bestimmte Antwort zu finden. Dies ist eine von vielen Fähigkeiten, die ein IT-Mitarbeiter benötigt, aber nicht die einzige, die erforderlich ist. Daher sollten eine oder zwei dieser Fragen ausreichen, um diesen Wissensbereich zu testen, und dann sollten andere Fähigkeiten abgefragt werden. Ein Interview, das nur Fragen zur Problemlösung enthält, testet dieselbe Fähigkeit immer wieder.
Was sind gute Programmieraufgaben Fragen?
Diese berühmten "Kannst du ein kurzes Programm schreiben" -Fragen haben das große Problem, dass die meisten Programmierer keine einzige Codezeile schreiben können, ohne dass ihnen ihre IDE hilft. Aber das ist in alltäglichen Arbeitssituationen überhaupt kein Problem, denn dem Programmierer hilft immer seine IDE. Wenn Sie also Dinge wie "Find the error", "Write 50 lines of code that do ..." oder sogar einfache Fragen stellen, müssen Sie berücksichtigen, dass der Bewerber nicht über seine Tools (IDE, Google) verfügt.
Ich kann zum Beispiel im Grunde jede Frage innerhalb einer Minute beantworten, wenn mir Google hilft, aber ohne Internetverbindung bin ich scheinbar hilflos. Ich nenne das ausgelagertes Gedächtnis, und anstatt mich zu behindern, hilft es mir sehr, mich auf das zu konzentrieren, was wirklich wichtig ist - die zugrunde liegenden Mechanismen zu verstehen -, weil alles andere nachgeschlagen werden kann. Fragen Sie mich jedoch nicht nach Details von zufälligen APIs, da ich diese nicht kenne. Dafür habe ich Google.
Das heißt, eine gute Programmieraufgabe sollte sich nicht darauf konzentrieren, APIs oder spezielle Codierungsfähigkeiten zu kennen, es sei denn, dies ist eine unabdingbare Voraussetzung für den Job. Wissen kann erlangt werden, daher ist es besser herauszufinden, wie gut diese Person darin ist, Wissen zu erlangen, als zu fragen, was sie bereits weiß.
Eine gute Frage für eine Programmieraufgabe sollte kurz, einfach, in jeder Sprache mit nur wenigen Codezeilen codierbar und - insbesondere - möglichst aussagekräftig sein, wie die Person arbeitet und Antworten findet. Beispiel:
"Schreiben Sie eine Funktion in der Sprache Ihrer Wahl, die ein Array von Ganzzahlen aufnimmt und sie so neu anordnet, dass die erste Ganzzahl nach der letzten folgt, und alle anderen verschieben sich entsprechend."
Der erste, den ein Bewerber an dieser Stelle fragen sollte, lautet: "Entschuldigung ... können Sie bitte die Aufgabe erläutern?". Weil keinem Programmierer eine klare Beschreibung gegeben wurde, was er jemals tun soll. Darauf folgt die Erklärung, dass der fragliche Code den Inhalt des Arrays nach links verschieben soll, wobei der Überlauf nach rechts hinzugefügt wird.
Diese Aufgabe ist so einfach, dass jeder, der ein Programmierlevel absolviert hat, in der Lage sein sollte, richtig zu antworten. Dies berücksichtigt, dass der Programmierer ohne seine Werkzeuge arbeiten muss und dass nervöses Denken die Fähigkeit zum logischen Denken einschränkt. Es zeigt Ihnen jedoch immer noch, wie Menschen Probleme lösen, einfach aus der Art und Weise, in der die Frage formuliert ist, und aus der Art und Weise, wie Menschen sie angehen, einfach, weil eine Linksverschiebung gegen den gemeinsamen „von links nach rechts“ -Instinkt verstößt und die Menschen zum Nachdenken zwingt eine Sekunde.
Es gibt viele mögliche Antworten auf diese Frage. Ein genauer Blick auf die Art und Weise, wie der Code entwickelt wird, ist daher der wichtige Teil, nicht wenn die Lösung tatsächlich funktionieren würde. Prüft der Antragsteller auf null? Wie wird der Überlauf gespeichert? Wird eine Schleife oder ein Mem-Set verwendet? Wie überprüft der Antragsteller die Richtigkeit des Codes? Diese eine einfache Frage sagt Ihnen eine ganze Biographie darüber, wie diese Person arbeitet.
Was sind gute Allgemeinwissenfragen?
Gute Fragen sind einfach zu beantworten, lassen eine Vielzahl von Antworten zu (so genannte offene Fragen) und ermöglichen es Ihnen, in der kurzen Zeit, die Sie haben, so viel wie möglich über den Bewerber zu lernen.
Beispiele:
(Frage an einen C ++ - Programmierer): "Welche anderen Sprachen neben C ++ kennen Sie?"
Dies ist eine Einstiegsfrage, die dem Antragsteller eine faire Chance bietet, in diesem Moment aus dem Ruder zu gehen, wenn er nichts über das gestellte Thema weiß. Ein "Nein" ist an dieser Stelle besser, als ihn / sie mit mehreren weiteren Fragen zu quälen, die er / sie alle beantworten muss: "Entschuldigung, darüber weiß ich nichts."
Außerdem erfahren Sie zunächst, welche anderen Sprachen diese Person kennt. Außerdem erfahren Sie, wie interessiert diese Person daran ist, einen umfassenderen Einblick in die Programmierwelt zu erhalten, oder ob Sie jemanden haben, der nur über eine einzige Sprache (und damit über Funktionen / Techniken) verfügt ) Aussicht.
(Als nächstes, sagen wir, er kennt Java): Was sind aus Ihrer Sicht die drei wichtigsten Unterschiede zwischen C ++ und Java? "
Dies ist eine offene Frage, die viele Antworten zulässt, sodass der Bewerber gute Chancen hat, mindestens drei Antworten zu finden. Nach der (persönlichen Meinung) Top 3 zu fragen, schränkt nicht nur die möglichen Antworten ein, sondern zwingt den Bewerber auch, nach Priorität zu sortieren. Trotzdem ist es einfach zu beantworten (oder sollte es auch sein).
Dies ist eine einfache Frage, die viele fundierte Kenntnisse über verschiedene Programmiersprachen testet. Wie tief ist das Wissen über diese Themen wirklich? Aus diesen Antworten können Sie viel über das Wissen und das tatsächliche Verständnis der zugrunde liegenden Mechanismen von Programmiersprachen erzählen. Wie viel diese Person mit den schmutzigen Details ausgegeben hat oder ob sie nur eine Person ist, die verschiedene API-Funktionen miteinander verknüpft, ohne wirklich zu wissen, was unter diesen passiert.
Dieses Konzept von Einstiegsfragen, gefolgt von einfachen vertieften Wissensfragen, kann auch für die meisten anderen Themen verwendet werden. Immer in diesem Schema: Rettungsfrage, Überprüfungsfrage, eingehende Frage. Ein weiteres Beispiel (aus einem Java-Interview):
- "Wie beurteilen Sie Ihre Erfahrung mit Multithread-Entwicklung?"
- "Bitte geben Sie an, was Ihrer Meinung nach die drei wichtigsten Aspekte sind, die bei der Entwicklung einer Multithread-Anwendung zu berücksichtigen sind."
- "Bitte nennen Sie drei Klassen aus der Java-API, die Ihnen bei der Entwicklung dieser Anwendungen helfen können, und geben Sie eine kurze Beschreibung, wofür sie verwendet werden."
Diese drei Fragen sagen mehr als jede andere technische Frage aus, was der Bewerber über diese Themen wirklich weiß, und sind unter Berücksichtigung von Sachkenntnis und Stressniveau fair zu beantworten.
Wenn Sie das nächste Mal 20 Codierungsfragen hintereinander stellen, wissen Sie, dass er oder sie im Grunde keine Ahnung hat, wie er oder sie jemanden richtig interviewen soll. ;)