Fragen, die jeder gute .NET-Entwickler beantworten kann? [geschlossen]

246

Mein Unternehmen ist dabei, .NET-Entwickler einzustellen . Wir arbeiten auf einer Vielzahl von .NET-Plattformen: ASP.NET, Compact Framework, Windowsforms, Web Services. Ich möchte eine Liste / einen Katalog mit guten Fragen zusammenstellen, eine Art Mindeststandard, um zu sehen, ob die Bewerber Erfahrung haben. Meine Frage lautet also:

Welche Fragen sollte ein guter .NET-Programmierer Ihrer Meinung nach beantworten können ?

Ich würde es auch als Checkliste für mich selbst sehen, um zu sehen, wo meine eigenen Defizite liegen (es gibt viele ...) .

Alt-Text

* UPDATE: Es soll klargestellt werden, dass wir nicht nur auf .NET-Kenntnisse testen und dass Problemlösungsfunktionen und allgemeine Programmierkenntnisse für uns noch wichtiger sind.

splattne
quelle

Antworten:

171

Grundlegende Fragen sind:

Ich denke, es ist normalerweise hilfreich, Ihre Bewerber zu bitten, eine einfache Kodierungsübung durchzuführen, wie z.

  • Schreiben Sie Ihre eigene verknüpfte Listenklasse, ohne die integrierten Klassen zu verwenden.
  • Schreiben Sie Ihre eigene Hashtable-Klasse, ohne die integrierten Klassen zu verwenden.
  • Schreiben Sie eine Klasse, die einen Binärbaum darstellt. Schreiben Sie eine Methode, die alle Knoten des Baums durchläuft.
  • Schreiben Sie eine Methode, um eine binäre Suche in einem Array durchzuführen, ohne integrierte Methoden zu verwenden.
  • Zeichnen Sie ein Datenbankschema für ein Blog. Jeder Benutzer hat nur ein Blog, jedes Blog hat viele Kategorien, jede Kategorie hat viele Beiträge und jeder Beitrag kann zu mehr als einer Kategorie gehören. Bitten Sie Ihren Bewerber, Anfragen zu schreiben, um bestimmte Informationen herauszuholen.

Suchen Sie als Nächstes nach spezifischem technischem Know-how:

  • (Ereignishandler) Erstellen Sie eine Klasse mit einem benutzerdefinierten Ereignishandler. Erstellen Sie eine weitere Klasse, die sich an den benutzerdefinierten Ereignishandler anschließt.
  • (XML) Laden Sie ein XML-Dokument und wählen Sie alle Knoten mit den Eigenschaften x, y und z aus.
  • (Funktionsprogrammierung) Erstellen Sie eine Funktion, die eine andere Funktion als Parameter akzeptiert. Eine Map- oder Fold-Funktion funktioniert hierfür sehr gut.
  • (Reflexion) Schreiben Sie eine Funktion, die bestimmt, ob eine Klasse ein bestimmtes Attribut hat.
  • (Regex) Schreiben Sie einen regulären Ausdruck, der alle Tags aus einem HTML-Block entfernt.

Keine dieser Fragen ist für einen erfahrenen C # -Programmierer besonders schwierig zu beantworten, und sie sollten Ihnen eine gute Vorstellung von den besonderen Stärken Ihrer Bewerber geben. Möglicherweise möchten Sie auch einige Fragen / Codebeispiele bearbeiten, die bestimmte Entwurfsmuster verwenden.

[Zur Verdeutlichung bearbeiten] :

Es scheint, dass viele Leute nicht verstehen, warum ich diese Art von Fragen stellen würde. Lassen Sie mich einige Kommentare der Leute ansprechen (ich zitiere nicht direkt, sondern umschreibe stattdessen):


F: Wann hat das letzte Mal jemand flüchtige Stoffe oder schwache Referenzen verwendet?

A: Wenn ich technische Interviews gebe, überprüfe ich, ob eine Person die Funktionen von .NET auf hoher und niedriger Ebene versteht. Flüchtige und schwache Referenzen sind zwei von .NET bereitgestellte Funktionen auf niedriger Ebene. Auch wenn diese Funktionen in der Praxis nicht häufig verwendet werden, sind die Antworten auf diese Fragen äußerst aufschlussreich:

  • Ein gutes Verständnis von flüchtigen Bestandteilen zeigt, dass eine Person versteht, wie Compiler-Optimierungen die Korrektheit von Code ändern, wie Threads lokale Kopien des gemeinsam genutzten Status halten, die zu einem bestimmten Zeitpunkt möglicherweise nicht synchron sind, und sich einiger Komplexitäten von Multithread-Code nur minimal bewusst ist .

  • Ein gutes Verständnis schwacher Referenzen zeigt, dass eine Person die intimen Details des Garbage Collectors kennt und weiß, wie sie entscheidet, wann Speicher freigegeben werden soll. Sicher, Sie könnten Kandidaten fragen, "wie funktioniert ein Garbage Collector", aber wenn Sie nach schwachen Referenzen fragen, erhalten Sie eine viel bessere und nachdenklichere Antwort.

.NET ist eine ziemlich abstrakte Sprache, aber Star-Entwickler haben fast immer ein tiefes Verständnis der CLR und der Details der .NET-Laufzeit auf niedriger Ebene.


F: Warum sollte jemand seine eigene Hashtabelle oder verknüpfte Liste implementieren müssen?

A: Ich impliziere nicht, dass die Dictionary-Klasse minderwertig ist oder dass die Leute ihre eigene Hashtabelle rollen sollten. Dies ist eine grundlegende Frage, die prüft, ob eine Person ein minimales Verständnis von Datenstrukturen hat. Das ist es, worauf diese Fragen testen: ein Minimum an Verständnis.

Sie erfahren diese Hashtabellen und verknüpften Listen am ersten Tag von Data Structures 101. Wenn jemand eine Hashtabelle oder eine verknüpfte Liste nicht von Grund auf neu schreiben kann, hat er eine große Lücke in seinem technischen Wissen.


F: Warum sind diese Fragen so grob orientiert?

A: Weil der Titel dieses Threads "Fragen, die jeder gute .NET-Entwickler kennen sollte" lautet. Jeder .NET-Entwickler beginnt seine Karriere mit dem Schreiben von Roh-Apps, und 90% aller Menschen in der Anwendungsentwicklung, die ihren Lebensunterhalt verdienen, befassen sich mit Branchenanwendungen.

Ich denke, Fragen, die das Wissen einer Person über Branchen-Apps testen, sind in den meisten Fällen angemessen, es sei denn, Sie suchen Entwickler in ganz bestimmten Nischen wie Compiler-Entwicklung, Game-Engine-Entwicklung, Theorem-Prüfung, Bildverarbeitung usw. .

Julia
quelle
8
Ich denke, Ihre Liste ist ein guter Weg, um nach Stärken und Schwächen zu suchen, aber es ist kein "Grundwissen". Wie Greg betont, wurde ich von "kurzgeschlossenen" Betreibern gestolpert, obwohl sie einfach sind und ich sie oft benutze: Ich hatte gerade den Namen vergessen. Würde mich das disqualifizieren?
Mark Brittingham
33
Ebenso habe ich noch nie eine Variable "Volatile" deklariert und sehr wenig mit XML gemacht und konnte daher Ihre Programmieraufgabe nicht abschließen. Und doch - ich bin ein veröffentlichter Autor, habe einen großen Programmierwettbewerb gewonnen und 4 erfolgreiche Produkte geschrieben, die mit großen Preisen ausgezeichnet wurden.
Mark Brittingham
24
Daher bin ich nicht unbedingt mit Ihrer Liste nicht einverstanden - ich bin nur nicht einverstanden mit Ihrer Charakterisierung der Wissenselemente als "Grundlegend". Keines ist ein hartes Konzept - aber einige sind nur ziemlich spezifisch und einer guten Anzahl von Bewerbern nicht vertraut. Trotzdem - noch einmal - bitte ich um Entschuldigung.
Mark Brittingham
39
Die Hälfte der Elemente auf dieser Liste sind Trivia-Fragen. Dies wird nicht helfen, gute Leute zu finden, aber es könnte einige von ihnen genug nerven, um Ihr Interview zu beenden.
Jason Kester
15
(Regex) Write a regular expression which removes all tags from a block of HTML.- Ich rieche Probleme
BlueRaja - Danny Pflughoeft
135

Ich fand diese Listen auf Scott Hanselman ‚s Blog :

Hier sind meiner Meinung nach die wichtigsten Fragen aus diesen Beiträgen, die in Kategorien unterteilt sind. Ich habe sie bearbeitet und neu arrangiert. Glücklicherweise gibt es für die meisten dieser Fragen bereits eine gute Antwort auf Stack Overflow. Folgen Sie einfach den Links (ich werde sie alle so schnell wie möglich aktualisieren) .

Plattformunabhängige .NET-Fragen

ASP.NET

splattne
quelle
8
Ich kenne Entwickler, die das alles wissen und immer noch nicht weiter als bis zum Buch sehen können. Aufgeschlossenheit ist sehr wichtig. Versuchen Sie außerdem nicht, zu viele detaillierte Antworten zu erhalten, sondern stellen Sie sicher, dass sie das Konzept verstehen.
Saif Khan
Ich altere, Saif. Wenn Sie jedoch die Details nicht kennen, können Sie die "Konzepte" nicht korrekt anwenden.
Splattne
2
Einige Fragen sind wirklich dumm, wie zum Beispiel der Unterschied zwischen Debug- und Release-Build. Ja, Visual Studio hat einige Build-Konfigurationen vordefiniert, dies ist jedoch keine plattformunabhängige Frage. Jemand, der über die Befehlszeile oder mit Mono kompiliert, hat möglicherweise keine Ahnung, wovon Sie sprechen.
Lubos Hasko
3
Können Sie Konzepte, die normalerweise 2 Seiten oder sogar ein Kapitel eines Buches umfassen, in einer Interview-Situation artikuliert beschreiben? Ich kann nicht, ohne sie vorher zu proben
Chris S
1
Versuchen Sie nicht, Leute zu bitten, Begriffe zu definieren. Sie werden mit CS-Majors enden, die sie für Tests auswendig lernen mussten, aber Leute verpassen, die tatsächlich wissen, wie man programmiert. Ich erinnere mich, dass ich einmal gefragt wurde, was "Aufschieben" sei. Ich hatte nicht die erste Ahnung, obwohl ich es damals 30 Mal am Tag getan habe.
Jason Kester
94

Dies ist möglicherweise nicht das, was Sie hören möchten, aber ich würde empfehlen, sich nicht auf enge Technologien zu konzentrieren, sondern auf allgemeine Programmier- und Problemlösungsfähigkeiten. Solide Entwickler können schnell lernen, was sie wollen.

Ich bin zum Beispiel kein Compact Framework-Typ, daher könnte ich Ihr Interview nicht bestehen, wenn Sie in diese Richtung gehen. Aber wenn ich es benutzen müsste, könnte ich etwas recherchieren und direkt einsteigen.

Joels Buch " Smart and Gets Things Done" enthält großartige Ratschläge für die Einstellung von Entwicklern, und es gibt große, saftige Abschnitte über die Art der Fragen, die gestellt werden müssen. Ich empfehle es sehr.

Brian MacKay
quelle
Vielleicht sollte ein Teil des Einstellungsprozesses ein Problem in Cardspace sein oder etwas, das sie noch nie gesehen haben !!
Jennifer
Vielleicht, aber es gibt das Problem der Forschung, also denke ich, dass das unfair sein könnte. Ich bin mehr daran interessiert zu sehen, wie sie Probleme durchdenken und vielleicht sehen, wie sie etwas Abstraktes codieren, damit ich herausfinden kann, ob sie nativ Code sprechen oder nicht.
Brian MacKay
Wenn ich mich für zwei Personen entscheiden könnte, die beide über allgemeine Programmier- und Problemlösungsfähigkeiten verfügen, MUSS ich aus praktischen Gründen die Person mit besseren .NET-Kenntnissen und -Erfahrungen auswählen.
Splattne
.NET-Kenntnisse sicherlich, aber wenn es um die engeren Technologien geht, denke ich, dass Sie mit dem Programmierer mit den Fähigkeiten zur Problemlösung gehen können.
Jennifer
5
Ja, wir müssen alle Tonnen von "engen Technologien" kennen. Aber für jeden, den wir kennen, gibt es eine Menge, die wir nicht kennen (normalerweise, weil wir sie nicht gebraucht haben). Ich sage, Sie möchten keinen großartigen Entwickler verpassen, der SharePoint nicht kennt, denn in Kürze könnte er Ihr bester SharePoint-Typ sein.
Brian MacKay
66

Ich denke, wenn ich jemanden interviewen würde, der LINQ-Erfahrung hat, würde ich ihn möglicherweise nur bitten, LINQ zu erklären. Wenn sie die verzögerte Ausführung, das Streaming, die IEnumerable / IEnumerator-Schnittstellen, foreach, Iteratorblöcke und Ausdrucksbäume (für Bonuspunkte jedenfalls) erklären können, können sie wahrscheinlich den Rest bewältigen. (Zugegeben, sie könnten "ok" -Entwickler sein und LINQ noch nicht "bekommen" - ich denke wirklich an den Fall, in dem sie behauptet haben, genug LINQ zu kennen, um es zu einer fairen Frage zu machen.)

In der Vergangenheit habe ich einige der bereits aufgeführten und einige andere Fragen gestellt:

  • Unterschied zwischen Referenz- und Wertetypen
  • Referenzübergabe vs. Wertübergabe
  • IDisposable und Finalizer
  • Zeichenfolgen, Unveränderlichkeit, Zeichencodierungen
  • Gleitkomma
  • Delegierte
  • Generika
  • Nullable Typen
Jon Skeet
quelle
1
Ja, ich wollte diese Art von Antwort sehen. Guter Kandidat für die Aufnahme. Jemand besser?
Splattne
5
@splattne: Sei nicht albern, das ist eine Antwort von Jon Skeet, also akzeptiere sie einfach. Es ist unvermeidlich.
Steven A. Lowe
3
Ich wollte gerade sagen ... wt ... du fragst Skeet nicht!
Saif Khan
1
Dies ist eine viel bessere Antwort als die akzeptierte. Es hilft Ihnen zu verstehen, ob jemand über fundierte Kenntnisse in einem Bereich mit angeblichem Fachwissen verfügt, und prüft gleichzeitig die Kenntnisse über Sprachfunktionen, die einen ziemlich breiten Bereich abdecken.
Mark Brittingham
1
Diese Antwort ist besser als "Entwerfen Sie Ihre eigene verknüpfte Liste", "Analysieren Sie HTML mit regulären Ausdrücken" oder "Wie viel wissen Sie über Assembly, GAC usw.", weil sie Tools und Konzepte behandelt, die Sie verwenden möchten tatsächlich während der Entwicklung verwenden. Intime Kenntnisse von LINQ sind ebenfalls unerlässlich. Ich habe auf dieser Site viele Fälle gesehen, in denen Leute versuchen, ihre eigene Version von Union Distinct und Concat für Sammlungen zu rollen, weil sie LINQ nicht verstehen.
Evan Plaice
42

Ich bin mit den Leuten zusammen, die eher nach Fähigkeiten zur Problemlösung suchen als nach Dingen, die Sie in den 101 besten .NET-Interview-Fragen und Antworten nachschlagen und auswendig lernen können.

Um mich selbst als Beispiel zu nennen, neige ich dazu, die Dinge zu „kennen“, die ich von Tag zu Tag verwenden muss. Ich neige dazu, Dinge zu vergessen (und später nachschlagen zu müssen), die ich selten benutze.

Wenn Sie mich in einem Interview stolpern wollten, wäre es sehr einfach.

Trotzdem habe ich einen Großteil der Infrastruktur für ein System entworfen und codiert, das identische Business Objects- und Datenschichten für seine WinForms- und ASP.NET-Inkarnationen verwendet, und unsere Codebasis ist robust und wiederverwendbar genug, um 20+ unterstützen und entwickeln zu können unterschiedlich konfigurierte Versionen der Website sowie eine zunehmende Anzahl (derzeit 5) der WinForms-Anwendung ...

... mit einem Entwicklungsteam von zwei.

Ich habe in einem Team als technischer Leiter gearbeitet, und mein Job beinhaltete eine Menge Rekrutierung und Interviews. Mein spektakulärster Fehler war die Einstellung eines Mannes, der mehr über die Technologie wusste, die wir verwendeten, als alle anderen von uns zusammen, einschließlich mir, und ich zählte mich selbst als Experte. Er wusste alles ...

... außer wie man Code schreibt, der entweder den Anforderungen entspricht oder von jedem außer ihm verstanden werden kann. Als ich den Premierminister schließlich überredete, seinen Vertrag nicht zu verlängern, musste alles, was er schrieb, neu geschrieben werden.

Strukturieren Sie Ihre Interviews mit Bedacht ...

ChrisA
quelle
1
Das ist eine wirklich interessante Beobachtung. Wir hatten die gegenteilige Situation: eine kleine Clique von Entwicklern, die weniger wussten als andere, aber das Management davon überzeugten, dass sie mehr wussten. Sie schlugen eine Datenabstraktionsklasse vor, die ich für unmöglich hielt (ich wurde dafür kritisiert, kein "Teamplayer" zu sein).
Mark Brittingham
- Fortsetzung - nach 4 Monaten "Skunk Works" -Anstrengung präsentierten sie dem Team ... ihre Transferpapiere an eine andere Abteilung - und KEIN Code. Der Rest des Teams musste die Stücke abholen.
Mark Brittingham
1
Fazit: Ich mag Ihre Beobachtung sehr, dass spezifisches Wissen über Codierungskonstrukte keine Garantie für die Fähigkeit ist, funktionierende Software zu erstellen, die den Kundenanforderungen entspricht.
Mark Brittingham
34

Wer ist Jon Skeet?

Steven A. Lowe
quelle
11
Oder besser: Bist du Jon Skeet? ;-)
splattne
Dies ist eigentlich eine gute Frage für C # -Positionen. In Anbetracht dessen, dass Jon Skeet jetzt Stackoverflow- / Google-Suchen für C # -bezogene besitzt. Wenn Sie nicht wissen, wer er jetzt ist, sind Sie entweder Jon Skeet oder Sie programmieren nicht in C #.
Lubos Hasko
2
Keine Beleidigung für Jon Skeet - aber ich denke, Rick Strahl
taucht
1
@ [Andrew Theken]: Ich werde die Prozentsätze auf diesem spielen ;-) Google für "Rick Strahl" liefert 38.500 Treffer, "Jon Skeet" ergibt 144.000. Außerdem postet Rick Strahl nicht auf SO AFAIK.
Steven A. Lowe
1
Beide sind großartig in dem, was sie tun ... unser Gewinn.
GR7
33

Gute Fragen, die mir gestellt wurden, sind

  • Was ist Ihrer Meinung nach gut an .NET?
  • Was ist Ihrer Meinung nach schlecht an .NET?

Es wäre interessant zu sehen, was sich ein Kandidat einfallen lassen würde, und Sie werden sicherlich einiges darüber lernen, wie er / sie das Framework verwendet.

qui
quelle
18

Ich würde immer selbst nach den Soft Skills suchen - kein Wortspiel beabsichtigt. Also gutes OO-Design, testgetriebene Entwicklung, ein guter mehrsprachiger (Programmier-) Hintergrund und eine rundum allgemeine Intelligenz (und die Erledigung von Aufgaben, denke ich!).

Ein intelligenter Entwickler sollte keine Probleme haben, die einzelnen Technologien zu erlernen, die er kennen muss, auch wenn er sie noch nie zuvor angeschaut hat. Daher würde ich mir keine Sorgen über spezifische Fragen zu WCF / Compact Framework und dergleichen machen.

Ich würde sie Code schreiben lassen - der beste Weg, um herauszufinden, was sie wissen und wie sie funktionieren. Jeder kann sich die Antwort auf "Was ist der Unterschied zwischen einem Referenztyp und einem Werttyp?"

Jennifer
quelle
2
Genau richtig. Rote Fragen zu stellen bedeutet Ärger. Die Firma, für die ich arbeite, stellt die alte Technikfrage, aber meistens ist es: Ich habe diese Probleme, hier ist ein Whiteboard, das mir zeigt, wie Sie sie lösen würden. Beängstigend aber effektiv.
Chris Brooks
4
... aber wenn Sie sie nicht so lösen, wie es der Interviewer erwartet, scheitern Sie.
Gbjbaanb
1
@gbjbaanb manchmal. Aber wenn das der Fall ist, möchten Sie vielleicht sowieso nicht dort arbeiten. Denken Sie daran, dass Sie auch das Unternehmen interviewen. Ich habe einige Unternehmen gekannt, die das Interview nicht bestanden haben!
Tony Ennis
13

Ehrlich?

"Was ist .NET?"

Wenn sie Ihnen eine klare Antwort geben können, was .NET ist und was nicht, wie es verwendet wird, aus welchen Elementen es besteht usw. Wenn sie Sie davon überzeugen können, dass sie wissen, was es ist, sind sie wahrscheinlich weiß es ziemlich gut.

Tatsache ist, dass viele Leute nicht wirklich wissen, was .NET ist. Sogar diejenigen, die Programme dafür schreiben.

Erik Funkenbusch
quelle
11

Eigentlich keine. Es gibt wahrscheinlich sehr einfache Fragen, auf die die klügsten Menschen der Welt keine Antworten kennen. Nicht weil sie hart sind, sondern einfach weil sie einfach nicht darauf gestoßen sind. Sie sollten sich das gesamte Paket und die Fähigkeiten des Entwicklers ansehen und nicht, ob er eine beliebige Frage beantworten kann.

Wenn die Frage leicht genug ist, um in ein oder zwei kurzen Sätzen beantwortet zu werden, ist es leicht genug, nur jemandem davon zu erzählen, der es nicht weiß. Sie sollten nach ihrem Verständnis für Konzepte und Argumentationsfähigkeiten suchen, nicht nach ihrer Fähigkeit, Fragen zu beantworten, "die jeder .NET-Entwickler beantworten kann".

Gene Roberts
quelle
10

Kennen Sie den Unterschied zwischen Referenz- und Werttypen.

Beachten Sie, dass Ereignisse als harte Referenzen gespeichert werden (dh denken Sie daran, die Registrierung von Ereignissen aufzuheben, da sonst die Anwendung Speicher verliert).

Saiten sind unveränderlich.

Brian Rasmussen
quelle
6

Martin Fowler bevorzugt Designfähigkeiten gegenüber Plattformkenntnissen . Auf der anderen Seite können Sie eine Frage stellen, die Kenntnisse über Entwurfsmuster und die .NET-Plattform wie folgt zeigt:

  • Nennen Sie Entwurfsmuster und -prinzipien, die Sie kennen und wie sie in .NET Framework verwendet werden.
Dzmitry Huba
quelle
4

Ich schlage vor, sich nach Blogs zu erkundigen, die sie regelmäßig lesen, und nach persönlichen Programmierprojekten, an denen sie gearbeitet haben, da dies Lernbereitschaft und Leidenschaft für das Programmieren zeigt.

Nikolaus
quelle
3

Hier sind einige, mit denen ich Programmierer gefiltert habe, die sich für Jobs als C # -Programmierer bewerben:

Was ist der Unterschied zwischen einem Referenztyp und einem Werttyp?

Erläutern Sie die IDisposable-Schnittstelle, für welches C # -Sprachenkonstrukt sie erforderlich ist und wie Sie sie implementieren würden.

Welche Ausnahme würden Sie auslösen, wenn eine Null als Argument an eine Methode übergeben wird, deren Vertrag keinen Nullwert für diesen Parameter zulässt?

Mike Scott
quelle
Mein Code würde normalerweise eine NullReferenceException auslösen.
Joshua
5
@Joshua, ArgumentNullException du bist gescheitert.
Nicolas Dorier
3

"Welche der ASP: Welche Steuerungen würden Sie jemals in der Produktion verwenden und warum?"

So erfahren Sie schnell, ob Ihr Fach jemals ein großes Projekt erstellt und gewartet hat, das lange genug von DataGrids und LinkButtons gebrannt wurde, oder ob es sich noch in der Drag / Drop-Phase "Unterrichten Sie sich in 21 Tagen" befindet.

(Die Antwort lautet asp: Repeater, asp: PlaceHolder, asp: Literal und asp: Content)

Jason Kester
quelle
2

Was ist ein Thread?

Was ist der GC?

StingyJack
quelle
2

Dies ist eine etwas variable Frage, und nicht wirklich eine, die Sie jetzt vollständig beantworten können sollten, sondern eine, die Sie gegebenenfalls beantworten können sollten:

"Was bietet das .NET Framework, um Aufgabe X zu erledigen?"

Oder genauer:

"Enthält das .NET Framework ein Objekt, das X ausführt?"

Zum Beispiel habe ich kürzlich einige Stunden damit verbracht, ein Objekt zu entwickeln, das für das Speichern eines Arrays von Booleschen Werten und dessen Bearbeitung optimiert ist, z. B. das Sammeln aller Werte in Bezug auf NOT, OR, XOR, AND usw. Es war nicht ' Erst nachdem ich alle meine Komponententests geschrieben und für die bestmögliche Leistung optimiert hatte, stellte ich fest, dass mein "BoolArray" -Objekt bereits im .NET Framework unter dem Namen "BitArray" vorhanden war.

Dies kann schwierig zu beantworten sein, da die beste Antwort auf die zu verwendenden Objekte / Helfer oft die ist, die Sie nicht kennen oder nicht vollständig verstehen. Wie wunderbar die .NET-Welt wäre, wenn jeder selbst über den einfachen StringBuilder Bescheid wüsste, ein grundlegendes Tool, mit dem die Leistung erheblich gesteigert werden kann.

Spodi
quelle
2

Ich werde einige Fragen vorschlagen, die sich auf das Verständnis der Programmierkonzepte mit dotnet like konzentrieren

Was ist der Unterschied zwischen verwalteter und nicht verwalteter Umgebung? Vor- und Nachteile von GC Vor- und Nachteile von JIT Wenn wir Anwendung X entwickeln müssen, können wir dotnet verwenden? Warum? (Dies wird identifizieren, wie er das Dotnet sieht)

Ich schlage auch vor, kleine Methoden zu schreiben und ihn zu bitten, sie mit besserer Leistung unter Verwendung besserer Dotnet-Klassen oder Standardmethoden neu zu schreiben. Schreiben Sie auch falsche (logische) Methoden oder was auch immer und bitten Sie ihn, sie zu korrigieren.

Ahmed Said
quelle
2

Ich bin ein Fan von Folgendem zusätzlich zu einigen der bereits erwähnten Fragen:

  • Was ist ein Delegierter?
  • Was ist die App-Domain?
  • Wann würden Sie das Schlüsselwort lock verwenden?
  • Sind die generischen Sammlungsklassen der Standardbibliothek threadsicher?
  • Was ist eine Erweiterungsmethode?
  • Was ist der Unterschied zwischen XmlDocument und XmlReader?
  • Wie lesen Sie die Konfigurationseinstellungen aus der Anwendungskonfigurationsdatei ein?
segy
quelle
2

Dies ist interessant, und es besteht die Gefahr, dass dies abgelehnt wird, weil ich meiner Meinung nach taub geboren bin. Eine solche Frage zu stellen, würde mehr Aufwand erfordern, um meine Gedanken persönlich zu kommunizieren.

Um ehrlich zu sein, würde ich wirklich nicht zu viel von den typischen Fragen lesen, da das zugrunde liegende Paradigma lautet: „ Wie gut können Sie Ihre Gedanken und Ihr Verständnis aussprechen? ', das ist wirklich das, wonach der Interviewer sucht. Kommunikation ist aufgrund meiner Art immer meine größte Schwäche und kann leicht frustriert werden.

Es wäre ideal, das Wissen zu haben und der Besserwisser zu sein, aber leider gibt es einige Dinge, die ich nicht weiß, aber keine Angst zu haben, wenn Sie die Antwort tatsächlich nicht kennen und sie eher zugeben als bluffen durch. Wenn mir ein Interviewer eine Frage wie eine der oben genannten stellen würde, bei der ich mir nicht sicher wäre oder die Frage nicht verstehe / falsch interpretiere, würde ich sie im Voraus sagen, was persönlich peinlich sein kann, aber gelernt hat, damit umzugehen.

Sie wären überrascht, wie viele tatsächlich waffeln und durchbluffen würden, in denen sie am Ende des Tages metaphorisch mit heruntergelassenen Hosen erwischt werden.

Meine 2 Cent, Mit freundlichen Grüßen, Tom.

t0mm13b
quelle
2

Ein paar mehr:

  1. Teilklassen. Und seine Grenzen?
  2. Versiegelte Klassen
  3. Wie kann die Lokalisierung in .NET erfolgen?
  4. Datenbankkonnektivität
  5. Verschiedene Konfigurationsdateien
  6. Delegierte gegen Ereignisse
  7. Nicht verwalteter DLL-Zugriff
  8. Reflexionen
  9. Generische Klassen
  10. Am heißesten in .NET 3.5
  11. Von Ihnen verwendete Unit-Testing-Frameworks.
RameshVel
quelle
2

Ich würde nicht die Fragen stellen, die "etwas aus dem Lehrbuch wissen", sondern ein paar Bastelarbeiten wie:

  • Was macht die foreach-Schleife in einfachem C #? (Erwartet, dass er eine Iteratorschleife schreibt.)
  • Was ist ein Singleton?
  • Lassen Sie ihn / sie einen String auf Datetime analysieren (erwarten Sie, dass er / sie TryParse anstelle von try / catch verwendet)
  • Implementieren Sie die Singleton-, Strategie- und Befehlsmuster
  • Lassen Sie ihn / sie Refactor einen Code zum Testen. Erwarten Sie, dass er / sie die externen Dienste von der zu testenden Einheit abstrahiert und sein eigenes Test-Double des Dienstes implementiert (ohne spöttischen Rahmen).

Diese sind nicht 100% sicher, abhängig von der Person, die ich sie fragen darf:

  • Lassen Sie ihn / sie eine Methode vor Null-Eingabe schützen (in der Erwartung, dass er / sie mehrere Rückgaben verwendet, um die Verschachtelung zu reduzieren)
  • Wie funktioniert ein Objektinitialisierer (erwartet, dass er / sie die thread-sichere Zuweisung schreibt)

Ich würde ihn auch fragen, wie er / sie seine / ihre Sachen gelernt hat und was er / sie liest (welche Blogs, Bücher).

Migräne
quelle
1

Ein paar mehr:

Was sind die Einschränkungen der Speicherbereinigung?

Wissen über Finalizer und IDisposable.

Beachten Sie den Thread-Pool und wann er verwendet werden soll.

Wenn Sie GUI-Anwendungen ausführen, beachten Sie, dass die Windows-GUI Single-Threaded ist.

Verwenden Sie foreach (ich sehe viele Leute, die MoveNext usw. machen)

Brian Rasmussen
quelle
1
Ich wusste es nicht, also habe ich die Einschränkungen der Speicherbereinigung nachgeschlagen .
MSpeed
1

Ich denke, es sollten nicht nur Fragen sein, ich kenne ein paar Leute, die brillant sind, wenn Sie sie interviewen, aber sobald sie die Realität erreicht haben, sind sie zu perfektionistisch. Ich würde sagen, dass sie die Aufgabe nicht kläglich codieren.

Ich wurde einmal interviewt und mochte den Ansatz, bei dem mir der erste Arbeitgeber einen technischen Fragebogen zum Ausfüllen von 30 Minuten gab. Wenn einer erfolgreich ist, wird er zu einem einstündigen Interview mit Fragen zur Beurteilung der Persönlichkeit und zur Charakterfindung sowie zu Fachjargons eingeladen.

Dann wurde ich gebeten, in 6 Stunden eine dreiseitige Webanwendung zu entwickeln. Die Einschränkungen, die in der Anwendung auferlegt wurden, deckten intelligent wichtige Aspekte der Anwendungsentwicklung ab, wie z. B. eine kleine ERD, Layerd-Design, UI-Konsistenz, die Steuerung spezifischer Probleme wie die Verwendung von Optionsfeldern in GridView und das Abrufen und Anzeigen von Bildtypen aus DB auf einer Webseite, eine Algorithmusentwicklung, Sicherheit, Verschlüsselung, Hashing, Datendarstellung und -manipulation.

Am nächsten Tag folgte eine 30-minütige Diskussion über die entwickelte Anwendung, die Bereiche mit Leistungsengpässen und Verbesserungen des Designs und der verwendeten Algorithmen abdeckte. Und 1 Stunde optionaler Test zur Verbesserung Ihres Algorithmus, der im vorherigen Schritt unter einer bestimmten Bedingung entwickelt wurde.

Es hat also ziemlich viel Zeit in Anspruch genommen, aber auf diese Weise können Sie sicherstellen, dass die Person, die Sie einstellen, zumindest die Konzepte kennt, die für einen guten Entwickler unerlässlich sind.

S M Kamran
quelle
0

Ich würde es vorziehen, ihm ein Problem zu geben und ihn zu bitten, es mit den Funktionen von .net zu lösen, die Sie kennen und warum es Ihrer Meinung nach die beste Lösung ist.

Dies wird fast alle Fähigkeiten eines Kandidaten in Bezug auf technische, analytische und Problemlösungsfähigkeiten zusammen mit seinem Ansatz zur Lösung eines Problems knacken.

JPReddy
quelle