Was ist der beste Weg, um einen exzellenten Programmierer in einem Vorstellungsgespräch zu erkennen?


82

Im Rahmen eines Interviews: Was ist der beste Weg , um zuverlässig zu identifizieren , wenn jemand eine ist ein ausgezeichneter Programmierer . Damit meine ich, dass er einer von denen ist, die 10-15 mal effizienter / schneller / besser sind als seine Kollegen am unteren Ende des Spektrums.

Viele von uns haben vom FizzBuzz-Problem gehört, um die Schwachen auszumerzen . Sicherlich ist es ein ernstzunehmender Indikator dafür, dass ein Bewerber ein schwacher Kandidat ist, sich 5-10 Minuten Zeit zu nehmen, um dieses Problem zu lösen. Ich gehe davon aus, dass ein guter Indikator dies so schnell lösen kann, wie Sie schreiben können. Dies scheint jedoch nicht ausreichend zu sein.

Ist es vielleicht so, als würde er ihm ein mäßig kompliziertes Buggy-Programm geben und sehen, wie schnell er es finden und alle Probleme damit identifizieren kann?


Die Frage geht davon aus, dass dies zuverlässig möglich ist.
Anthony


nicht unbedingt. Eine gültige Antwort wäre "Es gibt überhaupt keinen Weg"
Claudiu

Antworten:


65

Ich entschuldige mich bei allen, die sich nicht für lange Antworten interessieren, aber ich denke, es ist ziemlich wichtig, Ihre Kandidaten zu qualifizieren, bevor Sie sie einstellen. Jeder, der eine beträchtliche Anzahl von Interviews in dieser Branche durchgeführt hat, weiß, dass die meisten Kandidaten die ersten 15 bis 30 Minuten eines Interviews nicht durchhalten werden. Daher wird der größte Teil dieser Liste nicht benötigt. Denken Sie nur daran, wie teuer es ist (finanziell und emotional), jemanden zu entlassen, bevor Sie meine Liste als übertrieben abtun. Ich habe versucht, meine Interviewthemen hier in der Reihenfolge ihrer Wichtigkeit aufzulisten.

Allgemeine Intelligenz (Denksportaufgaben / Logikrätsel)

Informatik-Kenntnisse

Programmierübungen

  • GCD , Factorial , Fibonacci , Türme von Hanoi
  • String- und Listenumkehr
  • Bestimmen Sie, ob eine einfach verknüpfte Liste eine Schleife enthält (können Sie dies mit nur zwei Zeigern tun?)
  • Finde den Bug

Kenntnis objektorientierter Programmiertechniken und gängiger Entwurfsmuster

Algorithmusanalyse (Laufzeit- O (n) -Komplexität und Speicheranforderungen)

Einsatz von Tools und Methoden

Kenntnis allgemeiner Sicherheitslücken und Angriffe

Grundlegende Mathematik

  • Zahlensysteme (von einer Basis in eine andere konvertieren)
  • Wahrscheinlichkeitstheorie
  • Abstand zwischen zwei Punkten auf der kartesischen Ebene (Satz von Pythagoras)
  • Quadratwurzel (Heron of Alexandria, sukzessive Approximation)

Kryptographie

  • Kryptografie mit öffentlichen Schlüsseln
  • Kryptographie mit symmetrischen Schlüsseln
  • Hash-Funktionen
  • Kryptografische Protokolle (geheimes Teilen, wissensfreie Beweise)

Diskrete Mathematik

  • Logik
  • Mengenlehre
  • Graphentheorie
  • Informationstheorie
  • Kombinatorik
  • Beweise (wie Existenz irrationaler Zahlen, unendliche Primzahlen)

Vielleicht möchten Sie auch das Buch Programming Interviews Exposed lesen . Es ist eine gute Referenz zum Thema.


10
Puh, das muss ein langes Interview sein.
Rick Minerich

8
Heute habe ich versucht, "Crossing Bridges" mit meinem Teamkollegen aus dem ACM-Programmierwettbewerb zu lösen. Der einzige Unterschied ist, dass wir es für eine beliebige Anzahl von Personen lösen müssen. Wir brauchten ungefähr 30 Minuten, um nach einer beliebigen Anzahl von N Personen zu suchen. In einem Interview empfinde ich Rätsel als eine schlechte Metrik.

52
In einem Interview saugen Rätsel, weil der Befragte nervös ist, nicht klar denkt usw. Außerdem sind viele Rätsel a-ha! Geben Sie Dinge ein, die Ihnen wirklich nichts über den Kandidaten sagen.

11
Ich finde diese mathematischen Probleme sehr schwierig. Wie können Sie sich nach 10 Jahren Informatik daran erinnern, wie Sie irrationale Zahlen und dergleichen beweisen können?

14
Das Problem mit Rätseln ist, dass die meisten Leute sie nicht gelöst haben. Sie haben gerade die Antworten gesehen. Die versiertesten Kandidaten werden also so tun, als hätten sie sie nicht gesehen, und die Antwort, die sie bereits kennen, zögernd erarbeiten. Wenn es Ihr Ziel ist, kluge und nicht betrügerische Leute einzustellen, dann sind Rätsel eine schlechte Wahl.
Kyralessa

28

Ah, die ewige Frage.

Ich habe in diesem Jahr viele Interviews geführt (ich habe morgen zwei Kandidaten geplant), und meiner Erfahrung nach geht es bei der Einstellung mehr um Bauchgefühl und menschliche Fähigkeiten und weniger um technisches Wissen.

  1. Nehmen Sie sich Zeit mit Lebensläufen. Einige Lebensläufe können innerhalb von Sekunden abgelehnt werden, andere dauern eine halbe Stunde. Manchmal denke ich viel länger über einen Kandidaten nach, der auf einem Lebenslauf basiert, als ich ihn interviewe. Einige Male habe ich Interviewfragen speziell für diesen Kandidaten vorbereitet, obwohl ich normalerweise keine Fragen vorbereitet habe.

  2. Technisches Wissen - es gibt ein Minimum, das ich möchte, und das ist normalerweise ziemlich einfach zu sagen. Wenn Sie Zweifel haben, sprechen Sie während des Interviews über Projekte, die er im Lebenslauf erwähnt hat, und gehen Sie so weit wie nötig. Dies ist in der Regel mehr als genug, um Ihnen zu sagen, was er weiß und was ihn zum Ticken bringt. Bildung ist nicht wichtig, frühere Jobs sind wichtig, mögliche persönliche Projekte haben eine hohe Punktzahl.

  3. Fragen Sie nach, was er tun und wohin er mit seiner Karriere möchte. Brauchen Sie, was er hat, und können Sie angeben, was er will? Gegen Ende des Interviews frage ich normalerweise nach einem bevorzugten Gehalt. Wenn er nicht in meiner Reichweite ist oder ich für das, was er weiß, nicht so viel bezahle, beenden wir das Interview.

  4. Vor allem muss der Kandidat in das Team passen, und ich muss zuversichtlich sein, dass wir in der Lage sind, zusammenzuarbeiten. Ich muss ihn nicht mögen, aber ich muss in der Lage sein, mit ihm umzugehen, und er muss in der Lage sein, mit mir umzugehen. Wenn das nicht der Fall ist, werde ich bestehen, weil ich sein technisches Wissen nicht nutzen kann. Wenn dies der Fall ist und er schnell lernt, hindert mich sein mangelndes technisches Wissen nicht daran, ihn einzustellen.

Ich habe Mädchen aus der Personalabteilung geschult, mir Lebensläufe zu übergeben, sobald sie diese erhalten. Ich plane das Vorstellungsgespräch so schnell ich kann persönlich (idealerweise übermorgen, nachdem ich einen Lebenslauf für gute Lebensläufe erhalten habe). Dann bekommt er eine halbe Stunde oder eine Stunde Interview mit mir und mindestens einem Mitarbeiter (normalerweise meinem Chef oder Teammitglied), wo ich ihn kennenlerne und alle Fragen beantworte. Auch wenn ich seinen Antrag vor Ort ablehne, bekommt er 20-30 Minuten Führung durch das Unternehmen und ich spreche darüber, was wir tun und wie wir es tun. Dann schicke ich ihn für einen Psychotest und ein bisschen wirklich grundlegender Papierkodierung / SQL an die Personalabteilung. Beide Tests spielen für meine Entscheidung fast nie eine bedeutende Rolle, es ist eher eine Bestätigung, die ich im Interview richtig beurteilt habe. Nach den Ergebnissen ist es ein 15-minütiges Gespräch, in dem ich ihm ein Angebot mache. Wenn wir die Bedingungen aushandeln, mit denen wir beide zufrieden sind, wird er eingestellt.

Englisch: emagazine.credit-suisse.com/app/art ... = 157 & lang = en Dies ist ein Prozess, für den ich durch die Bürokratie eines Unternehmens kämpfen musste, nachdem ich ein paar großartige Kandidaten vermisst hatte, und der funktioniert, weil ich über die Einstellung von Mitarbeitern entscheide (obwohl ich den Rat sowohl von HR als auch von Mitarbeitern höre, meinen Kollegen) Wort ist endgültig). Mehr Entscheider, längerer Prozess. Je länger der Prozess dauert, desto mehr müssen Sie Google sein, um den Zuschlag zu erhalten.

Sobald ich sicher bin, dass das kein Spiel ist, beende ich das Interview, er bekommt die Firmenführung und es ist vorbei. Dies kann bis zu zwei Minuten dauern, während Sie ein Interview planen. Auch wenn Sie einen Kandidaten ablehnen, verkaufen Sie das Unternehmen. Wenn Sie gute Arbeit geleistet haben, kann eine gute Einstellung durch Mundpropaganda eines abgelehnten Kandidaten erfolgen.

Auch ein Tipp. Senden Sie Ablehnungsschreiben (oder E-Mails) für jede Bewerbung, die Sie erhalten. In meiner jetzigen Firma überlasse ich das normalerweise der Personalabteilung (abgesehen von denen, die ich während des Interviews erzähle), aber irgendwann war es von unschätzbarem Wert, von abgelehnten Kandidaten eine begeisterte Antwort in den Zeilen von "DANKE! Du bist die erste Firma, die es tatsächlich gibt antwortete, anstatt mich fragen zu lassen, ob sie eines Tages antworten werden! "


Psychologische Tests?

5
@ Ink-Jet: Nein, Psychotests waren korrekt - der Kandidat wird gebeten, einen Code zu schreiben, der von einem gewalttätigen Mann gepflegt wird, der auch seine Heimatadresse kennt.

Das habe ich das erste Mal gelesen, um ehrlich zu sein.

@Grundlefleck - ja, das ist ungefähr richtig. :)
Domchi

2
Wenn ich Ihr Ablehnungsschreiben bekommen würde, würde ich Ihnen danken. Ich wurde durch Schweigen abgelehnt, nachdem ich ein Telefoninterview geführt hatte, und es ist nervenaufreibend.
01d55

24

Diese Antwort ist ein wenig über den Tellerrand hinaus, aber ich denke, es ist ein wertvoller Punkt.

Die besten Programmierer interviewen selten. Sie müssen nicht . Wenn Ihr Unternehmen sich weltweit besonders verändert oder aufregend geheim hält oder mehrere Programmierer, die sie respektieren, dorthin gegangen sind, können sie sich bewerben, aber großartige Programmierer erhalten Jobs über ihr Netzwerk von Mitarbeitern, nicht durch Zusendung von Lebensläufen.

Also: Der beste Weg, einem exzellenten Programmierer in einem Vorstellungsgespräch davon zu erzählen, ist, dass er nicht da ist .


2
so wahr ... toller Punkt. :)
Arnis Lapsa

5
Also ... ist es "wen du kennst" und nicht "was du tust"? Die wirklich schrecklichen Programmierer bekommen ihre Arbeit auch durch Freunde und Familie. Oh, tut mir leid "Netzwerk von Mitarbeitern".
Philip

17

Jede Antwort muss Codebeispiele enthalten. Wenn Sie einen Programmierer einstellen, ohne seinen Code zu sehen, möchten Sie einen Koch einstellen, ohne zu versuchen, zu kochen.


11

Möglicherweise kommt ein "exzellenter" Programmierer nicht zu Ihnen, um ein Interview zu führen. Sie müssen ihn wahrscheinlich jemand anderem stehlen.


doh! Diese Antwort scheint immer beliebter zu werden. Genau wie ich anfangen muss, mich zu bewerben ...
interstar

9

Eine Möglichkeit, den leidenschaftlichen Programmierern von den "Ich will nur einen Job" -Programmierern zu erzählen, besteht darin, sie zu fragen, welches Buch sie diese Woche lesen. Fragen Sie sie dann nach den Büchern, die sie in den letzten Wochen gelesen haben.

Ich habe herausgefunden, dass die leidenschaftlichen Programmierer IMMER lesen, und normalerweise wird die Liste ein paar Programme / Comp enthalten. Sci. Bücher in der letzten Liste.

Es geht nicht nur darum, "mit dem Beruf Schritt zu halten" - leidenschaftliche Programmierer haben ein Verlangen und eine Vorliebe für das Programmieren und neigen dazu, Material zu einer Vielzahl von Themen zu verschlingen - nicht nur zu der Sprache, die sie gerade verwenden, sondern auch zu Methoden und anderen Sprachen (insbesondere neue oder "seltsame" oder alte), andere Aspekte der IT (vielleicht Robotik oder KI oder Spiele oder ...)

Wenn sie überhaupt keine aktuelle Bücherliste haben, dann sind sie meiner Erfahrung nach wahrscheinlich kein großer Programmierer.

Prost,

-R


8
Meine letzte Bücherliste ist fast immer Fiktion. Meine letzte technische Lektüre ist fast vollständig online, weil das aktueller ist.

1
Besser noch, fragen Sie sie, welches Buch sie diesen Monat geschrieben haben. :)

7

Es gibt verschiedene Zeitskalen, in denen jemand "schnell" sein kann: Einige clevere Leute können schwierige Rätsel in Sekunden lösen, aber einige clevere Leute produzieren eine Menge guten Codes in einem Monat, auch wenn sie bei Interviewfragen möglicherweise nicht so schnell sind.

Fragen Sie die Kandidaten, ob sie in einem Open-Source-Projekt aktiv sind, in dem Sie einen Teil ihres Codes überprüfen und einige Zeit damit verbringen können, die Mailinglistenarchive und Commit-Protokolle dieser Projekte zu lesen. Das sagt Ihnen mehr als alles, was die Kandidaten in einem Interview zeigen können. (Natürlich kann dies das Interview nicht ersetzen , da nicht alle guten Programmierer Open Source-Arbeit leisten.)


7

Das Buch " Smart and Gets Things Done: Joel Spolskys Kurzanleitung zur Suche nach dem besten technischen Talent " kann hilfreich sein, um eine Antwort zu finden.

Inhaltsverzeichnis:

  • Einführung
  • Kapitel 1: "Die hohen Töne treffen"
  • Kapitel 2: "Großartige Entwickler finden"
  • Kapitel 3: "Ein Leitfaden für Entwickler"
  • Kapitel 4: "Lebensläufe sortieren"
  • Kapitel 5: "Der Telefonbildschirm"
  • Kapitel 6: "Der Guerilla-Leitfaden für Interviews"
  • Kapitel 7: "Suboptimale Teams festlegen"
  • Anhang: "Der Joel-Test"

Der Artikel von Joel "The Guerrilla Guide to Interviewing (Version 3)" kann ebenfalls hilfreich sein.

Und der Artikel "Done, and Gets Things Smart" von Steve Yegge zum Thema.


4

Stellen Sie ihnen eine Reihe von Fragen, bei denen sie codieren müssen, und die Fragen werden schwieriger. Wenn sie die Herausforderung zu mögen scheinen, haben Sie wahrscheinlich eine Live-Herausforderung.

Wenn sie die erste einfache Frage wie "Write a for Loop" oder etwas dummes nicht beantworten können, dann wissen Sie, dass diese Person nicht codieren kann.


4

Lassen Sie sie auf einem Whiteboard codieren. Nur so können Sie feststellen, ob sie wissen, wie man Code schreibt.


Ich weiß nicht, warum dies abgelehnt wurde. Wenn ein Programmierer keinen Code auf ein Whiteboard schreiben kann, warum glauben Sie dann, dass er in der Lage ist, ihn auf einen Computer zu schreiben?
Kristopher Johnson

3
@Kristopher: Wenn ein Programmierer guten Code auf einem Computer schreiben kann, warum glauben Sie dann, dass er ihn auf ein Whiteboard schreiben kann? Das sind ganz andere Umgebungen.
David Thornley

Der "Whiteboard-Test" soll nicht die tatsächliche Codierung simulieren. Es ist eine Chance zu sehen, wie der Kandidat denkt, ob der Kandidat beschreiben kann, was er tut, wie schnell der Kandidat eine Lösung in seinem Kopf bildet usw. Jemand, der nur auf das Whiteboard starrt und keine Ahnung hat, was er schreiben soll, wird wahrscheinlich das haben gleiches Problem an einem Computer.
Kristopher Johnson

3

Sie sollten vor allem die Arbeit beurteilen, die sie bereits geleistet haben. Jeder Code oder jede Idee, die jemand während eines angstbesetzten Interviews generiert, ist ein schlechter Beweis dafür, was er tatsächlich in einem Team produzieren kann.

Verwenden Sie bei Codierungsproblemen IM mit so etwas wie codepad.com und lassen Sie sie bequem von zu Hause aus ausführen. Schreiben Sie einen Großteil Ihres Codes auf ein Whiteboard vor Ihrem Chef, mit einer Frist von 30 Minuten und Ihrem Bonus auf der Leitung? Ich nicht.

Ist das Interview also sinnlos? Nein, aber der Schwerpunkt sollte darauf liegen, dass sie erklären, was sie getan haben und was sie genau beigetragen haben.

Sie werden auch allen Arten von psychologischen Vorurteilen ausgesetzt sein, sobald Sie jemanden von Angesicht zu Angesicht treffen. Stellen Sie nicht versehentlich einen Programmierer ein, weil dieser einen besseren Blickkontakt hergestellt hat oder größer ist als jemand anderes. Um diese zu umgehen, führe ich so viele Interviews wie möglich über IM / E-Mail durch, bevor Sie sie persönlich treffen.


Sie können diesen Effekt umkehren, indem Sie sich die psychologischen Vorurteile anderer Personen in der Geschichte der Kandidaten ansehen, die eingestellt haben. Kurze Leute, die leitende Positionen bekleidet und Dinge erreicht haben, sind wahrscheinlich wirklich sehr, sehr gut. Große Menschen mit der gleichen Geschichte werden im Durchschnitt nicht so gut sein und mit Heiligenscheinpunkten auskommen.
Tim Williscroft

2

Die Sprache spielt keine Rolle. Logik tut. Ich meine, IDEs und Compliers sind heutzutage so gut, dass jeder gute Programmierer jede Sprache (ok, vielleicht nicht Assembler) in einer Woche lernen kann. Werden Sie in ein paar Wochen anständig und werden Sie in ein paar Monaten sehr gut.

Es ist sein Gehirn, das Sie bestätigen müssen. Und das machst du, mein Reden. Ich bitte sie, einfache Probleme zu lösen. Nicht indem ich Code schreibe, sondern indem ich mich durch ihre Logik bewege, um zu einer Lösung zu kommen.

Aber ich gebe zu, wenn er keine einfache Schleife mit 1 bis 10 schreiben kann, hast du Probleme.


1

Erstens gibt es eine Möglichkeit, sich eine Vorstellung zu machen, bevor das Interview überhaupt beginnt:

Wenn sie einen Blog haben oder zu einem oder mehreren Open Source-Projekten beitragen, schauen Sie sich einfach den Code und die Artikel an, die sie geschrieben haben. Zuallererst haben sie Initiative, um Dinge zu erledigen, wenn sie beides getan haben. Sie können diese Dinge auch mit den Arbeitserfahrungen vergleichen, die sie in ihrem Lebenslauf aufgeführt haben, und erhalten eine Vorstellung davon, ob sie nach der Arbeit nach Hause gehen und mehr lernen oder nach 17 Uhr nach Hause gehen und die Arbeit vergessen.

Haben sie im Wesentlichen eine Leidenschaft für das Programmieren oder nicht? Das ist die eigentliche Frage.


1

Einen guten Programmierer im Interview zu haben, ist meiner Meinung nach am besten.

Nur ein Experte kann beurteilen, ob der Bewerber nur viele Interviewfragen kennt oder ob er tatsächlich über die Probleme nachdenkt und ins Detail gehen kann. Denken Sie daran, Sie möchten keine Mitarbeiter einstellen, die Interview-Rätsel lösen, sondern sie einstellen, um die eigentliche Arbeit zu erledigen.

Rätsel sollen Leute ausschließen, die die Grundlagen nicht richtig verstehen. Wenn Sie Ihre Fähigkeiten testen möchten, bereiten Sie einige Dinge vor, über die Sie (oder Ihr "guter Programmierer") ins Detail gehen und sich auf die konzentrieren können, über die der Bewerber eine Weile nachdenken muss. Wie geht er mit Problemen um, deren Lösung er nicht sofort kennt?


1

Ich denke nicht, dass Sie im Interview über Leidenschaft sprechen sollten. Ehrlich gesagt klingt es so, als ob ein Unternehmen, das nach Leidenschaft sucht, wirklich bedeutet, für die Idee für kein Geld zu arbeiten.

Leidenschaft garantiert nicht einmal Exzellenz. Ich verbringe fast mein ganzes Leben damit, zu programmieren, über das Programmieren zu lesen, verrückte Sprachen wie Erlang oder Clojure zu lernen, und ich werde für nichts bezahlt. Trotzdem nerve ich beim Programmieren.

Ich denke, exzellente Programmierer sollten einen Überblick über erfolgreiche Projekte haben, an denen sie aktiv beteiligt waren. Daher ist es im Interview nicht notwendig, einen Programmierer dazu zu bringen, etwas zu schreiben, das über das grundlegende FizzBuzz hinausgeht. Sprechen Sie über ihre vergangenen Projekte und was sie getan haben. Stellen Sie Programmierer ein, um Rubiks Würfel zu lösen und Murmeln zu zählen, oder arbeiten Sie an langen und großen und anstrengenden Softwareprojekten mit mehr als 50 Coe-Zeilen?


1

http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/

Aus dem Artikel:


Die Kriterien in Aufzählungszeichen

Zusammenfassend sind hier einige Indikatoren und Gegenindikatoren aufgeführt, die Ihnen helfen sollen, einen guten Programmierer zu erkennen.

Positive Indikatoren :

  • Leidenschaft für Technologie
  • Programme als Hobby
  • Sprechen Sie über ein technisches Thema, wenn Sie dazu ermutigt werden
  • Bedeutende (und oft zahlreiche) persönliche Nebenprojekte im Laufe der Jahre
  • Lernt neue Technologien selbstständig
  • Überlegt, welche Technologien für verschiedene Anwendungen besser sind
  • Sehr unangenehm bei der Idee, mit einer Technologie zu arbeiten, die er nicht für „richtig“ hält
  • Klar schlau, kann tolle Gespräche zu einer Vielzahl von Themen führen
  • Begann lange vor dem Studium / der Arbeit mit dem Programmieren
  • Hat einige versteckte "Eisberge", große persönliche Projekte unter dem CV-Radar
  • Kenntnisse über eine Vielzahl von nicht verwandten Technologien (möglicherweise nicht im Lebenslauf enthalten)

Negative Indikatoren :

  • Programmieren ist ein Tagesjob

  • Ich möchte nicht wirklich "reden", auch wenn ich dazu ermutigt werde

  • Lernt neue Technologien in firmensponsorierten Kursen

  • Ich arbeite gerne mit der von Ihnen ausgewählten Technologie. „Alle Technologien sind gut.“

  • Scheint nicht zu schlau

  • Beginn der Programmierung an der Universität

  • Alle Programmiererfahrung ist im Lebenslauf

  • Konzentriert sich hauptsächlich auf ein oder zwei Technologie-Stacks (z. B. alles, was mit der Entwicklung einer Java-Anwendung zu tun hat), ohne Erfahrung außerhalb davon


Würde es Ihnen etwas ausmachen, mehr darüber zu erklären, was es tut, und warum empfehlen Sie es als Antwort auf die gestellte Frage? "Nur-Link-Antworten" sind bei Stack Exchange
gnat

0

Ein ausgezeichneter Programmierer kann auch mit Gleichgesinnten mit niedrigerem Spektrum arbeiten. Solange sie die Prüfung bestehen können und sich nicht in ihrem Ego suhlen, haben Sie einen guten Kandidaten, nicht wahr?

Dieser Fizzbuzz-Test ist allerdings ein bisschen lustig. Die Lösung, die ich mir vorstellen kann, verwendet den Modulo-Operator. Was ich nur aus dem Ausarbeiten von Zeichensatzkoordinaten kenne (nie in der Schule oder im College erwähnt). Wüsste der durchschnittliche Programmierer überhaupt davon oder hatte ich Mistausbildung?


Ich bin überrascht, dass Sie nicht auf den Modulo-Operator gestoßen sind. Ich wurde in den verschiedenen Sprachen vorgestellt, die ich im Laufe des Jahres gelernt habe.

2
Wenn Sie CS im College studiert haben, programmiert der Modulo-Operator 101

überraschenderweise werden Sachen wie Bit-Shift und Modulo im College übersprungen
Claudiu

Ich denke, es hängt davon ab, welche Art von Dingen sie dir am College beibringen wollen. Ich glaube, ich habe Modulo noch nie in einem realen Problem verwendet oder explizit gelehrt. Aber es ist sehr häufig in dieser Art von Übung (und in Prüfungsfragen).
Interstar

2
Tatsächlich werden beide in der Regel in der Grundschule unterrichtet. In diesem Stadium werden sie als "Rest" und "Multiplikation mit 10" bezeichnet.
Intuited

0

Ein Kriterium, das ich benutze, ist es, die Art der Sprachen und Werkzeuge zu sehen, an denen er gearbeitet hat, entweder in akademischen oder in professionellen Projekten, und was genau er erreicht hat. Hat er immer auf Anwendungsebene mit Standardbibliotheken gearbeitet (immer ein C # - oder VB6-Typ?) Oder hat er unter Linux ein Projekt mit C durchgeführt, das sich mit Hardcore-Dingen wie Zeigern, Speicherverwaltung, Rekursion, Prozesssynchronisierung, gegenseitigem Ausschluss, Ereignissen usw Wenn er diese grundlegenden Konzepte immer unter einer Abstraktionsebene verwendet hat, werde ich bezweifelt sein.

Dies ist offensichtlich zusätzlich dazu, dass er Code schreibt. Nichts ist ein Ersatz dafür. Ich gehe jedoch auf die Tatsache ein, dass einige Leute Code schneller schreiben können als andere, und dass die Leute im Rampenlicht eines Interviews unterschiedliche Reaktionszeiten haben.


Rekursion, Prozesssynchronisation, gegenseitiger Ausschluss. Diese Technologien sind gleichermaßen wichtig, egal ob Sie mit C #, VB.NET, C oder Assembler arbeiten.

-1 - Das ist absolut falsch. "Art" der Sprachen und Tools sind 100% "irrelevant".
Morgan Herlocker
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.