Score %0 (0 correct0 incorrect20 unanswered)

Q1. In quali di queste situazioni le interfacce sono migliori delle classi astratte?

  • Quando è necessario definire le caratteristiche di un tipo di oggetto, utilizzare un'interfaccia. Quando è necessario definire le capacità di un tipo di oggetto, utilizzare una classe astratta.
  • Le interfacce sono una reliquia delle versioni precedenti di C# e sono intercambiabili con la nuova funzionalità delle classi astratte.
  • Quando è necessario un elenco di capacità e dati che sono agnostici rispetto alle classi, utilizzare un'interfaccia. Quando è necessario che un certo tipo di oggetto condivida caratteristiche, utilizzare una classe astratta.
  • Dovresti utilizzare sia un'interfaccia che una classe astratta quando si definisce un oggetto complesso.

Q2. Quale affermazione è vera per i delegati?

  • I delegati non sono supportati nella versione attuale di C#
  • Non possono essere utilizzati come callback.
  • Solo le variabili possono essere passate ai delegati come parametri.
  • Possono essere concatenati insieme.

Documentazione ufficiale: Delegati

Q3. Quale scelta definisce meglio il modello di programmazione asincrona di C#?

  • reattivo
  • callback ereditato
  • basato su attività
  • basato su callback

Documentazione ufficiale: Modello di programmazione asincrona basato su attività risposta corretta --> var contacts = new List<string>();

Q4. Come determineresti se una classe ha un particolare attributo?

  • .
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. Documentazione ufficiale: Classe Attribute
  2. Documentazione ufficiale: Metodo Attribute.GetCustomAttribute

Q5. Qual è la differenza tra le parole chiave ref e out?

  • Le variabili passate per specificare che il parametro è un parametro di output, mentre ref specifica che una variabile può essere passata a una funzione senza essere inizializzata.
  • Le variabili passate a ref possono essere passate a una funzione senza essere inizializzate, mentre out specifica che il valore è un valore di riferimento che può essere modificato all'interno del metodo di chiamata.
  • Le variabili passate a out possono essere passate a una funzione senza essere inizializzate, mentre ref specifica che il valore è un valore di riferimento che può essere modificato all'interno del metodo di chiamata.
  • Le variabili passate a ref specificano che il parametro è un parametro di output, mentre out specifica che una variabile può essere passata a una funzione senza essere inizializzata.
  1. Documentazione ufficiale: ref
  2. Documentazione ufficiale: modificatore di parametro out

Q6. Come potresti recuperare informazioni su una classe e creare un'istanza a runtime?

  • riflessione
  • serializzazione
  • astrazione
  • iniezione di dipendenze

Documentazione ufficiale: Reflection

Q7. A cosa serve questo codice?

    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) { }
        }
    }
  • una classe privata che utilizza il multithreading
  • codifica multithread
  • gestione errata del thread
  • un potenziale blocco

Documentazione ufficiale: Blocchi e condizioni di race

Q8. Qual è la differenza tra un tipo anonimo e un tipo di dati regolare?

  • I tipi anonimi non hanno nomi di tipo
  • I tipi anonimi possono essere solo statici
  • I tipi anonimi possono essere utilizzati solo in strutture
  • I tipi anonimi non funzionano con LINQ.

Documentazione ufficiale: Tipi anonimi

Q9. Quando useresti un Dictionary invece di un tipo Array nella tua applicazione?

  • Quando hai bisogno di una struttura di raccolta dentellata
  • Quando devi memorizzare valori dello stesso tipo
  • Quando hai bisogno di memorizzare coppie chiave-valore anziché valori singoli
  • Quando hai bisogno di un elenco ordinato e ricercabile

Documentazione ufficiale: Classe Dictionary<TKey,TValue>

Q10. Qual è la differenza tra a.Equals(b) e a == b?

  • Il metodo .Equals confronta le identità di riferimento mentre == confronta i contenuti.
  • Il metodo .Equals confronta i valori primitivi mentre == confronta tutti i valori.
  • Il metodo .Equals confronta i contenuti mentre == confronta l'identità di riferimento.
  • Il metodo .Equals confronta i tipi di riferimento mentre == confronta i tipi di valore primitivo.
  1. Documentazione ufficiale: Object.Equals
  2. c-sharpcorner: Operatore di uguaglianza(==) vs .Equals()

Q11. Quale scelta descrive meglio una situazione di blocco?

  • quando si cerca di istanziare due oggetti contemporaneamente nella stessa classe o struttura
  • quando si sta cercando di eseguire un'azione dopo che un evento dell'utente è stato registrato
  • quando le istruzioni simultanee stanno aspettando l'una sull'altra per terminare prima di eseguirsi
  • quando si cerca di eseguire una serie di eventi simultaneamente su più thread

Documentazione ufficiale: Blocchi e condizioni di race

Q12. Come funziona la parola chiave async?

  • Consente l'accesso ai metodi asincroni nell'API di C#
  • Consente il pooling dei thread e i processi sincroni in classi statiche.
  • Consente l'uso della parola chiave await in un metodo
  • Consente l'accesso ai metodi sincroni nell'API di C#

Documentazione ufficiale: async

Q13. Cosa è un oggetto in C#?

  • una classe o struttura, inclusi i suoi variabili e funzioni
  • un tipo di dati primitivo che può essere creato solo a tempo di compilazione
  • un tipo di valore che può essere utilizzato solo con una classe astratta
  • un'istanza di una classe o struttura che include campi, proprietà e/o metodi

Documentazione ufficiale: Oggetti

Q14. Quale frammento di codice dichiara un tipo anonimo di nome 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 };

Documentazione ufficiale: Tipi anonimi

Q15. Cosa verrà restituito quando questo metodo verrà eseguito?

public void userInput(string charParameters) { }

  • Nulla
  • un Boolean
  • una variabile stringa
  • un intero

Documentazione ufficiale: void

Q16. In che ordine verrebbero stampati i nomi dei dipendenti in questo esempio sulla console?

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);
}
  • ascendente
  • non ordinato
  • discendente
  • primo in, primo out

dotnetpattern: Operatore LINQ OrderBy

Q17. Le espressioni Lambda sono spesso utilizzate insieme a quale delle seguenti?

  • Namespace
  • LINQ
  • Alias di tipo
  • Assembly

Documentazione ufficiale: Panoramica di Language Integrated Query (LINQ)

Q18. Qual è il formato corretto per i commenti su una singola riga e su più righe?

  • /_/ - Singola riga /_ - Multiline
  • // Multiline /_ Singola riga _/
  • //\* Multiline / Singola riga
  • // Singola riga /* Multiline */

w3schools: Commenti in C#

Q19. Come rendi un metodo in una classe astratta sovrascrivibile?

  • Rendilo pubblico
  • Rendilo statico
  • Rendilo privato
  • Rendilo virtuale
  1. Documentazione ufficiale: virtual
  2. Documentazione ufficiale: abstract

Q20. Come scriveresti il codice per una proprietà intera chiamata Age con un getter e un setter?

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

Documentazione ufficiale: Utilizzo delle proprietà