Es scheint eine RIESIGE Diskrepanz zwischen dem, was ich von jemandem erwarte, der einige Jahre an der Universität Programmieren studiert hat, und dem, was man tatsächlich weiß.
Ich habe nicht das Gefühl, in Interviews überkomplizierte Fragen zu stellen. Einige meiner üblichen Fragen sind:
Was ist der Unterschied zwischen einem Referenztyp und einem Werttyp?
Wenn es so aussieht, als ob der Befragte seine eigene Antwort nicht wirklich versteht oder wenn er die von mir verwendete Terminologie nicht kennt, gehe ich auf weitere Details ein, indem ich ihn auffordere, mir zu erklären, was passiert, wenn ich int i = 0 schreibe. Was ist in einer Methode mit dem Objekt o = 0, dem Objekt o = new MyClass () usw.
Grundsätzlich tue ich alles, um den Befragten dazu zu bringen, mir von dem Callstack, dem Haufen usw. zu erzählen, und ich versuche, mich an sprachunabhängige Konzepte zu halten. Wenn der Befragte mir sagt, dass er viel C, C ++ oder C # gemacht hat, gehe ich tiefer in die spezifische Sprache und möglicherweise in die Implementierungsdetails ein.
Bei Bedarf frage ich den Befragten, was ein Callstack ist oder wo Argumente gespeichert sind, die an eine Funktion in der imperativen Sprache seiner Wahl übergeben wurden.
Die meisten Befragten haben einfach keine Ahnung, was ein Callstack ist, geschweige denn Überlegungen zum Boxen usw.
Was ist der Unterschied zwischen einer abstrakten Klasse und einer Schnittstelle? In welchen Fällen sollten Sie eine über die andere verwenden?
Normalerweise bitte ich sie auch, sich einen Entwurf einer kleinen Bibliothek mit einem Anwendungsfall vorzustellen, der darauf abzielt, einige Vererbungs- und einige abstrakte Fabriken zu verwenden
Die meisten Befragten haben einfach keine Ahnung, was der eigentliche Zweck der Vererbung sein könnte. Sie kennen normalerweise einige Schlüsselwörter (virtuell, überschreiben usw.), wissen aber nicht wirklich, wann sie verwendet werden sollen, geschweige denn, was eine virtuelle Tabelle ist.
Obwohl ich Lebensläufe vorher überprüfe, selbst für Personen mit 5 Jahren Erfahrung in realen Projekten mit komplexen Architekturen, würde ich sagen, dass weniger als 25% aller meiner Befragten diese beiden Fragen richtig beantworten können. Und wenn ich es richtig sage, meine ich nicht "eingehend" ... nur um eine ungefähre Vorstellung davon zu haben, was das Konzept ist.
In Bezug auf Junioren kann ich gut jemanden einstellen, der nicht weiß, wie man seine Zeit sehr gut organisiert, oder jemanden, der nicht an industrielle Bauprozesse gewöhnt ist, aber ich habe das Gefühl, wenn man das Wort nicht gehört hat " callstack "Nach ein paar Jahren Informatikstudium ist er entweder dumm oder unmotiviert oder hat seine Universität sehr unklug gewählt.
Glaubst du, ich bin hier zu extremistisch? Ist es üblich, diese Grundkonzepte nach Abschluss der Universität zu lernen? Kennen Sie Leute, die mit diesen nicht vertraut waren und nach einigen Jahren sehr gute Software-Ingenieure wurden? Und glauben Sie, dass mein Unternehmen Probleme haben könnte, talentierte Leute anzuziehen, oder haben Sie die gleichen Probleme mit Ihrem eigenen Einstellungsprozess?
Bearbeiten. In Bezug auf den "unmittelbaren Typ" war es nur eine wörtliche Übersetzung vom Französischen ins Englische, da wir unsere Interviews normalerweise auf Französisch führen. Ich habe es in meiner Frage behoben. Trotzdem denke ich, dass Sie alle perfekt verstehen, was ich meinte, was meine Meinung ist, nicht wahr?