Score %0 (0 correct0 incorrect20 unanswered)

Q1. In welchen Situationen sind Schnittstellen besser als abstrakte Klassen?

  • Wenn Sie die Merkmale eines Objekttyps definieren müssen, verwenden Sie eine Schnittstelle. Wenn Sie die Fähigkeiten eines Objekttyps definieren müssen, verwenden Sie eine abstrakte Klasse.
  • Schnittstellen sind ein Erbe älterer Versionen von C# und sind austauschbar mit dem neueren Feature abstrakte Klasse.
  • Wenn Sie eine Liste von Fähigkeiten und Daten benötigen, die klassenagnostisch sind, verwenden Sie eine Schnittstelle. Wenn Sie möchten, dass ein bestimmter Objekttyp Merkmale gemeinsam nutzt, verwenden Sie eine abstrakte Klasse.
  • Sie sollten sowohl eine Schnittstelle als auch eine abstrakte Klasse verwenden, wenn Sie ein komplexes Objekt definieren.

Q2. Welche Aussage über Delegaten ist wahr?

  • Delegaten werden in der aktuellen Version von C# nicht unterstützt.
  • Sie können nicht als Rückrufe verwendet werden.
  • Nur Variablen können Delegaten als Parameter übergeben werden.
  • Sie können verkettet werden.

Offizielle Dokumentation: Delegaten

Q3. Welche Wahl definiert am besten das asynchrone Programmiermodell von C#?

  • reaktiv
  • vererbter Rückruf
  • aufgabenbasiert
  • rückrufbasiert

Offizielle Dokumentation: Taskbasiertes asynchrones Programmiermodell korrekte Antwort --> var contacts = new List<string>();

Q4. Wie würden Sie feststellen, ob eine Klasse ein bestimmtes Attribut hat?

  • .
var type = typeof(SomeType);
var attribute = type.GetCustomAttribute<SomeAttribute>();
  • .
var typeof(MyPresentationModel).Should().BeDecoratedWith<SomeAttribute>();
  • .
Attribute.GetCustomAttribute, typeof(SubControllerActionToViewDataAttribute)
  • .
Attribute.GetCustomAttribute(typeof(ExampleController), typeof(SubControllerActionToViewDataAttribute))
  1. Offizielle Dokumentation: Attributklasse
  2. Offizielle Dokumentation: Attribute.GetCustomAttribute-Methode

Q5. Was ist der Unterschied zwischen den Schlüsselwörtern ref und out?

  • Variablen, die ref übergeben werden, geben an, dass der Parameter ein Ausgabeparameter ist, während ref angibt, dass eine Variable an eine Funktion übergeben werden kann, ohne initialisiert zu werden.
  • Variablen, die ref übergeben werden, können an eine Funktion übergeben werden, ohne initialisiert zu werden, während out angibt, dass der Wert ein Referenzwert ist, der innerhalb der aufrufenden Methode geändert werden kann.
  • Variablen, die out übergeben werden, können an eine Funktion übergeben werden, ohne initialisiert zu werden, während ref angibt, dass der Wert ein Referenzwert ist, der innerhalb der aufrufenden Methode geändert werden kann.
  • Variablen, die ref übergeben werden, geben an, dass der Parameter ein Ausgabeparameter ist, während out angibt, dass eine Variable an eine Funktion übergeben werden kann, ohne initialisiert zu werden.
  1. Offizielle Dokumentation: ref
  2. Offizielle Dokumentation: out-Parametermodifizierer

Q6. Wie könnten Sie Informationen über eine Klasse abrufen und gleichzeitig zur Laufzeit eine Instanz erstellen?

  • Reflexion
  • Serialisierung
  • Abstraktion
  • Abhängigkeitsinjektion

Offizielle Dokumentation: Reflexion

Q7. Wofür ist dieser Code ein Beispiel?

    private static object objA;
    private static object objB;

    private static void performTaskA()
    {
        lock (objB)
        {
            Thread.Sleep(1000);
            lock (objA) { }
        }
    }

    private static void PerformTaskB()
    {
        lock (objA)
        {
            lock (objB) { }
        }
    }
  • Eine private Klasse, die Mehrfachgewindigkeit verwendet
  • Mehrfadenprogrammierung
  • Threadfehlverwaltung
  • Ein potenzieller Deadlock

Offizielle Dokumentation: Deadlocks und Rennbedingungen

Q8. Was ist der Unterschied zwischen einem anonymen Typ und einem regulären Datentyp?

  • Anonyme Typen haben keine Typnamen
  • Anonyme Typen können nur statisch sein
  • Anonyme Typen können nur in Strukturen verwendet werden
  • Anonyme Typen funktionieren nicht mit LINQ.

Offizielle Dokumentation: Anonyme Typen

Q9. Wann würden Sie ein Wörterbuch anstelle eines Array-Typs in Ihrer Anwendung verwenden?

  • Wenn Sie eine gestufte Sammlungsstruktur benötigen
  • Wenn Sie Werte desselben Typs speichern müssen
  • Wenn Sie Schlüssel-Wert-Paare speichern müssen, anstelle einzelner Werte
  • Wenn Sie eine geordnete, durchsuchbare Liste benötigen

Offizielle Dokumentation: Dictionary<TKey,TValue>-Klasse

Q10. Was ist der Unterschied zwischen a.Equals(b) und a == b?

  • Die .Equals-Methode vergleicht Referenzidentitäten, während == Inhalte vergleicht.
  • Die .Equals-Methode vergleicht primitive Werte, während == alle Werte vergleicht.
  • Die .Equals-Methode vergleicht Inhalte, während == Referenzidentität vergleicht.
  • Die .Equals-Methode vergleicht Referenztypen, während == primitive Werttypen vergleicht
  1. Offizielle Dokumentation: Object.Equals
  2. c-sharpcorner: Gleichheitsoperator(==) vs .Equals()

Q11. Welche Wahl beschreibt am besten eine Deadlock-Situation?

  • Wenn Sie versuchen, zwei Objekte gleichzeitig in derselben Klasse oder Struktur zu instanziieren
  • Wenn Sie versuchen, eine Aktion nach einer Benutzerereignisregistrierung auszuführen
  • Wenn gleichzeitige Anweisungen darauf warten, dass die jeweils anderen vor dem Ausführen fertig werden
  • Wenn Sie versuchen, eine Reihe von Ereignissen gleichzeitig auf mehreren Threads auszuführen

Offizielle Dokumentation: Deadlocks und Rennbedingungen

Q12. Wie funktioniert das Schlüsselwort async?

  • Es ermöglicht den Zugriff auf asynchrone Methoden in der C#-API
  • Es ermöglicht Thread-Pooling und synchrone Prozesse in statischen Klassen.
  • Es ermöglicht die Verwendung des await-Schlüsselworts in einer Methode.
  • Es ermöglicht den Zugriff auf synchrone Methoden in der C#-API

Offizielle Dokumentation: async

Q13. Was ist ein Objekt in C#?

  • eine Klasse oder Struktur, einschließlich ihrer Variablen und Funktionen
  • ein primitiver Datentyp, der nur zur Kompilierzeit erstellt werden kann
  • ein Werttyp, der nur mit einer abstrakten Klasse verwendet werden kann
  • eine Instanz einer Klasse oder Struktur, die Felder, Eigenschaften und/oder Methoden enthält

Offizielle Dokumentation: Objekte

Q14. Welcher Codeausschnitt deklariert einen anonymen Typ namens userData?

  • var<<!---->T> userData = new <<!---->T> { name = "John", age = 32 };
  • var userData = new { name = "John", age = 32 };
  • AType userData = new AType { name = "John", age = 32 };
  • Anonymous<T> userData = new Anonymous<T> { name = "John", age = 32 };

Offizielle Dokumentation: Anonyme Typen

Q15. Was wird zurückgegeben, wenn diese Methode ausgeführt wird?

public void userInput(string charParameters) { }

  • Nichts
  • ein Boolean
  • eine Zeichenfolgenvariable
  • eine Ganzzahl

Offizielle Dokumentation: void

Q16. In welcher Reihenfolge würden die Mitarbeiternamen in diesem Beispiel auf der Konsole gedruckt?

string[] employees = { "Joe", "Bob", "Carol", "Alice", "Will" };

IEnumerable<string> employeeQuery = from person in employees
                                    orderby person
                                    select person;

foreach(string employee in employeeQuery)
{
    Console.WriteLine(employee);
}
  • aufsteigend
  • ungeordnet
  • absteigend
  • First-In-First-Out

dotnetpattern: LINQ-OrderBy-Operator

Q17. Lambda-Ausdrücke werden häufig in Verbindung mit welchem der folgenden verwendet?

  • Namensräume
  • LINQ
  • Typaliasing
  • Assemblys

Offizielle Dokumentation: Überblick über Language Integrated Query (LINQ)

Q18. Was ist das richtige Format für Einzelzeilen- und Mehrfachzeilenkommentare?

  • /_/ - Einzelzeile /_ - Mehrzeile
  • // Mehrzeile /_ Einzelzeile _/
  • //\* Mehrzeile / Einzelzeile
  • // Einzelzeile /* Mehrzeile */

w3schools: C#-Kommentare

Q19. Wie machen Sie eine Methode in einer abstrakten Klasse überschreibbar?

  • Machen Sie es öffentlich
  • Machen Sie es statisch
  • Machen Sie es privat
  • Machen Sie es virtual
  1. Offizielle Dokumentation: virtual
  2. Offizielle Dokumentation: abstract

Q20. Wie würden Sie Code für eine Integer-Eigenschaft namens Alter mit Getter und Setter schreiben?

  • public int Age { get - set }
  • public int Age: get set;
  • public int Age (get, set );
  • public int Age { get; set; }

Offizielle Dokumentation: Verwendung von Eigenschaften