Der gefürchtete C # -Programmierinterviewtest - ein Rat? [geschlossen]

21

Ich habe einen möglichen C # -Entwicklungsjob, aber bevor ich ein Vorstellungsgespräch führen kann, muss ich einen Test bei der Agentur für Arbeit bestehen.

Obwohl ich ein leitender Entwickler mit über 10 Jahren Programmiererfahrung und mehr als 3 Jahren Erfahrung mit C # bin, freue ich mich wirklich nicht auf diesen Test und ich denke, es besteht eine gute Chance, dass ich ihn nicht bestehen werde.

Nach meiner Erfahrung sind diese Tests unvorhersehbar, wenn man Sie nach Dingen fragt, die Sie in alltäglichen Arbeitssituationen selten verwenden.

Ich brauche Ihren besten Rat, was ich überarbeiten soll - ein gutes Buch oder eine Website zum Beispiel. Ich habe weniger als eine Woche Zeit, um mich vorzubereiten, und es ist wichtig, dass ich dies übergebe.

Danke im Voraus.

EDIT: Um meine Bedenken bezüglich des Schreibens solcher Tests weiter zu rechtfertigen - Betrachten Sie die folgende Frage:

12) Eine Veranstaltung ist:

   a) The result of a users action - correct answer
   b) The esult of a party
   c) code to force users action

Die richtige Antwort laut Test ist A, aber seit ich SOA-Entwicklung mache (oft, wenn Ereignisse auf Systemereignissen basieren können (keine Benutzeraktionen), bin ich mir zu 100% sicher, dass ein Ereignis nicht angesteuert werden muss Eine Benutzeraktion. Dies war auch eine C # -Frage (keine ASP.net-Frage). Nach meinem Verständnis konnte ich keine richtige Antwort finden, aber B scheint das Beste aus der Partie zu sein (wenn die Definition der Partei lautet: any Entität, die ein Ereignis auslösen kann. Diese Art von Fragen erschrecken mich.

JL01
quelle
4
Wenn Sie ein leitender Entwickler sind und C # drei Jahre lang täglich verwenden, sollten Sie in Ordnung sein. Diese Tests sollen normalerweise diejenigen Personen ausmerzen, die die Sprache oder ihre Verwendung nicht kennen. Wenn Sie es seit 3 ​​Jahren täglich verwenden, sollten Sie in einem bestimmten Test auf fast alle Fallstricke gestoßen sein.
George Stocker
11
@ GeorgeStocker - Eigentlich musste ich einige dieser Tests (die mehr auf das vollständige .NET-Framework abzielen) durchführen und sie waren sehr detailliert. Ich fand sie ziemlich schwierig, weil sie zuerst Bereiche des Frameworks (wie WCF) betraten, in denen ich nur wenig Erfahrung hatte. Außerdem musste man wissen, welche Konfigurationsoption man in einer .config-Datei verwenden würde, um sie zu aktivieren eine dunkle Option. Es war etwas, an das man sich selten erinnert, weil man es wahrscheinlich nur einmal benutzt und es dabei googelt. Ich fand die Erfahrung ein bisschen frustrierend.
Scott Whitlock
7
Oh, und eine der Fragen, die ich falsch gestellt habe, war: "In VB.NET wird mit welchem ​​Schlüsselwort eine Struktur deklariert? A) Struktur b) Struktur c) Struktur d) Struktur". Ich dachte "Intellisense weiß das, also muss ich nicht!" Jetzt ist mir natürlich die Antwort in Erinnerung geblieben.
Scott Whitlock
17
@ScottWhitlock: Es gibt keine Möglichkeit, sich angemessen auf ein schlecht gestaltetes Interview vorzubereiten. Irgendwann muss man darauf vertrauen, dass sie kompetent genug sind, um zu fragen und zu beurteilen, basierend auf den Bereichen, auf die man sich eigentlich spezialisieren möchte, sowie auf konzeptionellen Fähigkeiten. Wenn nicht, hätten Sie wahrscheinlich eine miserable Zeit, um für sie zu arbeiten.
Aaronaught
2
Ist dies ein C # -Sprachtest oder ein .NET Framework-Test?
Ameisen

Antworten:

24

Obwohl etwas alt, ist dieser Blog-Beitrag vielleicht nützlich für Sie: Was großartige .NET-Entwickler wissen sollten (Weitere .NET-Interview-Fragen)

Jeder, der Code schreibt

  • Den Unterschied zwischen einem Thread und einem Prozess beschreiben?
  • Was ist ein Windows-Dienst und wie unterscheidet sich sein Lebenszyklus von einer "Standard" -EXE?
  • Wie viel Speicher kann ein einzelner Prozess unter Windows maximal adressieren? Unterscheidet sich dies vom maximalen virtuellen Speicher für das System? Wie würde sich dies auf ein Systemdesign auswirken?
  • Was ist der Unterschied zwischen einer EXE und einer DLL?
  • Was ist starkes Tippen im Vergleich zu schwachem Tippen? Welches ist bevorzugt? Warum?
  • Corillians Produkt ist ein "Komponentenbehälter". Nennen Sie mindestens 3 Komponentencontainer, die im Lieferumfang der Windows Server-Produktfamilie enthalten sind.
  • Was ist eine PID? Wie ist es nützlich bei der Fehlerbehebung eines Systems?
  • Wie viele Prozesse können einen einzelnen TCP / IP-Port überwachen?
  • Was ist der GAC? Welches Problem löst es?

Mittelständischer .NET-Entwickler

  • Beschreiben Sie den Unterschied zwischen schnittstellenorientierter, objektorientierter und aspektorientierter Programmierung.
  • Beschreiben Sie, was ein Interface ist und wie es sich von einer Klasse unterscheidet.
  • Was ist Reflexion?
  • Was ist der Unterschied zwischen XML-Webdiensten mit ASMX und .NET-Remoting mit SOAP?
  • Wird das Typsystem von XmlSchema und dem CLS isomorph dargestellt?
  • Was ist konzeptionell der Unterschied zwischen Frühbindung und Spätbindung?
  • Wird Assembly.Load als statische oder dynamische Referenz verwendet?
  • Wann ist die Verwendung von Assembly.LoadFrom oder Assembly.LoadFile angemessen?
  • Was ist ein qualifizierter Asssembly-Name? Ist es ein Dateiname? Wo ist der Unterschied?
  • Ist das gültig? Assembly.Load ("foo.dll");
  • Wie unterscheidet sich eine Assembly mit starkem Namen von einer Assembly ohne starken Namen?
  • Kann DateTimes null sein?
  • Was ist die GEG? Was ist NGEN? Was sind die jeweiligen Einschränkungen und Vorteile?
  • Wie verwaltet der Garbage Collector der Generation in der .NET CLR die Objektlebensdauer? Was ist nicht deterministische Finalisierung?
  • Was ist der Unterschied zwischen Finalize () und Dispose ()?
  • Wie ist das using () Muster nützlich? Was ist IDisposable? Wie unterstützt es die deterministische Finalisierung?
  • Was macht diese nützliche Befehlszeile? Jobliste / m "mscor *"
  • Was ist der Unterschied zwischen In-Proc und Out-Of-Proc?
  • Welche Technologie ermöglicht Out-of-Proc-Kommunikation in .NET?
  • In welchem ​​Prozess wird eine Komponente in ASP.NET unter Windows XP ausgeführt? Windows 2000? Windows 2003?

Senior Entwickler / Architekten

  • Was ist los mit einer Linie wie dieser? DateTime.Parse (myString);
  • Was sind PDBs? Wo müssen sie sich befinden, damit das Debuggen funktioniert?
  • Was ist zyklomatische Komplexität und warum ist sie wichtig?
  • Schreiben Sie eine Standard-Sperre () plus "Double Check", um einen kritischen Abschnitt um einen variablen Zugriff zu erstellen.
  • Was ist FullTrust? Haben GAC-Assemblys FullTrust?
  • Welchen Nutzen hat Ihr Code, wenn Sie ihn mit Attributen versehen, die bestimmte Sicherheitsberechtigungen erfordern?
  • Was macht das? gacutil / l | find / i "Corillian"
  • Was macht das? sn-t foo.dll
  • Welche Ports müssen für DCOM über eine Firewall geöffnet sein? Was ist der Zweck von Port 135?
  • Kontrast zwischen OOP und SOA. Was sind Lehren von jedem?
  • Wie funktioniert der XmlSerializer? Welche ACL-Berechtigungen benötigt ein Prozess, der sie verwendet?
  • Warum ist catch (Ausnahme) fast immer eine schlechte Idee?
  • Was ist der Unterschied zwischen Debug.Write und Trace.Write? Wann sollte jeder verwendet werden?
  • Was ist der Unterschied zwischen einem Debug- und einem Release-Build? Gibt es einen signifikanten Geschwindigkeitsunterschied? Warum oder warum nicht?
  • Tritt JITting pro Assembly oder pro Methode auf? Wie wirkt sich das auf den Arbeitssatz aus?
  • Vergleichen Sie die Verwendung einer abstrakten Basisklasse mit einer Schnittstelle?
  • Was ist der Unterschied zwischen a.Equals (b) und a == b?
  • Was ist im Kontext eines Vergleichs Objektidentität versus Objektäquivalenz?
  • Wie würde man eine Deep Copy in .NET machen?
  • Erläutern Sie das derzeitige Denken in Bezug auf IClonable.
  • Was ist Boxen?
  • Ist string ein Werttyp oder ein Referenztyp?
  • Welche Bedeutung hat das vom XmlSerializer verwendete "PropertySpecified" -Muster? Welches Problem versucht es zu lösen?
  • Warum sind out-Parameter in .NET eine schlechte Idee? Sind sie?
  • Können einer Methode Attribute für bestimmte Parameter zugewiesen werden? Warum ist das nützlich?

C # -Komponentenentwickler

  • Stellen Sie die Verwendung von Override der neuen gegenüber. Was ist Schatten?
  • Erklären Sie die Verwendung von virtuell, versiegelt, außer Kraft gesetzt und abstrakt.
  • Erläutern Sie die Bedeutung und Verwendung der einzelnen Komponenten dieser Zeichenfolge: Foo.Bar, Version = 2.0.205.0, Culture = neutral, PublicKeyToken = 593777ae2d274679d
  • Erläutern Sie die Unterschiede zwischen öffentlich, geschützt, privat und intern.
  • Welchen Nutzen ziehen Sie aus der Verwendung einer primären Interop-Assembly (PIA)?
  • Nach welchem ​​Mechanismus kennt NUnit die zu testenden Methoden?
  • Was ist der Unterschied zwischen: catch (Ausnahme e) {throw e;} und catch (Ausnahme e) {throw;}
  • Was ist der Unterschied zwischen typeof (foo) und myFoo.GetType ()?
  • Erklären Sie, was im ersten Konstruktor passiert: public class c {public c (string a): this () {;}; public c () {;}} Wie ist dieses Konstrukt nützlich?
  • Was ist das ? Kann dies innerhalb einer statischen Methode verwendet werden?

ASP.NET (UI) -Entwickler

  • Beschreiben, wie aus einem browserbasierten Formular-POST ein serverseitiges Ereignis wie Button1_OnClick wird.
Konamiman
quelle
1
Jede hier aufgeführte Antwort war hilfreich und gut, aber ich habe jede Frage in Ihrer Liste durchgearbeitet (4 Stunden) und online einen Beispieltest geschrieben und bestanden. Ich würde jeden .net-Entwickler ermutigen, diese Fragen mindestens einmal durchzugehen und sicherzustellen, dass Sie die Antworten verstehen und die 2. und 3. Meinung einholen. Viele Leute beantworten die Fragen (bei Google gefunden), aber viele Antworten sind nicht präzise und manchmal sogar falsch. Also sei vorsichtig. Überprüfen Sie, welche Antworten Sie finden.
JL01
2
Guter Link! Ich bin überrascht, wie viele ich kannte. this.Ego ++;
Justin Self
@justnS: Das gleiche passierte mir, als ich den Beitrag entdeckte. :-)
Konamiman
Vor ein paar Wochen habe ich ein Interview geführt und sie haben es ausgedruckt, damit ich antworten kann. was für mich über den interviewer nachgedacht.
Dbones
1
Wann werden Sie die Antworten hinzufügen? ;)
Thijs van Dien
10

Geh einfach weg, Renee

Ich habe ein paar Mal solche Tests gemacht. Jetzt gehe ich einfach weg. Die Tests messen die trivialsten Teile des Programmierwissens. Möchten Sie für jemanden arbeiten, der glaubt, dass diese Tests eine gute Möglichkeit sind, Programmierer zu bewerten? Ich nicht.

Kevin Cline
quelle
1
Sie sind ein guter Weg als Mindeststandard , dh eine notwendige Bedingung, aber keine ausreichende Bedingung.
Sklivvz
4
@Sklivvz: Vielleicht, wenn sie gute Tests wären . Die meisten kommerziellen Tests sind alberne Quizaufgaben: "In welcher Klasse würden Sie eine Textdatei lesen?" Ein guter Entwickler kann möglicherweise zehn Minuten lang über die Unterschiede zwischen Byteströmen und Zeichenströmen und die Details der UTF-Codierungen sprechen und vermisst diese Frage dennoch. Wenn Informationen leicht zugänglich sind, macht es keinen Sinn, sie sich zu merken.
Kevin Cline
2
Ich stimme Kevin zu. Es gibt zu viele für Ihren Job irrelevante Informationen, die in den Tests enthalten sein können. Aus diesem Grund haben sie Google und IntelliSense erfunden - wenn wir Antworten benötigen, finden wir sie auf der Grundlage der Notwendigkeit, sie zu verwenden
ADNow,
2
Das hängt vom Test ab. Es gibt Tests, von denen ich abgewichen bin, aber dann gibt es Tests, die gut sind. Wir haben einen einfachen Test mit 3 Programmierfragen. Die erste Frage ist, eine einfache C # -App zu schreiben. Der zweite fragt nach 5 einfachen SQL-Abfragen. Die dritte Frage kann nicht beantwortet werden, ohne dass der Testteilnehmer weitere Informationen anfordert. Die erste und die zweite Frage schließen völlig inkompetente Programmierer aus. Das erspart uns Zeit, Leute zu interviewen, die unsere Zeit nicht wert sind. Die dritte Frage gibt uns einen Einblick in die Vorgehensweise eines Programmierers bei der Problemlösung. Sehr wertvolles Zeug.
Pete
8

Ich war letztes Jahr in einer Situation wie deiner. Es war so lange her, dass ich in einem Interview war, dass ich es fürchtete. Ich habe nach C # -Interviewfragen gesucht und mehrere Websites gefunden (viele davon auf den anderen Postern) und sie untersucht. Zu meiner großen Überraschung stammten 90% der Interviews wörtlich von dieser Website . Ich denke, Interviewer verwenden auch Google, um Fragen zu finden :)

System aus
quelle
6

Ich stimme Ihnen voll und ganz zu:

Tests sind unvorhersehbar und fordern Sie auf, Dinge zu erledigen, die Sie in alltäglichen Arbeitssituationen selten verwenden.

..aber sie sind Teil des Prozesses, also gibt es nichts, was wir wirklich dagegen tun können. Ich bin so etwas wie Sie mit ca. 10 Jahren Erfahrung, davon ca. 5 in .NET C #. Ich fand diese beiden SEHR guten Bücher:

C # im Detail

C # auf den Punkt gebracht

sollte alles abdecken, was Sie über C # wissen müssen. Der Rest sind Ihre eigenen Fähigkeiten und Fertigkeiten, die Sie bei bestimmten Technologien auf der Basis von C # wie ASP.NET usw. erwerben.

TheBoyan
quelle
3
Aber sie sind Teil des Prozesses, daher können wir nichts wirklich dagegen tun. Wie wäre es, wenn Sie dafür eintreten, keine albernen Programmiertests an Ihrem Arbeitsplatz als Teil des Einstellungsprozesses durchzuführen? Einstellungsprozesse sollten Ihre Kompetenz zeigen, nicht, dass Sie sich obskure Trivia merken können.
Joshin4colours
@ joshin4colours - aus diesem Grund glaube ich an das gute alte Gespräch im Interview ... sie sind jedoch gut für die Ausscheidung
TheBoyan
2
Ich habe tatsächlich den Autor eines der Bücher interviewt und ihn abgelehnt ...
Sklivvz
3

Diese Tests sind in zunehmendem Maße Teil der Vorauswahl von Bewerbern durch professionelle Rekrutierungsfirmen und einige Unternehmen geworden. Sie sollen nicht-technischen Interviewern die Möglichkeit geben, die technischen Fähigkeiten einer Person einzuschätzen. Im Grunde genommen handelt es sich jedoch nur um Trivia-Tests, die nichts Bedeutendes über die Fähigkeiten eines Programmierers aussagen, als diejenigen auszusondern, die wirklich nichts wissen. Leider legen einige Unternehmen / Personalvermittler viel zu viel Gewicht auf diese Ergebnisse.

Der Weg, für sie zu lernen, besteht darin, Websites mit Interviewfragen zu finden, legitime Websites und nicht diejenigen, die versuchen, Ihnen die Antworten zu verkaufen, die mit Popup-Anzeigen oder anderem solchen Unsinn überladen sind, und die Antworten zu stopfen. Auf diese Weise erhalten Sie eine anständige Punktzahl und springen über die Hürde. Wenn das Unternehmen zu viel Wert auf diese Ergebnisse legt, ist es wahrscheinlich nicht das beste Unternehmen, für das es arbeitet.

jfrankcarr
quelle
2

Wenn es ein Arbeitsvermittlungstest ist, sollte es nicht so schwer sein. Es ist nicht so, dass sie Sprachspezialisten haben, die den Test entwickeln. Höchstwahrscheinlich werden sie nur Fragen von einer Website kopieren / einfügen.

Solange Sie wissen, wie das Framework im Allgemeinen funktioniert und welche Namespaces / Bibliotheken für Aufgaben am häufigsten verwendet werden, sollten Sie gut sein.

silverCORE
quelle
2

Bei Interviewtests hängt vieles von der Unternehmenskultur und dem Testersteller ab. Wenn sie beabsichtigen, obskure Fragen zu stellen und Sie in die Irre zu führen, würde ich zu einer anderen Firma oder Agentur wechseln, die mehr an hochqualifizierten Personen interessiert ist, die klug sind und die Arbeit erledigen können.

Das heißt, wenn Sie c # in Ihrer täglichen Arbeit verwenden, würde ich Ihre Bemühungen auf Problemlösung und Logik konzentrieren und weniger auf die Seite des Buchlernens.

Project Euler ist ein großartiger Ort zum Üben und Verbessern von Fähigkeiten, die höchstwahrscheinlich etwas verrostet sind.

SetiSeeker
quelle