Ich habe mich kürzlich mit einem Kollegen über technische Fragen in Interviews gestritten. Als Absolvent habe ich viele Unternehmen umrundet und festgestellt, dass sie dieselben Fragen verwendeten. Ein Beispiel ist "Können Sie eine Funktion schreiben, die bestimmt, ob eine Zahl eine Primzahl ist oder nicht?", 4 Jahre später stelle ich fest, dass eine bestimmte Frage selbst für einen Nachwuchsentwickler recht häufig ist. Ich sehe das vielleicht nicht richtig, aber sollten Softwarehäuser nicht intelligent genug sein, um sich ihre eigenen Interviewfragen auszudenken? Ich war als Absolvent bei ungefähr 16 Interviews und die gleichen Fragen kamen in ungefähr 75% von ihnen auf. Dies lässt mich glauben, dass viele Unternehmen faul und einfach Google sind: "Vorlagenfragen für das Befragen von Softwareentwicklern", und ich bin der Meinung, dass diese Vorgehensweise selbst einen schlechten Dienst leistet.
Frage: Ist es besser, eine Reihe von Fragen aus einer Vorlage zu verwenden, oder sollten Softwarehäuser nach mehr Originalität streben und ihr eigenes Interviewmaterial erstellen?
Aus meiner Sicht könnte ich das nächste Interview durchgehen, wenn ich ein Interview nicht bestanden hätte und nach guten Antworten auf die Fragen Ausschau halten würde, die ich durcheinandergebracht habe, wenn die Fragen dieselben wären.
Antworten:
Viele dieser Fragen bleiben genau deshalb bestehen, weil es schwierig ist, klare Fragen zu stellen, die möglichst wenig Fachwissen erfordern und die Fähigkeit erfordern, einen Algorithmus zu entwickeln, ohne eine Trickfrage zu sein, die entweder jemandem gestellt wird. " get "oder" not get ", und dass die Menschen einen historischen Hintergrund von Antworten haben, mit denen sie den Kandidaten vergleichen können. Und die besten Fragen haben mehrere Ebenen korrekter Antworten, anhand derer der Interviewer die Fähigkeiten des Kandidaten zur Problemlösung beurteilen kann. Wenn zum Beispiel jemand einen trivialen Algorithmus zur Ermittlung von Primzahlen vorschlägt, können wir darüber sprechen, wie Sie die Implementierung optimieren oder den Interviewer, um den Kandidaten zu einem der komplexeren Algorithmen zu führen.
Ich war in Gruppen, in denen eine Reihe verschiedener Entwickler bewertet haben, wie schwierig ein bestimmtes Problem für eine Reihe von Befragten sein würde, und die Schätzungen waren auf der ganzen Karte verteilt. Viele Leute schauen sich FizzBuzz anfangs an und bezeichnen es als zu einfach. Wenn Sie in das Interview einsteigen, ohne zu verstehen, wie schwierig die Fragen sind, hat die fünfte Person, die Sie interviewen, einen enormen Vorteil gegenüber der ersten Person, da Sie erfahren haben, dass Menschen mit FizzBuzz zu kämpfen haben, während Sie sich einen negativen Eindruck von der ersten Person gemacht haben Sie interviewt, weil sie identische Kämpfe hatten.
Wenn Entwickler sich neue Fragen stellen, ist in der Regel auch unbeabsichtigtes Kultur- oder Domänenwissen eingebettet. Sie werden zum Beispiel Fragen zu einer Sportart stellen, die tendenziell Menschen einen Vorteil verschafft, die die Regeln dieser Sportart kennen und die entweder schnell eine Mehrdeutigkeit erkennen oder eine "offensichtliche" Annahme treffen können. Jemand, der mit dem Sport überhaupt nicht vertraut ist, muss die Spielregeln im Handumdrehen herausfinden, und es ist viel wahrscheinlicher, dass er einen Fehler macht oder eine weniger ausgefeilte Antwort findet. Oder sie stellen eine Frage, die ungewollt davon ausgeht, dass die Kandidaten einen relativ kleinen Leckerbissen kennen / sich daran erinnern. Jemand, der seit Jahren an Buchhaltungssystemen arbeitet, zum Beispiel Es kann davon ausgegangen werden, dass jeder weiß, was ein Buchhaltungssystem mit zwei Einträgen ist, oder dass eine Frage, die eine einfache Schemadefinition für ein Buchhaltungssystem mit zwei Einträgen voraussetzt, einem kompetenten Entwickler klar ist. Aber es könnte leicht einen guten Entwickler aus der Fassung bringen, der sich mit der Idee auseinandersetzen muss, eine Abbuchung in bar vorzunehmen, um das Barguthaben zu erhöhen, und eine Gutschrift, um das Barguthaben zu verringern. Jemand, der Accounting 101 übernommen hat, würde sich jedoch schnell durchsetzen. Wenn Sie beabsichtigen, die Vertrautheit des Bewerbers mit der Buchhaltung zu testen, könnte dies eine durchaus vernünftige Frage sein. Wenn Sie jedoch keinen Fachexperten suchen, ist dies problematisch. Aber es könnte leicht einen guten Entwickler aus der Fassung bringen, der sich mit der Idee auseinandersetzen muss, eine Abbuchung in bar vorzunehmen, um das Barguthaben zu erhöhen, und eine Gutschrift, um das Barguthaben zu verringern. Jemand, der Accounting 101 übernommen hat, würde sich jedoch schnell durchsetzen. Wenn Sie beabsichtigen, die Vertrautheit des Bewerbers mit der Buchhaltung zu testen, könnte dies eine durchaus vernünftige Frage sein. Wenn Sie jedoch keinen Fachexperten suchen, ist dies problematisch. Aber es könnte leicht einen guten Entwickler aus der Fassung bringen, der sich mit der Idee auseinandersetzen muss, eine Abbuchung in bar vorzunehmen, um das Barguthaben zu erhöhen, und eine Gutschrift, um das Barguthaben zu verringern. Jemand, der Accounting 101 übernommen hat, würde sich jedoch schnell durchsetzen. Wenn Sie beabsichtigen, die Vertrautheit des Bewerbers mit der Buchhaltung zu testen, ist dies möglicherweise eine vernünftige Frage. Wenn Sie jedoch keinen Fachexperten suchen, ist dies problematisch.
Ich nehme an, es ist möglich, dass sich jemand die Antworten auf die wenigen hundert "allgemeinen" Vorlagenfragen merken könnte, die die Leute verwenden, was mich als Interviewer nicht sonderlich stört. Erstens wäre es etwas beeindruckend, wenn sie dies tun würden, und würde einiges an Fleiß und Problemlösung widerspiegeln. Zweitens wäre es im Allgemeinen ein ziemlich gutes Training - wenn der Entwickler weiß, wie man einen String umkehrt, einige Algorithmen zum Auffinden von Primzahlen kennt, wie man Schleifen schreibt und Steuerungskonstrukte für FizzBuzz implementiert, die verschiedenen kommenden Graph-Algorithmen kennt regelmäßig aufstehen, etc .-- Sie sind wahrscheinlich ein ziemlich abgerundeter Entwickler. Wenn der Entwickler es schafft, sich die Antworten zu merken, ohne etwas zu lernen, werden sie erwischt, wenn der Interviewer einen Drilldown durchführen möchte oder
quelle
Ich denke, es gibt diese einfachen Fragen, Fizzbuzz, Vertauschen einer Zeichenfolge usw., und dann gibt es bestimmte Fragen, während es schwierig ist, mit dem zusätzlichen Druck des Interviews und der kurzen Zeit die beabsichtigte optimale Lösung zu finden, wenn Sie sie noch nicht gesehen haben Einschränkungen. Das Schlimmste ist, dass Personalvermittler ohne technische Kenntnisse manchmal einige dieser Fragen stellen und nach einer sehr spezifischen Antwort suchen. Wenn Sie nicht die optimale Antwort geben, denken sie, dass Sie ein absoluter Idiot sind. Auch wenn Ihre Antwort funktioniert, löst sie das Problem, und obwohl sie möglicherweise nicht optimal ist, ist sie nicht zu ineffizient.
Einige Beispiele:
Wie würden Sie ein Kartenspiel mischen? Sie suchen nach der Fisher-Yates-Methode http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle Andere Antworten sind "falsch". Dies ist nichts, was Sie wahrscheinlich wissen werden, es sei denn, Sie wollten vorher Karten mischen und haben es genau nachgeschlagen. Vielleicht stolpern Sie im Verlauf der Beantwortung darüber, aber nach meinen Erkenntnissen wird von Ihnen erwartet, dass Sie diese Erkältung kennen, und es ist zweifelhaft, dass Sie viel Zeit haben, um die Lösung zu finden. Eine andere weniger effiziente (aber vielleicht offensichtlichere) Möglichkeit besteht darin, ein neues Array mit einem Zeiger auf das ursprüngliche Array und einer Zufallszahl zu erstellen und das Array dann nach der Zufallszahl zu sortieren. Verwenden Sie dann das sortierte Array, um ein neues Array von Karten zu erstellen. Auf jeden Fall bekam ich 0 Punkte dafür, dass ich das einem Personalvermittler vorstellte.
Ein weiteres Beispiel ist die Frage, wie Sie eine doppelte Zahl in einer Liste von n Zahlen von 1 bis n-1 erkennen können. Die naheliegende Antwort (die in zeitlicher Hinsicht relativ effizient ist) ist die Verwendung einer Hash-Tabelle, um jedes Element einzufügen. Wenn Sie ein bereits eingefügtes Element finden, haben Sie das Duplikat gefunden. Die optimale Antwort liegt darin, dass die Zahlen zwischen 1 und n liegen, wenn es keine Duplikate gibt. Sie können die erwartete Summe als n (n + 1) / n erhalten. Wenn Sie dann das Array zusammenfassen, erhalten Sie die tatsächliche Summe, die nd kleiner als die erwartete Summe ist. Also im Grunde genommen n - (Erwartete Summe - Tatsächliche Summe) = doppelte Zahl ... Es ist ein ziemlich spezieller Fall ... Ich habe vor einiger Zeit in einem Online-Post über Interviewprobleme etwas über ein verwandtes Problem mit dem gleichen Trick gesehen Mir ging es gut ....
In einem anderen Fall kehren Sie alle Wörter in einer Zeichenfolge um, ohne zusätzliches Leerzeichen zu verwenden. Ich musste darüber nachdenken und der Personalvermittler war in den 5 Minuten, die ich dachte, ziemlich ungeduldig (das Aufteilen und Wiederzusammenfügen der Zeichenfolge in umgekehrter Reihenfolge oder das wörtliche Wechseln in ein neues Array ist sehr einfach). Ich fand den Rand des letzten Wortes, fand das Ende des ersten Wortes und verschob ständig die gesamte Liste um 1 nach unten und fügte dann den entsprechenden Buchstaben ein. Dann wiederholen, bis Sie das Ende der Liste erreicht haben. Diese Methode funktionierte und der Interviewer stimmte zu (er war ein bisschen technisch), aber sie ist ziemlich ineffizient. Als ich zu Hause ankam, suchte ich nach der optimalen Antwort. Es ist einfach, die Liste umzukehren und dann jedes einzelne Wort umzukehren. Einige Leute könnten sich das einfallen lassen,
Jetzt ist es wahr, wenn Sie einige dieser Probleme gesehen haben, können Sie sie einfacher lösen. Weil es einige ähnliche Fragen mit einigen der gleichen Tricks gibt. Ich weiß, dass insbesondere die n (n-1) / 2-Formel und die Nummernliste verschiedene Variationen aufweisen. Aber ich weiß immer noch nicht, was diese Fragen testen. Ein FizzBuzz ist etwas, das jeder können sollte (obwohl ich Variationen gesehen habe, die nicht so einfach sind. In diesem Fall frage ich mich, ob dies für eine Interview-Situation realistisch ist, ohne den Code eingeben / debuggen zu können). Einige dieser Fragen sind offensichtlich, sobald Sie sie sehen, aber wenn Sie sie nicht gesehen haben, sind sie nicht offensichtlich. Immerhin hat jemand erwähnt, dass es Jahre gedauert hat, bis die erste korrekte Implementierung der binären Suche angezeigt wurde ... Im Moment ist die binäre Suche so offensichtlich, dass jeder darüber lesen kann.
Trotzdem denke ich, das Schlimmste ist, wenn nicht-technische Leute die Fragen stellen, weil sie nicht zu schätzen wissen, dass Ihre Lösung korrekt, aber nicht optimal ist. Sie wissen nur, dass Ihre Lösung nicht die vorgestellte ist und daher ist alles falsch, Sie erhalten keine Anerkennung für den Versuch. Auch nicht optimale Lösungen zeigen oft Kenntnisse über Programmierkonstrukte. Es ist mir egal, wie gut jemand ein Kartenspiel mischen kann, es sei denn, ich programmiere Pokerspiele. Und selbst wenn, nachdem ich ihnen den effizienten Algorithmus gezeigt habe, bin ich sicher, dass jeder, der halbwegs anständig ist, ihm folgen kann.
Vorlagenfragen scheinen nur Kandidaten einen Vorteil zu verschaffen, die länger interviewt haben, da sie mit größerer Wahrscheinlichkeit mehr Vorlagenfragen gesehen haben. Sogar FizzBuzz, wenn Sie es zum ersten Mal sehen, können Sie ausflippen, aber wenn Sie es immer wieder sehen, gewöhnen Sie sich mehr daran. Das Beste, was Sie tun können, ist, eine Codierungsherausforderung zu erstellen, die eine benutzerdefinierte Geschäftslogik erfordert. Erstellen Sie beispielsweise einen Datensatz (ein Array von Objekten / Datensätzen) und anschließend einige Geschäftsregeln, die auf jedes Objekt angewendet werden sollen, und geben Sie eine Antwort zurück (z. B. eine Bewertung usw., aber sehr benutzerdefinierte Regeln). Wahrscheinlich haben sie schon unzählige Male durch Datensätze geschleift und Logik angewendet. Ihre Regeln sind jedoch eindeutig, sodass sie zumindest die von Ihnen erstellten Regeln verstehen und erfolgreich implementieren müssen.
Nehmen wir an, das prognostizierte Gehalt und eine Liste der Kandidaten und ihrer drei beliebtesten Videospiele sowie möglicherweise ein Anfangsgehalt. Kandidaten, die Zelda mögen, erhalten eine Strafe von 300, Kandidaten, die die kleine Meerjungfrau mögen, einen Bonus von 200. Kandidaten, die Donkey Kong und Super Mario Brothers, aber nicht Dr. Mario mögen, erhalten einen Bonus von 300. Kandidaten, die Metroid oder Kid Icarus mögen, erhalten einen Bonus von 200 usw. Es scheint ein bisschen verrückt zu sein, aber es würde Ihnen die Fähigkeit zeigen, Geschäftsregeln in logische Programmkonstrukte zu übersetzen und ihr Verständnis der Booleschen Logik zu testen. Insgesamt nicht viel anders als Fizzbuzz mit Ausnahme von Modulen und Schleifen. Sie können ihnen natürlich die Liste geben und sie durchlaufen lassen und die Ergebnisse auch unter Verwendung bestimmter Ausgabekriterien auf dem Bildschirm ausdrucken.
quelle
Bei meiner letzten Jobsuche war ich in einer sehr ähnlichen Situation. Ich glaube, ich hatte bei allen Unternehmen die gleiche Frage zu verknüpften Listen, aber eine (die, bei der ich derzeit beschäftigt bin).
Eine Sache, die ich bemerkt habe, war, dass diese Fragen im ersten Interview gestellt wurden.
Aus Sicht der Interviewer haben sich Personen, die diese Fragen nicht richtig beantworten können, nicht auf das Interview vorbereitet. Warum sollten sie dann mehr Zeit mit ihnen verschwenden? Ich denke nicht, dass dies die richtige Idee ist. Das Unternehmen wird eine ganze Reihe von Leuten gewinnen, die Antworten von Google rezitieren können, um zur nächsten Runde überzugehen, aber nicht unbedingt eine Gruppe von Leuten, die kompetente Entwickler sind.
Ich fand die FizzBuzz-Fragen auf der Heizplatte persönlich ärgerlich, aber es war ein einfaches Interview. Ich mag ein herausforderndes Interview. Wenn ich potenzielle Mitarbeiter interviewe, möchte ich sicherstellen, dass sie denken und Probleme lösen können. Ich gehe davon aus, dass sie Google nutzen können.
Sollte ein Unternehmen eine Fragenvorlage haben? Ja. Es hilft bei der Bewertung der Kandidaten für die ersten Runden. Sollte die Vorlage aus allgemeinen Problemen bestehen, die über Google leicht gefunden werden können? Nein, das ändert nur kurz alle Beteiligten.
quelle
"Sollten Softwarehäuser danach streben, origineller zu sein und ihr eigenes Interviewmaterial zu entwickeln?"
Ja, das sollten sie, aber praktisch ist es so, dass Sie zur Arbeit kommen und eine E-Mail von der Personalabteilung erhalten, die besagt, dass Sie sich morgen für zwei Kandidaten in der Interviewschleife befinden. Sie haben es in Alligatoren schon auf sich genommen, und Ihr Manager wird Ihnen nicht danken, dass Sie sich einen halben Tag Zeit genommen haben, um neue, gute Interviewfragen zu stellen. Wenn Sie unter Zeitdruck stehen, greifen Sie auf Fragen zurück, die Ihnen gestellt wurden oder die Sie bei Google schnell finden.
quelle
Fragen, wie Sie sie erwähnen, sind normalerweise Fizzbuzz-Fragen und werden nicht für Einstellungen verwendet. Sie sind eine verneinende Frage (dh richtige Antworten bringen Ihnen in keiner Weise Arbeit, aber falsche Antworten werfen Sie in den Papierkorb). Sie sind also nicht sehr wertvoll.
Es sind die Fragen, die später gestellt werden und die oft einen starken Bezug zur Art der Arbeit des Unternehmens und zur Dynamik des Teams haben.
Die Antwort lautet also: beides.
quelle
Wenn die meisten oder alle Fragen gleich sind, ist es in der Tat eine schlechte Sache (für sie also). Das zeigt wahrscheinlich, dass der Interviewer nicht gut auf die Aufgabe vorbereitet ist.
Beachten Sie, dass die Verwendung von "Vorlagen" -Einstiegsfragen wie dem FizzBuzz-Test akzeptabel sein kann, um das völlig Unbeholfene schnell zu beseitigen, ohne zu viel Zeit und Mühe zu investieren. Auch dann sind Variationen des Themas nützlich, um zu vermeiden, dass Antworten direkt von Google kommen. Andererseits ist es einfach, den Kandidaten zu fragen, was der gerade geschriebene Code tatsächlich tut und warum er funktioniert (oder nicht). Ich glaube, dass ein technisch versierter Interviewer schnell erkennen kann, ob jemand nur vorgibt, die Antwort zu kennen.
Und was noch wichtiger ist, wenn jemand den Einstiegstest besteht, sollten die schwierigeren Fragen auftauchen, bei denen es nicht mehr ausreicht, Antworten in Dosen zu rezitieren. Ich persönlich interessiere mich mehr für die Denkprozesse und Problemlösungsfähigkeiten des Befragten im Allgemeinen als für die spezifische Lösung eines Rätsels. Das andere wichtige Thema wären Entwicklungsprozesse und -ansätze - ich initiiere eher eine offene Diskussion als konkrete Fragen zu diesen Themen. Zu diesen Themen gibt es keine richtigen oder falschen Antworten, daher gibt es keine Möglichkeit, sich im Voraus vorzubereiten. Aber aus einer Diskussion lerne ich viel darüber, ob es mir und dem Team angenehm ist, mit diesem Kandidaten zu arbeiten.
Daher ist eine begrenzte Anzahl von "Vorlagen" -Fragen in Ordnung, aber ein gutes Interview ist ein Ablaufprozess, bei dem sich der Interviewer an die Situation anpassen sollte, einschließlich des (beworbenen und realen) Qualifikationsniveaus des Kandidaten, seines mentalen Zustands (Nervosität / Müdigkeit) usw.
quelle
Meine Interviewvorlage im Pseudocode:
if question (FizzBuzz_type_question) == richtig dann
für jede (Frage q in array_of_more_interesting_questions) Frage (q) else
Interview beenden.
quelle
Ich denke, das Interview sollte unterteilt werden in:
Sozialer Aspekt (außer Personalwesen) - Passt diese Person gut zu unserer Organisation? Hat er die richtige Einstellung - Ist er bereit, unserem Führungsstil zu folgen? Dies muss originell sein, da Unternehmen und Teams unterschiedlich sind.
Allgemeine Eignung für die Rolle - Auch dies sollte sich von Ort zu Ort unterscheiden
Kern: Thematische Fragen, die sich auf den Hauptberufsbereich konzentrieren - Dies ist wissenschaftlich und muss nicht originell sein, da es wissenschaftlich ist.
Alltagstauglichkeit: Dies sind Fragen zu Themen, die der Kandidat täglich zu erledigen hat. Es mag wissenschaftlich sein, aber es ist besser, wenn es um die eigentliche Arbeit geht, die er erwartet. Dieser Teil würde von Ort zu Ort variieren.
quelle