it-swarm.dev

C # Multithreading Interviewfragen für eine leitende Entwickler- / Designerposition

Ich frage mich, welche Art von Interviewfragen einem leitenden Entwickler oder technischen Berater für Multithreading gestellt wurden.

Bitte geben Sie mir einige der Interviewfragen, die im Interview zum Thema Multithreading gestellt wurden, wenn möglich, und stellen Sie den szenariobasierten Fragen einige theoretische Fragen. Wie ich nach einer Diskussion mit einigen der Leute erfuhr, dass ein Interviewer Ihnen irgendwann ein Szenario geben und Sie bitten könnte, es umzusetzen?

@ Fügen Sie bitte die spezifischen Fragen hinzu, mit denen Sie jemals konfrontiert oder der anderen Person im Interview gestellt wurden, außer nur die Konzepte zu erwähnen, da die Leute die Konzepte durchgehen und es immer noch schwierig finden, die Interviewfragen zu bearbeiten Frage könnte tatsächlich helfen, einen Vorsprung für den d-Tag zu bekommen

7
Mohit Bhandari

Ich könnte den Kandidaten bitten, mindestens zwei oder drei verschiedene Möglichkeiten zum Erstellen von Multithread-Anwendungen in C # zu beschreiben.

  • Explizite Verwendung der Thread-Klasse

  • Threadpool

  • Task Parallel Library

  • Aktionsklasse mit Lambda-Funktionen

  • BeginInvoke

  • BackgroundWorker

Ich würde auch fragen, wie man zu einer Anwendung mit mehreren Threads kommen könnte, ohne jemals explizit einen Thread zu erstellen.

  • Ereignishandler können in einem anderen Thread ausgeführt werden (SerialPort.DataReceived sowie ein oder zwei der drei Timer in .Net).

Möglicherweise möchten Sie auch über Methoden zum Erstellen von neu eingegebenem Code sprechen.

  • sperren

  • Monitor.Wait und Monitor.Pulse

  • ManualResetEvent

  • statische Klassen/Methoden

Weitere Informationen könnten aus einem Beitrag stammen, den ich geschrieben habe hier .

Schließlich könnte ich nach Erfahrungen fragen, bei denen diese Lektionen gelernt wurden, anstatt nur einen Brain Dump aus einem Buch. Ein erfahrener Entwickler verfügt über umfangreiche Erfahrungen, die Aufschluss über seine Entdeckungs- und Problemlösungsfähigkeiten geben sollten.

6
Nate

Eine meiner Lieblingsfragen:

  1. Wie können Sie eine reaktionsschnelle Benutzeroberfläche erstellen, ohne Threads zu verwenden? Erwartete Antwort: Durch Aufteilen der Arbeit in kleine Teile und Einreihen in die Nachrichtenschleife der Benutzeroberfläche. (Eric Lippert hat eine gute Erklärung, wie das geht http://blogs.msdn.com/b/ericlippert/archive/2010/10/25/continuation-passing-style-revisited-part-three- Überlegungen zu Coroutinen.aspx )

Eine interessante Frage, die derzeit nicht in einer anderen Antwort aufgeführt ist:

  1. Erklären Sie das Stehlen von Arbeit in TPL. Wie funktioniert es und warum? Erwartete Antwort: Erklären Sie, wie der Kern, dem die Warteschlange gehört, Elemente auf einer Seite extrahiert, während ein Kern, dem die Warteschlange nicht gehört, von der anderen Seite "stiehlt", um die CPU-Cache-Zeilen zu erhalten.
2
Stilgar

Neben allen anderen Antworten möchte ich dem Kandidaten auch einige Thread-Beispiele vorstellen und ihn darauf hinweisen, wo die Probleme auftreten könnten.

Einige Beispiele wären Rennbedingungen, Interlocks oder die Konvertierung eines Problems von Single Threaded zu Multithreaded. Ich mag es besonders, diesem letzten eine Überprüfung seines Designs zu folgen, indem ich ihm erklären lasse, warum, wie und um wie viel Leistungssteigerung er sich verbessern würde.

2
Jorge Córdoba

Diese Matrix hat mir immer gefallen: http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm

Es bietet Ihnen keine fertige Box mit Fragen, aber es bietet eine ziemlich umfassende Reihe von Feldern, aus denen Sie Fragen auswählen können (sollten), um einen Bewerber zu bewerten.

GJ

1
gjvdkamp

Eine gute Methode, die ich gefunden habe, besteht darin, einige Scheinklassen zu erstellen, die verschiedene Formen von Multithreading benötigen, z. B. Invoke, WaitHandles, Semiphores usw., dann die Klassen auszudrucken und die Optionen mit dem Kandidaten zu besprechen. Es gibt dem Befragten mehr Feedback darüber, wie der Kandidat denkt, und gibt dem Kandidaten Hinweise in Bezug auf frühere Projekte usw.

0
Lloyd