Das 10-minütige technische Interview [geschlossen]


37

Ich muss sehr schnell eine schnelle Beurteilung von Dutzenden von neuen Schülern vornehmen. Ich habe 30 Minuten Besprechung mit jedem von ihnen (in zwei oder drei Tagen). Ich möchte die meiste Zeit nutzen, um nicht-technische Aspekte zu diskutieren. Daher plane ich 10 Minuten für technische Fragen. Die gleichen Fragen für alle.

Sie sind alle bereits angestellt (sie sind Studenten), was ich wissen muss, ist das Durchschnittsniveau, um eine Ausbildung vorzubereiten.

Idealerweise ist die Schwierigkeit must be progressive, für jeden einen Level festzulegen. Stufe I wird gemittelt, und ich werde auch bei jeder Frage einen Durchschnitt bilden.

Wenn Sie einem Kandidaten nur 10 Minuten und 10 Fragen stellen müssten, welche wären Ihre Top 10?


6
Mehr Kontext bei der Arbeit? Ist dies eine Systemadministratorposition oder eine Programmiererposition und wenn auf niedriger oder hoher Ebene programmiert wird? Haben Sie eine bestimmte Sprache oder Technologie in Ihrem Shop? Diese würden alle meine Liste von Fragen diktieren.
Chris

4
Was für ein Training? Programmierung? Allgemeine IT?
Adam Lear

3
Ich kehre das um und verbringe 10 Minuten mit persönlichen und 20 Minuten mit technischen Dingen.
Kyralessa

1
Ich weiß, das würden die meisten Leute tun. Aber ich glaube an verschiedene Ansätze.

3
10 Minuten für den Kandidaten sind zu wenig
Zzz

Antworten:


55

Drei Fragen, die das Ende von Eric Lipperts Antwort hier erläutern :

Frage 1:

Wo bewertest du dich auf einer Skala von 1 bis 10 (benenne die Fertigkeit hier)? Sie antworten mit [n], einer Zahl zwischen 1 und 10.

Frage 2:

Was könntest du von jemandem auf Stufe [n + 1] lernen?

Frage 3:

Was könnte jemand auf Stufe [n-1] von Ihnen lernen?

Der wichtigste Faktor bei der Entscheidung ist , um zu bestimmen , wo ein Student (realistisch) legt sich , und diese drei Fragen werden Ihnen so schnell bestimmen helfen. Es hilft auch dabei, Personen zu identifizieren, die möglicherweise durch den Mahn-Krüger-Effekt (an beiden Enden) gefährdet sind , aber das ist ein anderes Thema.

Wenn jemand den Verweis auf diese Methode auf SO finden und diesen Beitrag bearbeiten kann, um einen Link aufzunehmen, wäre ich sehr dankbar.

Jedenfalls sollte das deutlich unter zehn Minuten liegen.


5
Wow! Ziemlich ungewöhnliche Metrik. So habe ich mich noch nie gesehen. Vielen Dank!
Andrew Андрей Листочкин

Offensichtlich beantwortet der Kandidat 10, um die zweite Frage zu vermeiden.
Rightfold

4
@WTP Die Zehn ist eine Lüge.
Tim Post

1
Das ist großartig. Wenn mich ein Arbeitgeber danach fragt, kann ich in wenigen Minuten mehr über mich selbst erzählen, als ich normalerweise in einem einstündigen Interview bekomme.
Fearofawhackplanet

28
  1. Was ist eine Klasse?
  2. Was ist eine statische Methode?
  3. Was ist Vererbung?
  4. Was ist Polymorphismus?
  5. Was ist ein Primärschlüssel?
  6. Was ist ein Fremdschlüssel?
  7. Was ist der Unterschied zwischen HTTP GET und HTTP POST?
  8. Was ist ein Webservice?
  9. Nennen Sie einige Datenstrukturen.
  10. Was ist der Zweck eines Object / Relational Mapper?

Sie können jederzeit einen Ersatz vorschlagen. Diese Liste bietet viel Raum für Verbesserungen.


1
statische Methoden gibt es neben C ++ in vielen Sprachen, nicht dass es hier relevant wäre. Tatsächlich finde ich, dass es für viele Schüler schwierig ist, sie zu begreifen - und zu fragen, ob sie es begreifen, oder nach einer Definition zu fragen, ist ein schlechter Weg, um herauszufinden, ob sie es tun oder nicht.
Kate Gregory

3
Denken Sie daran, die Frage zehn Fragen in zehn Minuten angegeben. Wenn es in 30 Minuten zehn Fragen gewesen wären, würde ich den Schwierigkeitsgrad erhöhen und aussagekräftigere offene Fragen stellen wollen.
Eric Wilson

3
Ich mag die Fragen 1-8 in Ihrer Liste wirklich, obwohl ich die Fragen 9 oder 10 durch "Warum sind Schnittstellen wichtig" und / oder "Warum ist eine abstrakte Klasse wichtig?" Ersetzen könnte. (in dieser Reihenfolge)
Nicole

7
Was ist mit all den OO-Fragen?
Rekursion

3
Eh, das sind alles Fragen zu Sprachfeatures. Ich bin nicht so überzeugt, dass sie wichtig sind, gegen theoretischere Dinge.
Andres Jaan Tack

20
  1. Erklären Sie Zeiger!
  2. Was sind Verschlüsse?
  3. Welche Sprachen verwenden Sie in Ihrer Freizeit und warum?
  4. Sprechen Sie ein wenig über Transaktionen!
  5. Was ist der Unterschied zwischen einem Dolmetscher und einer JIT?
  6. Erklären Sie die Grundlagen eines Compilers.
  7. Was passiert auf Speicherebene, wenn Sie eine Rekursion durchführen (und was ist anders, wenn Sie TCO haben)
  8. Was sind die wichtigen Konzepte der OO-Programmierung (und warum sind sie wichtig)?
  9. Was für neue Sachen suchst du zuhause und warum ist es interessant?
  10. Erklären Sie den Unterschied zwischen einem Prozess und einem Thread.

20
Ich denke nicht, dass die meisten davon gute Fragen für Leute sind, die für .NET (oder Programmierung) völlig neu sind - und selbst wenn sie die Antworten kennen, ist das 1 Minute pro Frage ...
FinnNk

9
Ich bin damit einverstanden, dass diese Fragen eher wie "Wie geeky bist du?" - als wie "Was weißt du, was hast du gelernt?" - Fragen für Studenten aussehen.
Hyprsleepy

5
Ich würde bei diesem Test furchtbar scheitern, vor allem, weil ich noch nie CS studiert oder C verwendet habe. Das könnte also helfen, festzustellen, wer im Unterricht aufgepasst hat und wer zum Spaß programmiert, aber ich weiß nicht, ob es hilfreich sein wird den Kontext des OP.
Eric Wilson

3
Die meisten Leute würden die meisten falsch verstehen.
Rekursion

4
Gute Fragen, aber manche können nicht in einer Minute beantwortet werden.
zvrba

16

Meine Erfahrungen mit Studenten Ich würde ziemlich von vorne anfangen - ich habe herausgefunden, was die Leute an der Universität lernen und was nützlich ist, sind zwei ziemlich getrennte Sätze.

Aber da Sie die Chance haben, mit ihnen zu sprechen, wäre es dumm, es nicht zu nehmen.

Ich gehe davon aus, dass ihr Hintergrund wenig Gemeinsamkeiten aufweist, sodass ich sprachspezifische Fragen meide. Die einzige Ausnahme, die ich gemacht habe, ist die Annahme, dass sie etwas im Web gemacht haben, aber diese Frage könnte für etwas Äquivalentes unterdrückt werden, wenn sie eingebettete Spezialisten sind oder was auch immer.

Sie haben darum gebeten, dass sie progressiv sind, was ich versucht habe, aber wenn meine Annahme, dass keine Gemeinsamkeit besteht, richtig ist, sind die richtigen / falschen Fragen relativ knifflig und ein Großteil ihrer Kompetenz wird davon abhängen, wie gut ihre Antworten auf allgemeinere Fragen sind Fragen sind.

Sowieso...

1) Mit welchen Sprachen und Technologien wurden Sie konfrontiert? Wie viele davon (und welche) haben Sie in mehr als 50 Stunden tatsächlich programmiert (dies beinhaltet nicht Vorlesungen, Laborzeiten usw., sondern Projekte und Aufgaben, bei denen Sie solo programmiert haben).

2) Beschreiben Sie das komplexeste Programm, das Sie jemals geschrieben haben. Was hat es komplex gemacht?

3) Was haben Sie an der Universität gelernt (in Bezug auf Programmierung), von dem Sie glauben, dass Sie es nicht richtig verstehen? Wenn Sie der Meinung sind, dass Sie alles verstanden haben (überprüfen Sie die Noten zu diesem Zeitpunkt), dann sprechen Sie über eine Anwendung oder ein Element einer Anwendung, von dem Sie gesehen haben, dass Sie nicht wissen, wie man Code erstellt und wie Sie möglicherweise darüber nachdenken.

4) Was sind die Grundprinzipien der objektorientierten Programmierung?

5) Erzählen Sie mir in einer Minute so viel über relationale Datenbanken wie möglich

6) Beschreiben Sie für eine Webanwendung eine Methode zum Verwalten von Informationen über den Benutzer zwischen den Seiten. Welche Vor- und Nachteile hat der beschriebene Mechanismus?

7) Wählen Sie eine häufig verwendete Funktionalität im Computer aus und erklären Sie kurz, wie sie auf programmatischer Ebene funktioniert (z. B. Verschlüsselung, Komprimierung). Erklären Sie auch, wie Sie diese Funktionalität verwenden mussten, um sie zu implementieren (hier würde ich nach der Tatsache suchen, dass es wahrscheinlich besser ist, sich eine Bibliothek dafür zu schnappen, obwohl Sie vielleicht wissen, wie etwas funktioniert).

BEARBEITEN: Umstrukturiert und einige zusätzliche Fragen hinzugefügt, um den ursprünglichen Fortschritt zu verbessern.


6
Ich mag diese Liste, ich möchte noch eine Frage hinzufügen: Wofür wurden Sie an der Universität unterrichtet, für die Sie in der Praxis keine Verwendung finden? Das könnte einige nützliche Hinweise darauf geben, wie sie denken.
Glenatron

2
Wenn sie alle gut sind, sind die 10 Minuten nach Frage 2 abgelaufen :-)
Sean Patrick Floyd

Wenn Sie nach den "Grundsätzen" von OOP fragen, meinen Sie damit, dass OOP eine Religion ist?
compman

@compman - Ganz klar nicht. Der Grundsatz kann für eine Religion gelten, ist jedoch nicht ausschließlich für diesen Kontext und kann auch für jede Organisation, Bewegung oder jeden Beruf gelten.
Jon Hopkins

8

Wenn es sich um Studenten handelt und Sie versuchen, einschätzen zu können, wo sie sich in ihrem Studium befinden, sollten es wirklich keine Trickfragen oder Fragen geben, die sie zum Nachdenken anregen. Mein Rat wäre, sich nur auf die Grundlagen zu konzentrieren - es macht keinen Sinn, sie zu bitten, zu erklären, wie Reflektion funktioniert, wenn sie Objekte und Vererbung noch nicht vollständig beherrschen.

Hier sind einige Beispielfragen, die verwendet werden könnten, und Sie könnten vielleicht mit etwas aus der Kategorie des Kernwissens beginnen und sich dann auf der Grundlage bewegen, wie sie die Fragen beantworten, ähnlich wie adaptives Testen funktioniert.

Grundlagen

  1. Was sind einige grundlegende Befehle zur Programmablaufsteuerung?
  2. Was sind einige grundlegende logische Operationen?
  3. Was ist der Unterschied zwischen while- und for-Schleifen?

Ader

  1. Erläutern Sie kurz die objektorientierte Programmierung.
  2. Erläutern Sie kurz das Konzept der Vererbung.
  3. Erklären Sie kurz, wie Datenbanken funktionieren.
  4. Wofür wird das enumSchlüsselwort verwendet und wann würden Sie es verwenden?

Fortgeschritten

  1. Was können Sie mir über C # -Generika oder C ++ - Vorlagen sagen?
  2. Was können Sie mir über das Überladen von Operatoren sagen?
  3. Was ist der Unterschied zwischen einer Klasse und einer Struktur?
  4. Was können Sie mir über die Reflektion in .NET sagen?

6

Ohne eine Antwort auf meinen obigen Kommentar fallen mir diese Dinge im Allgemeinen ein, aber ich bin mir nicht sicher, ob ich diese technischen Aspekte in Betracht ziehen würde.

  • Welche Art der Versionskontrolle haben Sie verwendet?
  • Kennen Sie sich mit Softwareentwicklungsmethoden wie Agile, Waterfall und Tdd aus?
  • Was ist der Zweck der Dokumentation in Software?
  • Unterschied zwischen statisch und dynamisch typisierten Sprachen?

5
"Warum ist der Spaghetti-Codierungsstil nützlich?" - die ultimative
mlvljr

Haha, ist das so, um sie auszutricksen?
billy.bob

@ m.edmondson Nun geben Sie bitte ein Beispiel für einen Fall, in dem es unvermeidlich ist, die Abstraktion zu brechen;)
mlvljr

Hmm ich glaube nicht, dass es einen Fall gibt, in dem das unvermeidlich ist ;-)
billy.bob

4

Mir ist klar, dass Sie versuchen, das Training auf der Grundlage dessen aufzubauen, was sie nicht wissen, und dass Sie mehrere "Eimer" Training für verschiedene Gruppen von Studenten planen. Da Sie nur zehn Minuten Zeit haben, erstellen Sie eine Liste der Dinge, an die Sie denken, und stellen Sie diese spezifischen Fragen. Sie planen, ihnen C # beizubringen. Fragen Sie, ob sie es gut wissen. Fragen Sie, ob sie neuere Funktionen verwendet haben (LINQ, nullfähige Typen, Generika, ...). Wenn Ihr Training Datenbankinhalte enthält, stellen Sie einige Fragen dazu. Am Ende werden Sie vielleicht feststellen, dass eines der von Ihnen geplanten Themen unnötig ist, da alle es wissen und einige andere Themen von allen benötigt werden und so weiter. Das ist praktischer, als zu versuchen, Fragen zu stellen, die sich nicht auf das beziehen, was Sie haben.


+1 - Das wollte ich sagen. Fragen Sie sie einfach, was sie für ein Training benötigen.
mouviciel

4

Stellen Sie ihnen die FizzBuzz- Frage

Wussten sie, wie man es codiert? Welche Sprache haben sie benutzt? Warum haben sie es so programmiert? Haben sie Rekursion verwendet? Schleifen? Andere Methoden / Funktionen? Zeiger?

Sie können die Frage auch als Grundlage für andere Fragen verwenden (z. B. Warum haben Sie Rekursion verwendet / nicht verwendet? Wie würden Sie dies mit Hilfe von Zeigern schreiben?).

Es umfasst nicht alles, aber es kann Ihnen eine Vorstellung von den Codierungsfähigkeiten geben


1
Oh ja, ich habe jemandem in der Community versprochen, diese Frage zu stellen. Wird die letzte Frage sein, und ich werde die Ergebnisse mit allen teilen.

1
@ Pierre 303: Früher habe ich Leute gebeten, eine Funktion zu schreiben, die eine Postleitzahl validiert. Ich versichere Ihnen, es war genauso aufschlussreich wie FizzBuzz.
Scott Whitlock

1
Sie geben mir die Gelegenheit, einige Ergebnisse zu nennen, die ich durch diese Frage erhalten habe. Bei 6 oder 7 Interviews konnte niemand darauf antworten. Die meisten von ihnen waren frische Studenten, aber man hat 8 Jahre Erfahrung! Also bin ich ein bisschen verwirrt ...

4

Zehn Fragen:

  1. Zeigen Sie eine for-Schleife an, die die Werte eines Arrays summiert. Fragen Sie dann, was der Code macht. [Können sie eine grundlegende Schleife lesen?]

  2. Bitten Sie sie, eine for-Schleife zu schreiben, die die durch Kommas getrennten Zahlen 1 bis 10 ausgibt. [Zusätzlich zu "können sie das tun?" Sie können beurteilen, wie sich ihr Code wiederholt.]

  3. Zeigen Sie einen Code mit zwei Verweisen an aund bzeigen Sie auf zwei verschiedene Objekte, wobei ein ganzzahliges Feld beispielsweise xauf 7und gesetzt ist 5. Dann zuweisen: a = b;, b.z = 9;und dann fragen Sie nach dem Wert a.z. [Verstehen sie Referenzen?]

  4. Zeigen Sie zwei verschachtelte for-Schleifen (mit Indizes iund j) an, die Werte aus einem Ausdruck akkumulieren. Führen Sie in der innersten Schleife zwei Berechnungen durch: double x = Math.pow(2.0, i)und double y = x * j. Bitten Sie sie, den Code effizienter zu gestalten. [Wissen sie über einfache Schleifenabhängigkeit Bescheid?]

  5. Fragen Sie sie, was in Codebeispiel A nicht stimmt. (Siehe unten.) [Können sie logisch denken?]

  6. Fragen Sie sie, was in Codebeispiel B nicht stimmt. (Siehe unten.) [Auch zum logischen Denken.]

  7. Bitten Sie sie, diese Bedingung umzukehren: (s != null && s.Length != 0)ohne zu verwenden !. [Kennen sie DeMorgans Gesetz?]

  8. Zeigen Sie einen Code, der den alten Lint-Anzeigen in Zeitschriften ähnelt: Bitten Sie sie, den Fehler zu finden. Zum Beispiel Überladen, equalsanstatt es zu überschreiben. [Sind sie gute Sprachanwälte? Diese Art von Fragen prüft meistens auf Erfahrung: Haben Sie diese schon einmal gesehen?]

  9. Können sie beschreiben, wie eine binäre Suche in einem sortierten Array durchgeführt wird?

  10. Können sie beschreiben, wie eine Sortiermethode implementiert werden könnte?

Diese scheinen vielleicht "zu kurz" zu sein, aber ich glaube, für die Einschätzung von Schülern sind die zehn Minuten ziemlich eng. Sie möchten wirklich, dass sie etwas programmieren. (Es klingt so, als würdest du FizzBuzz machen, basierend auf einem Kommentar.)

Wenn Sie von einem stärkeren Schüler ausgehen können, sollten Sie auch einige der Klassiker wie Rekursion, Umkehren einer verknüpften Liste und möglicherweise eine erweiterte Platzhalterliste wie das Erläutern einer XOR-Liste oder die möglichen Intuitionen fragen Warum es einfacher ist, eine Reihe von Zahlen zu sortieren, als sie unsortiert zu komprimieren?

Codebeispiel A:

if (m != null)
    a = m;
else
    a = null;

Codebeispiel B:

if (x != 0 || x != 1) {
    ...
}

3

Sicher gehen Sie das falsch an. Identifizieren Sie die Gruppierungen, in die Sie die einzelnen Schüler einordnen möchten

z.B

No previous programming experience
Familiar with procedural constructs like variables, loops, branching
familiar with basic object orientated constructs like classes, interfaces, events, inheritance
familiar with using Generics/Templates
familiar with creating Generics/Templates

und so weiter. Wenn Sie die geeigneten Gruppierungen identifiziert haben, die vom Kursmaterial abhängen, ist es trivial, herauszufinden, welche Fragen gestellt werden müssen.


3

Die Studenten sind bereits eingestellt und Sie möchten ein Schulungsprogramm einrichten. Daher müssen Sie zum Teil herausfinden, wie schnell sie lernen können (und / oder was sie wissen: wen interessiert das?). Warum nicht ein paar einfache, mittlere und schwierige Fragen auswählen und ihnen vorher geben? Warum sie mit Fragen überhäufen, die sie vielleicht nicht kennen, wenn sie (von manchen) leicht gelernt werden können?

Sie werden feststellen, dass entgegen der Vorstellung der meisten Menschen viele der Schüler auch mit den gestellten Fragen nicht sehr gut abschneiden werden. Auf diese Weise erfahren Sie mehr über Ihre Schüler, ihr Wissen und ihre Lernfähigkeit.


2

Erstellen Sie 5 einfache Flussdiagrammkonstrukte und eine separate Liste mit Antworten. Bitten Sie sie, das Bild mit der Phrase abzugleichen.

Zeichne folgendes:

  1. If Construct
  2. Wenn sonst Konstruieren
  3. Do While-Schleife
  4. Do Until-Schleife
  5. Case Statement Construct

Bitten Sie sie, den Unterschied zwischen 1 und 2
zu erklären . Bitten Sie sie, den Unterschied zwischen 3 und 4 zu erklären.
Fragen Sie sie nach einem Beispiel, wann ein Case Statement Construct anwendbar wäre.


1

Ich bin mir nicht sicher, ob dies in 10 Fragen in 10 Minuten möglich ist. Geben Sie ihnen vielleicht 5 Minuten Zeit, um Ihnen mitzuteilen, was sie über .net wissen. Dann haben Sie eine vorbereitete Liste von vielleicht 20 Themen und wählen 2 oder 3 von Dingen, die sie erwähnt haben, und 2 oder 3 von Dingen, die sie nicht haben.

Zum Beispiel könnten Sie beginnen:

Sagen Sie mir kurz (Sie haben 5 Minuten Zeit), wie Sie ein einfaches C # -Projekt in Visual Studio vom Erstellen bis zum Ausführen erstellen.

Danach:

OK, erzähl mir etwas mehr über das Folgende. Es wird schnell gehen, 1 Minute pro Antwort, also versuche nicht zu detailliert zu sein. Ich möchte nur ein Gefühl für das bekommen, was du kennst.

Dann stell 5 Fragen an die folgenden Personen:

  • Erklären Sie, was eine Klasse ist.
  • Was ist der Unterschied zwischen einer abstrakten Klasse und einer Schnittstelle?
  • Erklären Sie kurz, wie die Garbage Collection in .Net funktioniert

    ....

  • Wie debuggen Sie etwas, wenn Sie ein Problem haben?

  • Yadda-yadda - Ich bin sicher, Sie können aus den anderen Antworten eine lange Liste auswählen

1

Ich glaube an "Selbsteinschätzung"! Wenn Sie der Person die genaue Situation erklären, in der sie sich befindet, zum Beispiel: "Sie müssen SQL codieren ... mit einer Datenbank von mehr als 100 Tabellen und mehr als 500 KB Datensätzen, die in weniger als 4 Sekunden ausgeführt werden müssen ...". Und wenn du ihn fragst: "Glaubst du, dass du es schaffen kannst?" - Sie erhalten eine korrekte Antwort.

Ich werde 5 Fragen zu den Erwartungen der Studenten und 5 weitere technische Fragen stellen:

  1. Was erwarten Sie von diesem Training?
  2. Was ist Ihr Level (dies sollte domänenspezifisch sein)?
  3. Was möchten Sie während dieser Schulung sehen / lernen (3 wichtige Punkte hervorheben)?
  4. Was wäre für Sie nützlicher, wenn wir Übungen machen würden? (Workshop, Mehrfachauswahl)?
  5. Was erwartest du von dem Lehrer?

Dann können Sie mit einigen technischen Fragen wie gehen (dies sollte je nach Thema sein). für OOP zum Beispiel:

  1. Was ist Verkapselung?
  2. Was ist eine Schnittstelle?
  3. Polymorphismus?
  4. Sub-Typisierung?
  5. Dynamische Bindung?

1

Ich suche nach Problemlösung, einer starken Lerngewohnheit, beruflicher Entwicklung und umfassenden Kenntnissen über Ansätze.

  1. Kann ich Ihr Portfolio sehen?
  2. Was sind die letzten 3 technischen Bücher, die Sie gelesen haben? Warum?
  3. Welcher Programmiertext hat Ihre Denkweise am meisten verändert? Warum?
  4. Wie würden Sie ein chickenals Objekt definieren? In welcher Beziehung steht es zu anderen birds? Wie wäre es mit mammalsund animals?
  5. Können Sie einen von (REST, Polymorphismus, relationale Algebra, Parser-Design, MVC) in Laienbegriffen erklären?
  6. Was ist die interessanteste (oder beste) Software, die Sie selbst erstellt haben?
  7. Können Sie die Sprachen beschreiben, in denen Sie sich auskennen? Was frustriert dich an deinen am wenigsten bevorzugten Sprachen?

Ich erwarte von Entwicklern:

  • Seien Sie einfallsreich und schnell
  • Grundbegriffe richtig erfassen
  • Sehnsucht nach fortgeschrittenen Konzepten
  • Erfolg und Misserfolg nachverfolgen (daraus lernen)
  • Lerne ständig und nachdenklich
  • Komplexe Sachverhalte einfach kommunizieren
  • Zeigen Sie Ausgewogenheit und Logik, wenn Sie häufig dogmatische Themen diskutieren

1
Ich lese selten Programmierbücher von vorne bis hinten. Sie dienen als Referenz- und Erläuterungsmaterial.
Andres Jaan Tack

Sie haben Recht: Es gibt einige Texte, die Sie nicht vollständig lesen können (Referenzmaterial), aber es gibt eine Reihe unglaublicher Bände, die Ihre Denkweise verändern. Zum Beispiel: Tuftes Visual Explanations oder The Paradox of Choice oder Programming Language Pragmatics (oder irgendetwas von Hofstadter).
Bruce Alderson

"Es gibt eine Reihe von unglaublichen Bänden, die Ihr Denken verändern werden", die nicht auf technische Bücher / Programmierbücher beschränkt sind. Außerdem habe ich kein Portfolio, alle meine Jobs waren sichere Systeme, ich wäre durchgeknallt.
NimChimpsky

Tragen Sie etwas Zeit zu einem offenen Projekt oder einer gemeinnützigen Organisation bei. Es ist wichtig, echte Arbeit zu sehen, bevor Sie jemanden einstellen (am Ende werden Sie Ihre echte Arbeit zeigen). Ein Portfolio ist genauso wichtig wie ein gepflegter Lebenslauf.
Bruce Alderson

1

Die Taxonomie von Bloom ist hier nützlich. Sie möchten eine Vielzahl von Wissensstufen erreichen, von Auswendiglernen bis zu analytischen. Dies gibt Ihnen die Möglichkeit, herauszufinden, wo ihre Fähigkeiten liegen. Da das OP nach Fragen suchte, die den Schülern gestellt werden sollten, geht die folgende Liste nicht von mehr Kenntnissen aus, als ein Schüler im 3. oder 4. Jahr (wie ich hoffe) besitzen würde.

Konzeptionelle

  1. Was ist ein Stapelunterlauf?
  2. Was ist der Unterschied zwischen einem Objekt und einer Klasse?
  3. Was ist der Unterschied zwischen einer Funktion und einer Methode?
  4. Identifizieren Sie einige der Stärken und Schwächen von Quicksort und Insertion Sort.
  5. Beschreiben Sie, wie ein von Ihnen geschriebenes Programm alle in einem Binärbaum gespeicherten Werte anzeigt.

Praktisch

  1. Haben Sie ein Versionskontrollsystem verwendet? Wie können Teammitglieder effektiver zusammenarbeiten?
  2. Ihr Compiler sagt "nicht identifiziertes Symbol". Was bedeutet das?
  3. Was ist eine "Segmentierungsverletzung"?
  4. Nennen Sie einige Datenstrukturen, die von der Syntax (hier einfügen) oder der Standardbibliothek bereitgestellt werden.
  5. Wie würden Sie alle E-Mail-Adressen in 10.000 Dateien finden und anzeigen?

1

Da sie bereits angeheuert sind, sollte man sie für eine schnelle Beurteilung (zusammen mit Programmierfragen) fragen

  1. An welcher Systemkonfiguration haben Sie gearbeitet (PC-Hardware-Konfiguration)?
  2. Haben Sie versucht, Ihren Code (Projekt, an dem Sie während des Studiums gearbeitet haben) auf einem anderen Betriebssystem zu testen?
  3. Bevorzugen Sie das Codieren in Windows oder Linux (wenn sie auf anderen Betriebssystemen als Windows gearbeitet haben)
  4. Codierung ist schneller / langsamer / besser hängt von den Systemen ab? (Höhere Systeme = Wohlfühlfaktor für die Codierung, da langsame Systeme zum Kompilieren und für alle benötigt werden)
  5. Auch wenn sie fragen, ob sie wissen, ob sie ein Laufwerk formatieren oder das Betriebssystem installieren sollen, falls es abstürzt oder nicht booten kann, weil sie sich auf den IT-Mitarbeiter verlassen müssen (dies ist zu wissen, ob sie mit einer bestimmten Betriebssystemsituation richtig umgehen können).

Diese Fragen dienen nur dazu, ihr Bewusstsein für das System zu finden, das sie beim Programmieren verwenden.


0

Beginnen Sie ab der untersten Ebene des Software-Stacks.

  1. Was ist BIOS?
  2. Welche Rolle spielt das Betriebssystem?
  3. Was ist Multitasking? Was ist dynamisches Verknüpfen?
  4. Beschreiben Sie, wie der Quellcode in ein Arbeitsprogramm für die Sprache der Wahl des Schülers umgewandelt wird (Beispielantwort für C: Präprozessor -> Compiler -> eine Reihe von Objektdateien -> Linker -> ausführbar).
  5. Was ist ein Cache? Schätzen Sie die relativen Zugriffszeiten auf L1-Cache, L2-Cache, RAM, Rotationsplatte (dh nicht SSD).
  6. Auflisten von Datenstrukturen, die Sie implementieren können, ohne Details in der Literatur nachzuschlagen.
  7. Was ist das komplexeste Programm, das Sie geschrieben haben? Was hat es komplex gemacht?
  8. Erläutern Sie die Rekursion an einem Beispiel Ihrer Wahl.
  9. Warum stürzen Programme ab?
  10. Erläutern Sie, was ein kritischer Abschnitt ist, und geben Sie ein Beispiel für die Verwendung an.

4
Die meisten dieser Fragen scheinen aus einem Buch über Betriebssysteme zu stammen und haben ehrlich gesagt wenig mit Programmierung zu tun. Um ehrlich zu sein, müssen Sie nichts davon für die meisten Programmierjobs wissen, wenn überhaupt.
Bryan Harrington

1
Ein bisschen übertrieben, aber: Wenn Sie nicht wissen, welche Rolle das Betriebssystem spielt, ist es sinnlos, über Sicherheit und Zugriffsrechte auf Betriebssystem- oder Datenbankebene zu sprechen. Wenn Sie nicht über den Kompilierungsprozess Bescheid wissen, können Sie Ihren Erstellungsprozess nicht von A bis Z debuggen. Wenn Sie nicht über Cache-Latenzen Bescheid wissen, erhalten Sie Code, der alles in einem DBMS pusht, wo ein Flat- Datei hätte gereicht. Wenn Sie nichts über Mutexe wissen, wissen Sie auch nichts über parallele Programmierung. Der Rest sollte eine offensichtliche Verbindung zur Programmierung haben.
zvrba 20.11.10

1
(Und wenn Sie nicht wissen, was BIOS ist, wissen Sie höchstwahrscheinlich nichts über die Programmierung von PC-Hardware.)
zvrba

4
Beginnen Sie mit einem grundlegenden Verständnis von Elektrizität. Scratch that: Beginnen Sie mit der Atomphysik. Dann arbeiten Sie sich bis zum BIOS.
Dan Rosenstark

Dies sind zwar sehr wichtige und grundlegende Fragen, und jeder Programmierer sollte die Antworten kennen. Ich bin jedoch der Meinung, dass die erste Hälfte der Liste eine Verschwendung Ihrer Zeit ist, da dies auch Dinge sind, die PC- Techniker wissen müssen. Sie geben Ihnen keine gute Vorstellung davon, ob die Person, die Sie einstellen, etwas über Programmierung weiß .
Ken Bloom

0
  1. Ist eine Zeichenfolge veränderlich oder unveränderlich?
  2. Was ist der Unterschied zwischen einer Klasse und einer statischen Klasse?
  3. Was ist ein Zeiger?
  4. Beschreiben Sie die Komplexität.
  5. Was ist der Unterschied zwischen einem Array und einer verknüpften Liste?
  6. Was ist der Unterschied zwischen Merge Sort und Quick Sort?
  7. Bei einer Tabelle mit den Spalten Name, Adresse, Postleitzahl und Telefonnummer wird beschrieben, wie Sie die Tabelle in eine normalisierte Datenbank konvertieren würden.
  8. Beschreiben Sie die Unterschiede zwischen asynchronen und synchronen Methoden und die Art und Weise, wie sie behandelt werden müssen.
  9. Wie würden Sie Informationen von einer serverseitigen Anwendung an eine Webanwendung übergeben?
  10. Was ist deine bevorzugte Sprache? Was sind einige Gründe, warum Sie diese Sprache über X verwenden würden? (Das heißt, warum sollten Sie Java über C # verwenden und was sind einige der grundlegenden Unterschiede?)
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.