Wir hatten einen Senior-Level-Interviewkandidaten, der eine Nuance der FizzBuzz-Frage 1 2 nicht bestand .
Ich meine, die Frage ist wirklich völlig gescheitert - nicht einmal knapp.
Ich habe ihn sogar dazu gebracht , über die Verwendung einer Schleife nachzudenken, 3
und das war 5
es wirklich wert, als Sonderfall in Betracht gezogen zu werden.
Er hat es vermasselt.
Nur zu Qualitätssicherungszwecken habe ich drei Teamkollegen die gleiche Frage gestellt. gab ihnen 5 Minuten; und kamen dann zurück, um ihren Pseudocode zu sammeln. Sie alle haben es verstanden und hatten die Frage noch nie gesehen. Zwei fragten, was der Trick sei ...
In einer anderen Logikübung zeigte der Kandidat ein gewisses Verständnis für einige der in der von ihm gewählten Sprache verfügbaren Funktionen (C #). Es ist also nicht so, als hätte er niemals eine Codezeile geschrieben. Aber seine Logik stank immer noch.
Meine Frage ist, ob ich ihm die Antwort auf die logischen Fragen hätte geben sollen.
Er wusste, dass er sie gesprengt hatte und bestätigte es später im Interview.
Andererseits hat er nie nach der Antwort gefragt oder was ich erwartet hatte.
Ich weiß, dass Codierungsübungen verwendet werden können, um Kandidaten auf einen Misserfolg vorzubereiten (siehe auch den zweiten Link von oben). Und ich habe wirklich versucht, ihm dabei zu helfen, den Kern der Frage zu beantworten. Aber dies war ein Kandidat auf hoher Ebene und Fizz-Buzz ist, ehrlich gesagt, lächerlich einfach, selbst nachdem Interview-Jitter berücksichtigt wurden.
Ich hatte das Gefühl, ich hätte ihm einen Weg zeigen sollen, das Problem zu lösen, damit er zumindest aus der Erfahrung lernen konnte. Aber er hat nicht gefragt.
Was ist der richtige Weg, um mit dieser Situation umzugehen?
1 Okay, das ist nicht der Link zur eigentlichen FizzBuzz-Frage, aber es ist eine gute P.SE-Diskussion über FizzBuzz und Links zu den verschiedenen Aspekten davon.
2 Zur Verdeutlichung: Dies ist die Nuance von Fizz-Buzz, die ich gefragt habe und die aus dem ersten Problem von Project Euler stammt . Ersatzdruck Fizz | Buzz für die Summierung der Zahlen und Sie haben die gleiche Grundfrage.
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Write a function that finds the sum of all the multiples of 3 or 5 below 1000.
3 Diese Frage hat mehr Aufmerksamkeit erregt, als ich erwartet hatte, und ich schätze alle Antworten. Einige der späteren Antworten sind wirklich auf den Kern meiner Frage eingegangen, daher werde ich der Community erlauben, die Antwort zu überprüfen und zu bewerten, bevor sie "die" Antwort zuweist.
4 Ich habe die Antwort basierend auf den Abstimmungen der Community zu diesem Zeitpunkt ausgewählt. Und ich denke, die Antwort von Yannis eignet sich für Interviews mit neueren Entwicklern. Ich denke, die kollektive Antwort, die sich darauf konzentriert, nicht nach der Antwort zu fragen, ist ebenfalls genau richtig.
Antworten:
Die meisten meiner Interviews wurden mit Studenten geführt, die nach einer Praktikumsstelle suchten, und meistens haben sie einfache (?) Übungen vermasselt. Ich wollte eine einfache und freundliche Art und Weise, ihre Fehler zu kommunizieren, und was mir einfiel, war ganz einfach: Ich löste die Übungen selbst und zeigte ihnen meine Lösungen, nachdem sie mit ihnen fertig waren.
Ich hatte einige äußerst interessante und aufschlussreiche Diskussionen mit Kandidaten, die mit dem Vergleich unserer verschiedenen Ansätze zur Lösung des gleichen Problems begannen. Nach einer Weile habe ich sogar einige Fehler vorweggenommen, indem ich einfach nachgesehen habe, welche Schule der Kandidat besucht hat (einige "Professoren" sind ... Idioten). Und in den wenigen Fällen, in denen ein Kandidat keine Lösung finden konnte, hatte ich ihm bereits eine für das nächste Mal gegeben.
quelle
Die Antwort geben
Ich wollte sagen, wenn der Kandidat nicht interessiert genug ist, um zu fragen, würde ich meinen Atem nicht verschwenden, aber @Yannis_Rizos Antwort ist viel besser.
Interviews sind ziemlich schnelllebig. Ich weiß, dass ich nach einem Interview oft tagelang nachschaue.
Leute, die FizzBuzz Classic nicht codieren können
Ich stelle mir vor, dass ein großer Knackpunkt darin besteht, den% -Operator zu kennen. Sie würden hoffen, dass jemand darüber nachdenken könnte, es zu vergleichen,
(myInt / 3) == (myDouble / 3.0)
aber vielleicht mit dem Stress eines Interviews ... Dennoch erzwingt FizzBuzz Classic einen Brute-Force-Ansatz und ordnet ihn in die Kategorie der am einfachsten zu lösenden Algorithmusprobleme ein. Haben Sie als Hinweis versucht, die Leute zu bitten, nur "Fizz" für die Hälfte des Guthabens zu codieren und "Buzz" später als Verbesserung hinzuzufügen?Ich denke, die ultimative Antwort auf Ihre Frage ist, dass es wirklich schwierig ist, gute Kandidaten zu finden.
Interview-Fragen im Allgemeinen
Ich fand es oft einfacher und produktiver, die Kandidaten zu bitten, das letzte Programmierprojekt zu beschreiben, von dem sie begeistert waren. Ich hatte 100% Erfolg mit dieser Frage, was bedeutet, dass Leute, die lebhaft über ein Programmierprojekt sprachen und technische Fragen dazu beantworten konnten, großartige Angestellte waren und diejenigen, die es nicht konnten, auch nicht. Dies hat die netten Nebenwirkungen, den Kandidaten zu beruhigen und eine offene Diskussion anzuregen. Mit dieser Frage teilt Ihnen der Kandidat im Endeffekt mit, wofür er am besten geeignet ist.
Vielleicht sind in einer Denkfabrik auch Algorithmusfragen notwendig, aber ich habe sie zugunsten der Frage "Lieblingsprojekt" aufgegeben.
Summe (Sohn) von FizzBuzz
Ihre Interviewfrage entspricht nicht FizzBuzz:
Wo FizzBuzz Classic Sie zwingt, n Iterationen durchzugehen (um jede Nummer oder Fizz / Buzz auszudrucken), kann Ihr Problem in n / 5 + n / 3 + n / 15 Iterationen oder sogar ohne Iterationen ausgeführt werden - eine direkte Fixierung. Punktberechnung ist möglich. Das folgende Programm vergleicht diese drei Methoden:
Ausgabe (Summe von FizzBuzz <1000):
Mit einem größeren n zum Leistungsvergleich:
Hinweis für diejenigen, die dies als Off-Topic abgelehnt haben
Mit einer Lösung für diese Frage soll gezeigt werden, dass die Brute-Force-Lösung von Sum of FizzBuzz der von FizzBuzz Classic ähnelt, dass jedoch bessere Lösungen für das Sum-Problem verfügbar sind, was es zu einem grundlegend anderen Problem macht. Die Summe von FizzBuzz ist extrem schwierig, wenn Sie sich nicht an die richtige Formel für die Summe einer Reihe erinnern oder nicht erkennen, dass sie beim Schritt um 3 oder 5 gilt.
Wenn Sie die Formel für die Summe einer Reihe erneut ableiten, indem Sie die Reihe in zwei Hälften teilen, die eine Hälfte umkehren und sie koppeln, erhalten Sie (n + 1) (n / 2), was Sie auf einen wirklich chaotischen Weg führen kann soweit es die Ganzzahldivision und die abgeschnittenen Reste betrifft. Die (n (a1 + an)) / 2-Version dieser Formel ist für eine einfache Antwort für alle Werte von n absolut kritisch.
quelle
t = { |i| (i * (i+1)) / 2 }; fizzbuzz = { |n| 3 * t((n-1)/3) + 5 * t((n-1)/5) }
Es ist mir egal, für welches Level das Interview ist, und auch nicht wirklich, ob es sich um eine Frage auf "FizzBuzz" -Ebene oder eine fortgeschrittene Frage handelt. Wenn Sie einen Kandidaten bitten, eine Frage zu lösen, und er kann es nicht, aber Sie brauchen nicht einmal nach der richtigen Antwort zu fragen, dann ist er Ihre Zeit nicht wert. Wie um alles in der Welt kannst du so faul sein?!?
Und selbst wenn Sie total nach Programmierer stinken und nur versuchen, Ihren Weg in einen Job zu büffeln, warum sollten Sie dann nicht so pragmatisch sein, jetzt die richtige Antwort zu bekommen, damit Sie es für das nächste Interview wissen?
Nein, Sie sollten die Antwort nicht "geben", aber Sie sollten damit rechnen, dass der Kandidat darauf besteht, die richtige Antwort zu hören , wenn er scheitert. Wenn nicht, ist es eine große rote Fahne in meinem Buch.
Wenn jemand FizzBuzz in einem Junior-Level-Dev-Interview durchgebrannt hat, weil er sich nicht an den Modul-Operator erinnern konnte und sich einfach nicht dazu bringen konnte, ohne ihn weiterzumachen, dann wurde er ganz leidenschaftlich daran, es noch einmal zu machen, nachdem Sie die richtige Antwort erklärt hatten. oder zumindest den richtigen Code mit dir durchsprechen, dann ist das fast so gut wie richtig zu antworten.
quelle
Ich habe Fizzbuzz während des Telefonierens mit dem Interviewer während eines Pre-Screens getippt. Das ist etwas, von dem man, auch wenn man noch nichts gehört hat, nach einem Semester in der Lage sein sollte, sich zusammenzutun, aber auf jeden Fall, nachdem man den Status "Senior" erlangt hat.
Es gibt wirklich keine Erholung davon, das nicht zu können. Es ist eines der notwendigen Ärgernisse, die Sie für alle Fälle aus dem Weg räumen müssen.
Ich würde sagen, dass es Sinn macht, als Pre-Screen zu liefern, damit Sie nicht die ganze Zeit damit verschwenden, sie für ein Interview vor Ort zu bringen.
quelle
Es wäre interessant zu wissen, was Ihrer Meinung nach die "richtige" Antwort auf Ihre FizzBuzz-Frage ist. Von meinem Platz aus lautet ein guter (in C), der in den Brief Ihrer Frage geschrieben ist:
Ein besseres könnte sein:
Warum zum Teufel würden Sie ein Programm schreiben, um das zu tun, wenn Sie es direkt berechnen können?
Der Punkt ist, dass es mehr als einen Weg gibt, eine Katze zu häuten, und die Tatsache, dass der betreffende Kandidat nicht sofort damit begonnen hat,
for
Loops undmod
Operatoren zu schreiben , bedeutet nicht, dass er dumm ist. Wenn Sie wissen möchten, was der Kandidat weiß, besprechen Sie das Problem - finden Sie heraus, was er denkt. Wenn er feststeckt oder verwirrt ist, finden Sie heraus, wo und warum. Er könnte Sie zu einem Ansatz führen, an den Sie nie gedacht haben.Als Interviewer ist es nicht Ihre Aufgabe, dem Kandidaten eine Lektion zu erteilen . Wenn sie wirklich nicht wissen, wie man Code schreibt, besteht absolut keine Notwendigkeit, sie in Verlegenheit zu bringen, indem sie darüber nachdenken, wie viel sie nicht wissen. Wenn sie interessiert genug sind, um zu fragen, dann können Sie auf jeden Fall teilen. Beenden Sie andernfalls das Interview, danken Sie ihnen für ihre Zeit und fahren Sie mit dem nächsten Kandidaten fort.
quelle
discuss the problem
dieses Element kamen während des Interviews andere Fragen auf. Bedauerlicherweise war der Kandidat ... weniger als bereit zu antworten. Ich habe diesen Aspekt nicht in die ursprüngliche Frage aufgenommen, da ich wirklich versucht habe, mich an die P.SE-Richtlinien für "gutes subjektives Verhalten" zu halten.Ihr "Problem" ist, dass Sie ein einfühlsamer Mensch sind. Es ist daher schwierig zu beobachten, wie jemand mit einem Problem kämpft, dessen Antwort Sie kennen (dies ist auch ein Problem, wenn Sie Usability-Studien durchführen). Aus Sicht der Aufgaben als Interviewer sind Sie in keiner Weise verpflichtet, dem Interviewten beizubringen, wie er programmiert oder ein Problem löst, oder die Lösung eines Problems, das Sie fragen.
Wenn Sie einen Befragten coachen, ist es nicht so, dass er die richtige Antwort bekommt. Es ist so, dass Sie sehen können, ob sie das Problem wirklich nicht lösen können oder ob sie sich nur auf einen oder zwei Fehler oder Missverständnisse festgelegt haben.
Wenn Sie also einem Befragten die Lösung nachträglich geben möchten, tun Sie dies nur für sich. Im Allgemeinen würde ich diese Zeit lieber nutzen, um dem Befragten zu ermöglichen, ein anderes Problem zu versuchen. Aber ein "älterer" Programmierer, der FizzBuzz nicht beantworten kann, ist wahrscheinlich von der Liste. Wenn Sie sich dazu entschließen, Lösungen zu nennen, sollten Sie sich nicht dazu verleiten, zu glauben, das Interview sei besser verlaufen als es Sie sind auf einem gefährlichen Weg).
Und ja, ich war ein befragter Mann, der sich über den Kopf gesetzt hatte und nicht einmal den ersten Versuch unternahm, ein Interviewproblem zu lösen. Das bedeutete einfach, dass ich viel mehr lernen musste, um einen Job in diesem Bereich zu verfolgen.
quelle
Die richtige Antwort zu finden, ist nicht der wichtige Teil dieses Tests. Was Sie messen, ist die Herangehensweise an die Problemlösung, die Art und Weise, wie jemand mit der Frage umgeht, mit etwas Kreativem oder Interessantem, das er auf dem Weg findet. diese Art von Sachen. Selbst wenn sie die falsche Antwort erhalten, können sie nach diesen Kriterien lebensfähig sein.
OK, nicht zu wissen, dass der Mod-Operator unentschuldbar ist, und nach den Messwerten, die ich diesem Kandidaten gegeben habe, scheint es immer noch eine Abwertung zu sein, aber ich glaube nicht, dass es von Belang ist, diesem Kandidaten nur die richtige Antwort zu geben Vorteil.
Hier kommt es auf Ihre persönliche Meinung an. Möchten Sie ein Interviewfeedback geben, damit der Kandidat in zukünftigen Interviews besser abschneiden kann (und zukünftige Interviewer nicht leiden müssen, was Sie gerade durchgemacht haben)? Wenn ja, formulieren Sie Ihr Feedback wie oben beschrieben: Sagen Sie ihnen, dass es nicht nur um die richtige Antwort geht, sondern dass es von entscheidender Bedeutung ist, wie sie zur Antwort kommen.
quelle
how they work to arrive at the answer is a critical factor.
Ich habe zwar erwartet, dass ein Moduloperator verwendet wird, aber nur deshalb, weil ich ihn so gelöst hätte. Ich war sehr offen für andere Ansätze, die das Problem lösen, ohne dass es zu offensichtlichen Randbedingungsfehlern kommt (siehe meine verschiedenen Kommentare zum Ansatz mit Rekursion ...).So wie ich das sehe, gibt es keine Situation, mit der man umgehen kann. Unter der Annahme, dass Sie seine Bewerbung abgelehnt haben, müssen Sie sich keine Sorgen um den (offensichtlichen) Mangel an Interesse des Bewerbers machen.
Ja, auch wenn er hatte fragen, die Sie nicht schulden ihm eine Erklärung. Und wenn Sie mit Ihren HR-Mitarbeitern darüber gesprochen haben, werden Sie möglicherweise darauf hingewiesen, dass weitere Gespräche mit dem Kandidaten aus rechtlichen Gründen nicht ratsam sind.
Es ist auch erwähnenswert, dass das FizzBuzz-Problem je nach Fragestellung unterschiedliche "beste" Antworten hat. Wenn Sie nach der "einfachsten" und der "effizientesten" Lösung fragen, unterscheiden sich die besten Antworten grundlegend. Und dies kann Ihr Urteil ungerecht färben ... wenn Sie sich nicht sicher waren, wie Sie die Frage gestellt haben. (Andererseits hätte ein guter / erfahrener Kandidat die Voraussicht, dies zu klären, bevor er mit dem Programmieren beginnt ...)
quelle
Um Ihre Frage zu beantworten, nein, ich würde die Antwort nicht geben. Wenn die Person ein besserer Softwareentwickler sein möchte, wird sie die Antwort finden. Wenn Sie ihnen eine Antwort geben, nehmen Sie ihnen diese Gelegenheit.
Die relevantere Frage ist, wann Sie sich als Senior-Entwickler bezeichnen können. Dies variiert zwischen Organisationen und Ländern. Zum Beispiel eine Firma, bei der ich als Software Engineer mit 5 Jahren Erfahrung als Senior gearbeitet habe. Die Qualität der Erfahrung wurde nicht betont, nur die Länge.
Bis wir einen Standard entwickelt haben, der alle Softwareingenieure unabhängig von ihrer Sprache kategorisiert, bleibt es uns überlassen, ob der Einzelne über das Niveau ihrer Fähigkeiten entscheidet. Und wir werden auch weiterhin davon hören, dass "Senior Engineers" den rudimentärsten Kompetenztest nicht bestehen.
Vor ein paar Wochen wurde die Frage gestellt: "Wann sollten Sie sich als Senior Developer bezeichnen?" . Ich habe auch einen Blog-Beitrag zum Thema geschrieben.
quelle