ECNF

ECNF Prüfung 2

ECNF Prüfung 2


C. W.
Diese Lernkarten behandeln fortgeschrittene Konzepte der asynchronen Programmierung und Garbage Collection in .NET, geeignet für Studierende an Universitäten. Sie vertiefen das Verständnis von Tasks, Threads, Speicherbereinigung und dem Dispose-Pattern, wobei der Fokus auf der korrekten Anwendung und den technischen Hintergründen liegt. Entwickler profitieren davon, um effiziente und ressourcenschonende Anwendungen zu erstellen, insbesondere bei der gleichzeitigen Ausführung von Aufgaben oder der Verwaltung von Ressourcen.
Flashcards
31
Students
1
Language
German
Category
Computer Science
Level
University
Created / Updated
06.06.2019 / 10.06.2019

Flashcards

Für die Ausführung von Tasks werden manchmal Threads erzeugt.

Exceptions aus asynchronen Methoden werden via Task an den Aufrufer weitergeleitet

await blockiert den aufrufenden Thread nicht.

Methoden müssen mit async markiert werden, um Methoden auf Task-Objekten aufrufen zu können.

Wird mit await auf einen Task gewartet, kann derselbe Thread in der Zwischenzeit anderen Code ausführen.

Task.Run erzeugt immer einen neuen Thread.

async/await verwendet intern den ThredPool

Durch async/await konnen mehrere Cores ausgelastet werden.

Wird mit Task.Wait() auf einen Task gewartet, kann der aufrufende Thread in der Zwischenzeit keinen anderen Code ausführen.

Wird mit Task.Wait() auf einen Task gewartet, kann der aufrufende Thread in der Zwischenzeit anderen Code ausführen.

Der Garbage Collector ist für die Ressourcenfreigabe von IDisposable-Objekten verantwortlich.

Finalizer werden in umgekehrter Reihenfolge gegenüber der Erstellung aufgerufen.

Der Garbage Collector unterbricht die Programmausführung während der Speicherbereinigung.

Der Garbage Collector wird aktiv, sobald ein Scope (z.B. eine Methode) verlassen wird 

Wie kann man die Ausführung einer LINQ-Abfrage als Local oder Remote Query forcieren?

IEnumerable vs. IQueryable

Nennen Sie zwei Nachteile von Finalizeren

nicht deterministisch -> unklar wann und OB sie aufgerufen werden.

Möglichkeit Referenzen aufzubauen welche nicht mehr weggehen.

Welche Technologie eignet sich für den "Upload einer Datei"?

Welche Technologie eignet sich für den "Grosse Pimzahlen berechnen"?

Welche Technologie eignet sich für den "Schreiben einer grossen Textdatei"?

Welche Technologie eignet sich um "Zwei Datenbankabfragen gleichzeitig durchzuführen"?

Der .NET Garbage Collector kann aus dem Programmcode angestossen werden.

Der .NET Garbage Collector ekennt zyklische Referenzen (Objekte welche sich gegenseitig referenzeiren, aber von aussen nicht referenziert werden.)

Der .NET Garbage Collector unterbricht die Programmausführung während der Speicherbereinigung.

Der .NET Garbage Collector ruft IDisposable.Dispose() auf.

Wozu dient das Dispose-Pattern?

Es ist dazu da selbst gemanagte Ressourcen freizugeben (IO Socks, networt usw.)

Wozu dient die Methode GC.SupressFinalize? Wozu wird sie im Dispose-Pattern verwendet?

Damit der GC das Objekt nicht in die Finalize Queue stellt sondern direkt abräumt.

Was versteht man im Rahmen der Garbage Collection unter "Reachable"?

Ob ein Objekt im Graph des GC an einem Root Objekt hängt.

-> es gibt noch die Referent darauf von einem Rootobjekt (auch indirekt)

Für die Ausführung von Tasks werden immer Threads erzeugt

Exceptions in asynchronen Methoden werden via Task an den Aufrufer weitergeleitet und dort wieder geworfen.

await blockiert den aufrufenden Thread.

Methoden müssen mit async markiert werden, um Methoden auf Task-Objekten aufrufen zu können.

Study