Technische Interview- und Programmiererfähigkeiten [geschlossen]

14

Was ich sagen werde, mag ein bisschen kontrovers sein, aber ich bin heute sehr entmutigt - und deshalb werde ich dies fragen.

Ich hatte gerade ein Interview mit einer großen Technologiefirma für eine Praktikumsstelle, wo mir viele typische algorithmisch orientierte Interviewfragen gestellt wurden. Angesichts meines Hintergrunds halte ich mich für stark in Algorithmen (ich habe auch gute Noten in Algorithmen auf Hochschulniveau - Sachen, die NP-Vollständigkeit und darüber hinaus beinhalten (Approximation und randomisierte Algorithmen)), aber ich konnte das Interview leider nicht durchkreuzen Stellen Sie sich eine sehr effiziente Methode vor, um ein Saitenproblem in ca. 10 Minuten zu lösen. Nach dem Interview hatte ich ein Glas Wasser, aß eine Banane und entspannte mich eine Weile und versuchte es erneut. Und vola! Antwort: Ich könnte in weniger als 5 Minuten ankommen. Und das Schlimmste von allem - ich war tatsächlich auf dieser Strecke und der Interviewer hat darauf hingewiesen, aber zu viel Druck hat mich gekocht. Meine gesamte Erfahrung brachte mich dazu, über technische Interviews nachzudenken. Ich hatte einige Fragen und wollte sie in diesem Forum stellen -

  1. Ist es wirklich möglich, die technischen Fähigkeiten einer Person in einer halben Stunde zu beurteilen? Ehrlich? Oder ist es nur ein Würfelwurf?

  2. Messen technische Interviewfragen die Fähigkeit zur Problemlösung? Dieser Punkt ist sehr umstritten? Als Doktorand weiß ich, dass das Lösen von mathematischen Problemen das Lösen von Dingen beinhaltet, von denen Sie noch nie zuvor gehört haben. Auf der anderen Seite werden Fragen wie - Zusammenführen von zwei verknüpften Listen in sortierter Reihenfolge oder Drucken aller Elemente eines Binärbaums in der k-ten Ebene zu "bloßen Übungen", sobald jemand die Lösung gesehen oder das Problem im Voraus gelöst hat?

  3. Werden Leute, die in diesem Interview mit Bravour herauskommen, großartige Programmierer? Machen sie weiter und entwerfen schlanke Game-Engines, Grafikbibliotheken und schreiben schnelle Fork-Join-Frameworks? Gibt es Hinweise auf ein positives Zusammenspiel zwischen einer guten Leistung bei technischen Interviews und der tatsächlichen Programmierfähigkeit? Oder zielen diese Interviews eher darauf ab, einen Personentyp zu finden, der "Dinge erledigt" (Spolsky)?

Ich kann wetten, dass viele Wissenschaftler, die bahnbrechende Ideen veröffentlichen - ICML, VLDB, Mobicom -, diese Interviews durchkreuzen werden. Aber ich kann Ihnen versichern, dass sie zu den klügsten Menschen gehören, die Sie auf diesem Planeten finden werden.

Ich bin hauptsächlich im akademischen Bereich (Doktorand) - daher schätze ich einige Personen auf der anderen Seite des Zauns sehr. Jemand, der diese Interviews tatsächlich durchführt?

[Ok, alle zusammen. Danke für all die netten und nachdenklichen Antworten. Da ich keine weitere Frage stellen möchte, werde ich Sie bitten, diese Frage für mich zu beantworten.

Angenommen, Kandidat X hat ein gutes öffentliches Portfolio an Arbeiten, in denen er zu einem bekannten Open Source-Projekt beigetragen hat. Dort können Sie seine Patches überprüfen, die von ihm geschlossenen Bugs überprüfen und sich die von ihm erstellten Designs ansehen. In diesem Fall stellt sich die Frage, wie viel Gewicht Sie bereit sind, für seine öffentlich verfügbare / überprüfbare Arbeit zu geben, und wie gut er in weniger als 15 Minuten eine Frage zu einem Interview mit einem Binärbaum beantwortet.]

user396089
quelle
11
Wenn ich Leute für Jobs interviewe, suche ich keine guten Programmierer. Ich suche gute Ingenieure. Ein Programmierer schaut sich ein Problem an und codiert eine Lösung. Ein guter ENGINEER sieht sich ein Problem an und fragt: "Ist dies das eigentliche Problem, das ich lösen muss?" und wenn nicht, finde heraus, was das richtige Problem ist, entwerfe eine Lösung, die alle Faktoren im Spiel ausbalanciert (Zeitplan, Geld, Fähigkeiten) und übergebe sie dann einem Programmierer, um sie zu codieren.
PlayDeezGames
2
Hmm, macht Sinn. Jeder kann innerhalb von 6-12 Monaten grundlegende Programmierkenntnisse in C ++ / Java / Python erwerben. Aber um wirklich Dinge zu entwerfen, die ein sehr sorgfältiges Verständnis der Leistung erfordern, sind Thread-, Speicherprobleme und Kompromisse der Schlüssel. Genau. Es tut uns leid! aber ich kann dich nicht abstimmen, habe nicht genug Wiederholungen.
user396089

Antworten:

11

Denk daran, dass...

  1. Das Hauptziel eines Interviewprozesses ist es nicht, die absolute Wahrheit über die persönlichen Fähigkeiten jedes Befragten herauszufinden, sondern nur wenige Kandidaten aus einem Pool von vielen auszuwählen.
  2. Es ist VIEL, VIEL teurer, einen schlechten Entwickler einzustellen, als einen guten weiterzugeben.

Wenn Sie ein Interview führen, werden häufig unvollständige Verknüpfungen (z. B. technische Tests) verwendet, da es, wie Sie bereits erwähnt haben, keinen perfekten Prozess gibt, um eine Person in 30 Minuten beurteilen zu können. Aber da die meisten nicht den Luxus haben, Seite an Seite mit Ihnen zu arbeiten, sollten Sie einfach akzeptieren, dass es das ist, was es ist, ein Gewinnspiel, das jeder spielt.

DXM
quelle
"Es ist VIEL, VIEL teurer, einen schlechten Entwickler einzustellen, als einen guten weiterzugeben" - ja, ich verstehe das Argument hier, das aus rein utilitaristischer Sicht zu sein scheint, als ob es wahrscheinlich wäre, einen zu engagieren Schlechter Entwickler liegt nahe bei Null. Die damit verbundenen negativen Kosten können den erwarteten Gesamtnutzwert von positiv auf negativ senken.
user396089
5
@ user396089, in der akademischen Welt werden die Menschen zumindest Lippenbekenntnisse für die Bereitstellung von Diensten für Sie hinterlassen: Ausbildung, Mentoring, persönliches Wachstum usw. Zumindest nominell ist dies Teil ihrer Mission. Im privaten Sektor das Verhältnis ist 97% utilitaristische. Unternehmen sind nur daran interessiert, Ihnen eine Chance zu bieten, sofern sie davon profitieren.
Charles E. Grant
Um das zu ergänzen, was Charles sagte, wenn Sie durch die Tür gehen, sind Sie, genau wie 50 andere Kandidaten, ein völliger Fremder für das Unternehmen und den Personalmanager. Sie sind vielleicht die beste Person, die es je gegeben hat, auf fachlicher und persönlicher Ebene. Unter den gegebenen Umständen besteht das Unternehmensziel jedoch darin, den zukünftigen Wert zu maximieren und gleichzeitig die Suchkosten zu minimieren, während nach dieser Maximierung gesucht wird.
DXM,
Sie wissen, es ist lustig, dass ich über das einfache String-Problem nachdenke, das ich heute während des Interviews nicht lösen konnte, aber später löste. aber nach fast 3 wochen versuche ich immer noch ein problem zu lösen, das mit einem meiner hobbyprojekte zusammenhängt. Die Details dazu finden Sie hier - stackoverflow.com/questions/9056108/…
user396089
1
@ Antonio2011a: "wie gültig" ist ein lustiger Begriff und es ist nicht schwarz und weiß. Unterschiedliche Personen beurteilen die Qualität potenzieller Mitarbeiter mit unterschiedlichen Taktiken. Jede dieser Taktiken ist eine Art Abkürzung, da der einzig wahre Test darin besteht, die Person mit Ihnen zusammenarbeiten zu lassen und Zeit für den Hochlauf zu lassen. Wie gültig ist diese Frage? oder wie berechtigt, nach Big O zu fragen, oder wie berechtigt, nach dem zu fragen, woran er gearbeitet hat. Dies sind alles nur Grauzonen und keine davon ist perfekt.
DXM,
9

Ist es wirklich möglich, die technischen Fähigkeiten einer Person in einer halben Stunde zu beurteilen?

Nicht genau. Es ist möglich, die Leute auszusortieren, die überhaupt nicht programmieren können, und diejenigen, die das Zeug in ihrem Lebenslauf nicht erklären können. Darüber hinaus versuche ich normalerweise nur, die allgemeine Intelligenz und das Interesse auf diesem Gebiet zu messen. Es ist schwierig, Ihre Situation weiter zu kommentieren, ohne das Problem zu kennen, zu dessen Lösung Sie aufgefordert wurden.

Messen technische Interviewfragen die Fähigkeit zur Problemlösung?

Das ist nicht das Ziel meiner technischen Fragen. Stattdessen versuche ich herauszufinden, ob der Kandidat die Grundlagen der Informatik versteht. Um die Fähigkeit zur Problemlösung einzuschätzen, bitte ich einen Kandidaten, über ein interessantes Problem zu berichten, an dem er gearbeitet hat.

Werden Leute, die in diesem Interview mit Bravour herauskommen, großartige Programmierer? Oder zielen diese Interviews eher darauf ab, einen Personentyp zu finden, der "Dinge erledigt" (Spolsky)?

Das ist alles. Größe ist selten. Ich freue mich, jemanden zu finden, der kompetent ist.

Kevin Cline
quelle
Das Problem war eine Variation von KMP (wenn Sie die Zeichenfolge einmal durchlaufen, speichern Sie die Anzahl der Vorkommen einiger Zeichen, die Sie zuvor gesehen hatten). Am Ende können Sie je nach Länge der Zeichenfolge und Anzahl die eigentliche Frage beantworten. Alles in einem Durchgang - O (n) Zeit und unter Verwendung des konstanten Raums O (1)
user396089
2
"Ich freue mich, jemanden zu finden, der kompetent ist."
Programmierer
2
Das Bestehen eines Vorstellungsgesprächs ist (zumindest!) Glück und Größe zu verdanken. Sobald Sie einen bestimmten Wissensstand erreicht haben, spielt der Zufall eine viel (!) Größere Rolle, als fast alle Menschen erkennen. Lesetipp: Mlodinows The Drunkard's Walk .
Konrad Rudolph
Ja, ich habe dieses Buch und auch das noch interessantere und sarkastischere "Fooled by Randomness" von Nassim Nicholas Taleb gelesen. Unnötig zu erwähnen, dass ich nach dem Lesen der Bücher für eine Weile in eine Depression geraten bin - wenn Sie die Grundvoraussetzung der beiden Bücher verstehen und das ist - "Ja, es ist alles Glück! Glück! Und alles über Glück!" Die Welt ist zufällig und wir müssen damit umgehen.
user396089
5
  1. Ja. Ja ehrlich Das soll nicht heißen, dass 30 Minuten genug Zeit sind, um ein vollständiges Bild davon zu bekommen, wozu eine Person fähig ist. Die Aufgabe des Interviewers ist es, dort das Beste zu tun, um ein Gefühl dafür zu bekommen, wer der Interviewte ist und was er tun kann. Die Leute zu finden, die etwas in ihren Lebenslauf aufnehmen, von dem sie nicht wirklich wussten, ist ganz einfach. Es ist nicht möglich, genau herauszufinden, was der Befragte mit all seinen Fähigkeiten und Stärken kann.

  2. Ja. Sie lassen Sie sehen, wie der Befragte denkt. Es ist nicht immer notwendig, die richtige Antwort zu erhalten. Zu sehen, wie sich jemand mit einem Problem befasst, mit dem er zu kämpfen hat, ist genauso vorteilhaft wie zu sehen, wie jemand ein Problem ohne große Schwierigkeiten richtig beantwortet. Ich stelle immer eine Frage, die der Befragte möglicherweise nicht beantworten kann.

  3. Ich kenne keinen empirischen Beweis, der besagt, dass technische Interviews die besten Kandidaten finden, aber es ist das Beste, was ich versucht habe. Unterschiedliche Leute sind in verschiedenen Dingen gut und die richtigen technischen Antworten sind nicht das Einzige, was darüber entscheidet, ob jemand eingestellt wird. Eine gute Passform für das Unternehmen zu haben, ist ebenfalls sehr wichtig.

Ausgehend von Ihrer Frage denke ich, dass das Wichtigste, was Sie verstehen müssen, ist, dass die Tage klar definierter Rückmeldungen wie eine Briefnote vorbei sind. Die richtige Antwort zu finden, ist nur ein Teil des Ergebnisses. Ebenso wichtig ist es, guten Code zu schreiben, Ihre Ideen zu kommunizieren und anderen zuzuhören. Diese Bereiche sind jedoch subjektiver und müssen als solche behandelt werden.

Machen Sie genau wie bei der Lösung des Problems einen Schritt zurück und klären Sie den Kopf. Vieles steckt in einem Interview und der Interviewer weiß, dass es kein perfektes System ist. Sie versuchen, das Beste für das Unternehmen zu tun, so wie Sie versuchen, das Beste für Sie zu tun.

unholysampler
quelle
2
Das ist ein großartiger Punkt @unholysampler - "Die richtige Antwort ist nur ein Teil des Ergebnisses". Es spielt keine Rolle, ob Sie eines Tages NACH Weihnachten ein perfektes Online-Verkaufsportal liefern. Zu spät. Zeit ist genauso wichtig wie die richtige Antwort.
Jasonk
+1 "Sie versuchen, das Beste für das Unternehmen zu tun, so wie Sie versuchen, das Beste für Sie zu tun."
Burhan Ali
5

In einer halben Stunde können Sie beurteilen, dass die technischen Fähigkeiten einer Person mindestens so gut sind wie x. Das heißt, ihre Fähigkeit könnte höher sein als sie gezeigt haben, aber Sie können ziemlich sicher sein, dass es nicht schlimmer ist. Wenn x höher als Ihre Anforderungen ist, stellen Sie sie ein. Ja, es ist unfair, wenn Sie unter Ihrer tatsächlichen Fähigkeit demonstrieren. Alles, was ich sagen kann, ist besser zu demonstrieren.

Wenn jemand eine praktisch auswendig gelernte Antwort abrüttelte, würde ich ihm ein schwierigeres Problem geben. In der Wissenschaft ist das Auswendiglernen eine wichtige Fähigkeit. In einem Job ist es meistens überflüssig, wenn Sie Google direkt dort haben.

Angesichts der Tatsache, wie viele großartige Programmierer angestellt sind, kann man davon ausgehen, dass sie irgendwann ein Vorstellungsgespräch bestanden haben. Nein, Sie können nach einem halbstündigen Interview nicht sagen, ob jemand ein großartiger Programmierer sein wird. Glücklicherweise brauchen die meisten Unternehmen keine großartigen Programmierer. Sie verstehen sich gut mit soliden, zuverlässigen Programmierern, die keine Angst haben, Aufgaben außerhalb ihrer Komfortzone zu erledigen.

Der Grund, warum bahnbrechende Denker Bewerbungsgespräche möglicherweise nicht bestanden haben, ist, dass die Möglichkeit, auffällige, bahnbrechende Probleme zu lösen, sehr selten ist und dass Sie sich nur dann darauf verlassen können, wenn Sie bewiesen haben, dass Sie alltägliche, aber schwierige Probleme Ihrer Kollegen lösen können kann nicht, wie, warum die Software abstürzt, wenn es über 16% Last wird.

Karl Bielefeldt
quelle
2
+1 "... alltägliche, aber schwierige Probleme, die Ihre Kollegen nicht haben können, z. B. warum die Software abstürzt, wenn die Auslastung 16% übersteigt."
Jaydee
3

Nur sehr wenige Menschen wissen, ob ihre Interviewtechniken wirklich funktionieren, weil sie nie mehr über diejenigen erfahren, die versagt haben. Aber wenn nichts ihre Hypothese widerlegt, nehmen sie es als Bestätigung, dass sie wahr sind. Es gibt also ein bestimmtes Element beim Würfeln.

Wenn die ökonomischen Theorien, die besagen, dass Märkte rational und effizient sind, zutreffen würden, würden Unternehmen versuchen, Menschen einzustellen, die schlecht interviewt wurden, und zwar auf eine Weise, die sie bei ihrer Arbeit nicht schlecht macht. Jemand, der einen schlecht sitzenden Anzug trug, schwitzte, sehr nervös wirkte und Schwierigkeiten hatte, technische Probleme unter dem Druck eines Interviews zu lösen - wenn es externe Beweise gab, konnten sie andere technische Probleme lösen, und der Druck des Jobs war nicht so eines Interviews (wie sie es im Allgemeinen nicht sind) - würde die beste Chance eines Unternehmens darstellen, einen Kandidaten besser zu bekommen, als es sonst anziehen könnte, und würde dementsprechend handeln. (Think Money-Ball für die Unternehmenswelt). Irgendwann würden die Interview-Vorurteile verschwinden.

In der Praxis widerspricht dies der menschlichen Natur. Interviewer mögen selbstbewusste Extrovertierte, egal welche Position sie einnehmen, und selbst wenn das technische Interview schlechtere Informationen liefert als der Lebenslauf und die Referenzen (wie es in Ihrem Fall vielleicht der Fall ist), werden sie dies berücksichtigen.

Zu Ihren Fragen:

  1. Etwas. Die Tests haben ein schlechtes Signal-Rausch-Verhältnis, können jedoch auf Kosten der qualifizierten, aber schlechten technischen Interviews so eingestellt werden, dass die völlig unqualifizierten herausgefiltert werden.

  2. Siehe # 1. Ein Teil des Rauschens kommt von der Variation, ob die Leute das Problem schon einmal gesehen haben.

  3. Siehe # 1. Es gibt wahrscheinlich eine winzige positive Korrelation zwischen diesen Tests und dem Werden eines großartigen Programmierers.

Mein Rat - Studieren Sie einige technische Beispielfragen, um eine grundlegende Vertrautheit zu erlangen. Denken Sie daran, es ist ein Würfelspiel, also versuchen Sie während des Interviews, selbstbewusst zu sein. Wenn Sie erklären können, was Sie denken, ohne sich vom tatsächlichen Denken abzulenken, dann tun Sie dies. Wenn es wirklich schlecht läuft, geben Sie zu, dass Sie bei Interviews nervös werden, und lassen Sie sie wissen, dass Sie normalerweise keine Probleme damit haben - geben Sie möglicherweise ein Beispiel für ein ähnliches, aber schwierigeres Problem, das Sie gelöst haben.

bA
quelle
1
"Interviewer mögen selbstbewusste Extrovertierte" ... das ist für mich etwas beunruhigend, mein Myers Briggs-Typ ist INTJ (vorausgesetzt, MB ist ein kleiner Vertreter des tatsächlichen Persönlichkeitstyps).
user396089
2
Viele Softwareentwickler sind Introvertierte wie ich. Folglich sind es auch viele Interviewer. Klar, Vertrauen hilft. Aber vernünftige Antworten helfen noch viel mehr.
Kevin Cline