Sommario[Nascondere][Spettacolo]
- 1. Che cos'è esattamente C#?
- 2. Cosa distingue C# da C?
- 3. Che cos'è esattamente una classe?
- 4. Che cos'è esattamente un oggetto?
- 5. Qual è la distinzione tra i termini statico, pubblico e vuoto?
- 6. Definisci i costruttori.
- 7. Che cos'è C# nella raccolta dei rifiuti?
- 8. Cosa significa esattamente struttura in C#?
- 9. Come viene compilato il codice C#?
- 10. Descrivi chiaramente le diverse classi C#.
- 11. Cosa sono esattamente gli array frastagliati?
- 12. Qual è la distinzione tra i parametri out e ref?
- 13. In C#, cos'è un distruttore?
- 14. In C#, cos'è un indicizzatore?
- 15. Qual è la differenza tra codice gestito e non gestito?
- 16. Descrivere la serializzazione.
- 17. In C#, come variano i campi e le proprietà l'uno dall'altro?
- 18. Come puoi descrivere in dettaglio l'utilizzo di istruzioni in C#?
- 19. Come implementeresti numerose interfacce con lo stesso nome di metodo nella stessa classe?
- 20. In C#, qual è la distinzione tra Task e Thread?
- 21. Qual è la funzione di finalizzazione in C#?
- 22. Fare una distinzione tra finalizzare i blocchi e finalizzare.
- 23. Descrivere in dettaglio il metodo C# dispose of.
- 24. Che cos'è il sovraccarico del metodo C#? Chiarire.
- 25. Qual è la distinzione tra sola lettura e costanti?
- 26. Cosa sono il controllo utente e il controllo personalizzato?
- 27. In C#, cos'è un delegato multicast?
- 28. Che cos'è esattamente il pool di oggetti in C#?
- 29. Cosa sono esattamente i generici in C#.NET?
- 30. È possibile sovrascrivere un metodo virtuale privato?
- 31. Differenziare tra sovraccarico del metodo e sovrascrittura del metodo in C#?
- 32. In C#, qual è la distinzione tra String e StringBuilder?
- 33. Cosa sono esattamente i delegati?
- 34. Quando dovresti utilizzare il multithreading in C# e quando dovresti evitarlo?
- 35. In C#, cos'è un delegato multicast?
- 36. In C#, qual è la distinzione tra associazione tardiva e associazione anticipata?
- 37. Differenziare tra Directcast e Ctype?
- 38. Come viene utilizzato HashSet in C#?
- 39. Si prega di spiegare Thread Pooling in C#.
- 40. Qual è la distinzione tra le parole chiave Const e ReadOnly in C#?
- 41. Quali dettagli potete fornire riguardo al file C# XSD?
- 42. Cosa significano per te le proprietà Get and Set Accessor?
- 43. Che cos'è esattamente l'inserimento delle dipendenze in C#?
- Conclusione
C# (precedentemente noto come C sharp) è un linguaggio di programmazione orientato agli oggetti che viene spesso utilizzato dagli sviluppatori per svolgere diverse attività e raggiungere più obiettivi.
I linguaggi di programmazione orientati agli oggetti, come C++, Python e Java, sono disponibili in una varietà di versioni. Questi linguaggi di programmazione sono progettati per funzionare all'interno di un determinato framework. Allo stesso modo, C# viene creato e sviluppato per un framework specifico, ovvero NET.
Il framework .NET è stato creato da Microsoft. Fornisce una vasta piattaforma per lo sviluppo di applicazioni, dichiarazioni, istruzioni per l'applicazione e così via. C# può essere utilizzato per lo sviluppo web, i giochi, applicazioni mobili, applicazioni Windows e altri progetti simili.
Con tali vantaggi, l'uso di C# si è ampliato e la necessità di specialisti in grado di utilizzarlo con precisione è raddoppiata. Perché C# è così popolare linguaggio di programmazione, una moltitudine di grandi e piccole aziende basano i loro prodotti su di esso.
Quindi, esercitati con domande C# di livello base e avanzato per superare le interviste.
1. Che cos'è esattamente C#?
Microsoft C# è un programma moderno, generico, programmazione orientata agli oggetti linguaggio. C# è destinato alla Common Language Infrastructure (CLI), che comprende codice eseguibile e un ambiente di runtime che consente l'utilizzo di numerosi linguaggi di alto livello su diversi sistemi e architetture di computer.
2. Cosa distingue C# da C?
C è generalmente noto come linguaggio procedurale, mentre C# è più orientato agli oggetti. La distinzione principale è che C# consente la Garbage Collection automatizzata tramite Common Language Runtime (CLR), mentre C non lo fa. C# richiede l'esecuzione di .NET Framework, mentre C è un linguaggio indipendente dalla piattaforma.
3. Che cos'è esattamente una classe?
Una classe funge da modello per la creazione di oggetti. Insieme alle tecniche, ha attributi. Da una singola classe, possiamo produrre più istanze di un oggetto.
4. Che cos'è esattamente un oggetto?
Un'istanza di classe nota come oggetto è il modo in cui accediamo alle funzionalità di una classe. Per costruire un oggetto, possiamo usare la parola chiave "nuovo". Vengono archiviate le funzioni, i membri dati e il comportamento di una classe che produce un oggetto in memoria.
5. Qual è la distinzione tra i termini statico, pubblico e vuoto?
Ovunque nel programma può accedere a variabili definite pubblicamente. È possibile accedere alle variabili statiche a livello globale senza la necessità di creare un'istanza di classe. In C#, viene utilizzato un modificatore di tipo chiamato Void per indicare il tipo restituito di un metodo.
6. Definisci i costruttori.
Un costruttore è una funzione membro specifica della classe. Quando viene formato un oggetto, il costruttore viene chiamato automaticamente. La classe costruisce tutti i valori dei membri dati quando viene inizializzata.
7. Che cos'è C# nella raccolta dei rifiuti?
Il processo di pulizia della memoria che è stata occupata da elementi indesiderati è noto come Garbage Collection. Una certa quantità di memoria viene assegnata automaticamente a un oggetto classe quando viene creato nella memoria heap. Ora che hai finito di lavorare sull'oggetto, lo spazio di memoria che occupava in precedenza viene sprecato. La memoria deve essere liberata.
8. Cosa significa esattamente struttura in C#?
In C#, una struttura è un tipo di dati costituito da numerosi tipi di dati, ad esempio metodi, campi, costruttori, costanti, proprietà, indicizzatori, operatori e persino altre strutture. Una struttura aiuta a consolidare molti tipi di dati in un'unica unità. In questo modo, sono analoghi ai corsi. Le strutture sono tipi di valore, mentre le classi sono tipi di riferimento.
9. Come viene compilato il codice C#?
Quando viene creato un progetto, il codice sorgente C# viene compilato in Intermediate Language (IL). IL è una raccolta di istruzioni che genera codice macchina per l'esecuzione su un processore macchina. Il codice viene inviato dal preprocessore al compilatore, quindi all'assemblatore e infine al linker in quattro fasi.
10. Descrivi chiaramente le diverse classi C#.
- Statico: è il tipo di classe che non può essere istanziato, quindi non possiamo usare la parola chiave new per farne un oggetto, ma possiamo chiamare i membri della classe direttamente usando il nome della loro classe.
- Abstract: per definire classi astratte, utilizzare la parola chiave abstract. Non è possibile creare oggetti per classi astratte. Deve essere ereditato in una sottoclasse se vuoi usarlo. Sono consentite definizioni semplici di metodi astratti e non astratti all'interno di una classe Abstract.
- Parziale: questa classe consente di separare le proprietà, i metodi e gli eventi in diversi file di origine, che vengono successivamente combinati in un'unica classe in fase di compilazione.
- Sigillato: una classe sigillata non può essere ereditata da un'altra classe e ha caratteristiche limitate. Non è possibile aggiungere modificatori di accesso alla classe sealed.
11. Cosa sono esattamente gli array frastagliati?
Un array con elementi dell'array viene definito array frastagliato. Gli elementi di Jagged Arrays potrebbero essere di molte forme e dimensioni.
12. Qual è la distinzione tra i parametri out e ref?
Quando si fornisce un argomento come riferimento, il parametro deve essere inizializzato prima di essere passato al metodo. Un parametro out, d'altra parte, non ha bisogno di essere inizializzato prima di essere fornito a un metodo.
13. In C#, cos'è un distruttore?
Un distruttore è un tipo di metodo in C# che fa parte di una classe. La funzione principale di un distruttore è eliminare le istanze di una classe quando non sono più necessarie per liberare memoria. I distruttori sono talvolta noti come finalizzatori.
14. In C#, cos'è un indicizzatore?
Gli indicizzatori vengono usati in C# per trovare le istanze di una classe o di una struttura. È quindi possibile accedere ai valori indicizzati in modo simile a una matrice, ma senza dover dichiarare in modo esplicito un tipo o un membro di istanza.
15. Qual è la differenza tra codice gestito e non gestito?
Il codice gestito consente di eseguire codice in .NET Framework in un ambiente di runtime CLR gestito.
Il codice controllato viene eseguito nell'ambiente di runtime gestito anziché nel sistema operativo. Fornisce una varietà di servizi come un raccoglitore di rifiuti, la gestione delle eccezioni e così via.
Il codice non gestito è codice che non viene eseguito su CLR e opera al di fuori del framework .NET. Non forniscono servizi linguistici di alto livello e quindi operano senza di essi. C++ è uno di questi esempi.
16. Descrivere la serializzazione.
È necessario creare un flusso di byte dall'elemento per trasferirlo su una rete. La serializzazione è l'atto di trasformare un elemento in un flusso di byte. L'interfaccia Serialize deve essere implementata affinché un articolo sia serializzabile. L'opposto di costruire un oggetto da un flusso di byte è chiamato deserializzazione.
17. In C#, come variano i campi e le proprietà l'uno dall'altro?
Un campo è un membro di una classe o un oggetto di qualsiasi tipo che funge da posizione per la memorizzazione dei dati, mentre una proprietà è un membro di una classe che offre un metodo per leggere, scrivere e calcolare il valore di un campo privato.
18. Come puoi descrivere in dettaglio l'utilizzo di istruzioni in C#?
L'istruzione using viene utilizzata per limitare l'utilizzo di una o più risorse all'interno dell'applicazione. Le risorse vengono consumate e rilasciate su base costante.
Il compito principale di questa affermazione è gestire le risorse indesiderate e rilasciarle automaticamente. Una volta formato l'oggetto che sta utilizzando la risorsa, assicurarsi che la funzione di eliminazione dell'oggetto venga chiamata per rilasciare le risorse richieste da quell'oggetto; qui è dove l'utilizzo delle istruzioni torna utile.
19. Come implementeresti numerose interfacce con lo stesso nome di metodo nella stessa classe?
Per implementare più interfacce con lo stesso nome di metodo, evitare di implementarle all'interno del corpo della funzione. Dovresti invece fornire il nome dell'interfaccia direttamente nel corpo del metodo. Il compilatore riconoscerà a quali metodi di interfaccia viene fatto riferimento, risolvendo il problema.
20. In C#, qual è la distinzione tra Task e Thread?
Un thread è un vero thread del sistema operativo con il proprio stack e risorse del kernel. Il thread fornisce il massimo controllo. Il thread consente di interrompere (), sospendere () o riprendere (). È possibile osservare lo stato di un thread o impostarne gli attributi, ad esempio la dimensione dello stack, lo stato dell'apartment e le impostazioni cultura. Il CLR mantiene un pool di thread avvolti da ThreadPool.
La libreria Task Parallel ha una classe chiamata Task. A differenza del ThreadPool, il Task non ha il proprio thread del sistema operativo. Le attività vengono eseguite da TaskScheduler, sebbene l'utilità di pianificazione predefinita venga eseguita da ThreadPool. È possibile essere avvisati quando un'attività viene completata e ottenere un risultato.
21. Qual è la funzione di finalizzazione in C#?
La classe oggetto utilizzata per le azioni di pulizia definisce la funzione finalize(). Quando un riferimento a un oggetto non viene utilizzato per un lungo periodo di tempo, il Garbage Collector chiamerà spesso questa funzione.
Il Garbage Collector libera automaticamente le risorse controllate, ma se desideri liberare risorse non necessarie come handle di file, connessioni dati e così via, devi implementare esplicitamente la funzione finalize.
22. Fare una distinzione tra finalizzare i blocchi e finalizzare.
Il blocco finito viene chiamato dopo che i blocchi try-and-catch sono stati completati poiché è necessario per la gestione delle eccezioni. Il blocco di codice viene eseguito indipendentemente dal fatto che l'eccezione sia stata rilevata. Il codice del blocco è generalmente più pulito.
Il metodo finalize viene invocato appena prima della raccolta dei rifiuti. Le principali responsabilità del metodo finalizzato consistono nel ripulire il codice non gestito, che viene attivato automaticamente ogni volta che un'istanza non viene richiamata.
23. Descrivere in dettaglio il metodo C# dispose of.
La funzione disposeof() libera le risorse inutilizzate di un oggetto. Risorse inutilizzate, come file, connessioni dati e così via. Questa funzione è specificata nell'interfaccia IDisposable, che viene implementata dalla classe dichiarando il corpo dell'interfaccia IDisposable.
La funzione di smaltimento non viene chiamata automaticamente; il programmatore deve implementarlo manualmente per un utilizzo efficace delle risorse.
24. Che cos'è il sovraccarico del metodo C#? Chiarire.
L'overloading dei metodi è un approccio tipico in C# che viene usato per costruire una serie di metodi con lo stesso nome e firme specificate. Questa procedura viene ripetuta con la stessa classe.
Al termine della procedura di overloading del metodo, il compilatore avvia le operazioni per chiamare le azioni specificate in base all'overloading del metodo.
25. Qual è la distinzione tra sola lettura e costanti?
Le variabili costanti vengono dichiarate e inizializzate durante la compilazione. Dopodiché, questo valore non può essere modificato. D'altra parte, la sola lettura viene utilizzata una volta che un valore è stato allocato in fase di esecuzione.
26. Cosa sono il controllo utente e il controllo personalizzato?
Il codice compilato viene utilizzato per sviluppare controlli personalizzati. Questi possono essere inclusi nella cassetta degli attrezzi e sono facili da usare. Trascinando e rilasciando questi controlli, gli sviluppatori possono includerli nei loro moduli web.
I controlli utente e i file inclusi in ASP sono abbastanza simili. Sono anche semplici da realizzare. I controlli utente, d'altra parte, non possono essere aggiunti alla casella degli strumenti. Inoltre non possono essere tirati e lasciati cadere da esso.
27. In C#, cos'è un delegato multicast?
Un delegato multicast mantiene riferimenti o indirizzi a più funzioni contemporaneamente. Quando invochiamo il delegato multicast, invocherà anche tutte le altre funzioni a cui si riferisce. Per chiamare diversi metodi, usa l'intera firma del metodo, proprio come il delegato. Come esempio:
28. Che cos'è esattamente il pool di oggetti in C#?
Il pool di oggetti è una tecnica di progettazione nel software che ricicla le cose anziché ricostruirle. Lo fa archiviando gli elementi scelti in un pool e rendendoli disponibili per l'uso quando un'applicazione li richiede. Questa procedura migliora le prestazioni riducendo la generazione di oggetti inutili.
29. Cosa sono esattamente i generici in C#.NET?
I generici vengono utilizzati per creare classi di codice riutilizzabili al fine di ridurre la ridondanza del codice, migliorare la sicurezza dei tipi e aumentare la velocità. Possiamo costruire classi di raccolta con generici.
Nel sistema, dovrebbe essere utilizzato uno spazio dei nomi generico invece di classi come ArrayList. Spazio dei nomi per le raccolte. L'uso di tipi parametrizzati è incoraggiato dai generici.
30. È possibile sovrascrivere un metodo virtuale privato?
Non è possibile eseguire l'override di un metodo virtuale privato poiché è privato per la classe e non è possibile accedervi dall'esterno.
31. Differenziare tra sovraccarico del metodo e sovrascrittura del metodo in C#?
L'override del metodo è il processo di alterazione della definizione fondamentale di una classe derivata. I metodi della classe derivata alla fine si comportano in modo diverso come risultato di questa strategia.
L'overloading dei metodi, d'altra parte, può essere descritto come l'atto di generare molti metodi con lo stesso nome ma firme distinte sotto la stessa classe.
32. In C#, qual è la distinzione tra String e StringBuilder?
Un oggetto stringa è immutabile, il che significa che non può essere modificato una volta creato. Qualsiasi tentativo di modificare l'oggetto stringa comporterà la creazione di un nuovo oggetto stringa.
Un oggetto generatore di stringhe, d'altra parte, è malleabile e può essere modificato come lo sviluppatore ritiene appropriato.
33. Cosa sono esattamente i delegati?
In C++, i delegati sono fondamentalmente gli stessi dei puntatori a funzione. L'unica distinzione tra i due è che i delegati sono indipendenti dai tipi mentre i puntatori a funzione non lo sono. I delegati sono necessari perché consentono la costruzione di funzioni generiche indipendenti dai tipi.
34. Quando dovresti utilizzare il multithreading in C# e quando dovresti evitarlo?
Il multithreading, spesso noto come threading, è un approccio efficace per aumentare la velocità di un programma in cui numerose attività vengono eseguite contemporaneamente. Consente a vari thread di essere eseguiti in modo indipendente, anziché attendere il completamento del passaggio precedente. Questo ha la capacità di aumentare il ritmo di un programma.
Tuttavia, quando diversi processi del programma sono interconnessi, il multithreading non è consigliato. Ad esempio, se il passaggio B dipendesse dal completamento del passaggio A, il multithreading causerebbe problemi di prestazioni e difetti del software. Il threading diventa sempre più sensibile man mano che un programma si sviluppa in complessità.
35. In C#, cos'è un delegato multicast?
Un delegato multicast in C#, al contrario di un delegato di base, fa riferimento a numerosi metodi di destinazione. Quando viene utilizzato un delegato multicast, vengono chiamate tutte le funzioni indicate dal delegato. Sono implementati con l'aiuto della classe MulticastDelegate del sistema.
36. In C#, qual è la distinzione tra associazione tardiva e associazione anticipata?
- L'associazione anticipata avviene in fase di compilazione, mentre l'associazione tardiva avviene durante il runtime.
- L'associazione tardiva è spesso più lenta dell'associazione anticipata poiché si verifica in fase di esecuzione.
- A differenza dell'associazione tardiva, che utilizza l'oggetto per risolvere le chiamate al metodo, l'associazione anticipata risolve le chiamate al metodo utilizzando le informazioni sulla classe.
37. Differenziare tra Directcast e Ctype?
Il tipo di oggetto che richiede che il tipo di runtime corrisponda al tipo specificato in DirectCast viene convertito utilizzando DirectCast.
Quando viene specificata una conversione tra un'espressione e un tipo, viene utilizzato Ctype.
38. Come viene utilizzato HashSet in C#?
In C#, un HashSet è una raccolta non ordinata di valori distinti. In generale, viene utilizzato per impedire l'inserimento di elementi duplicati in una raccolta e in questa attività ha prestazioni migliori rispetto a un elenco.
La classe HashSet, che discende da System, viene utilizzata per implementarla.
39. Si prega di spiegare Thread Pooling in C#.
In C#, un pool di thread è una raccolta di thread. Questi thread vengono utilizzati per eseguire attività senza interferire con la funzionalità del thread principale. Un thread in un pool di thread ritorna al pool di thread al termine dell'esecuzione.
La classe System contiene classi che gestiscono il thread nel pool di thread e le relative azioni. Filettatura. ThreadPool è uno spazio dei nomi.
40. Qual è la distinzione tra le parole chiave Const e ReadOnly in C#?
- ReadOnly non può essere dichiarato all'interno del metodo, mentre Const può.
- Const è una costante di compilazione, mentre ReadOnly è una costante di runtime.
- I valori di sola lettura possono essere modificati, ma i valori Const no.
41. Quali dettagli potete fornire riguardo al file C# XSD?
XSD sta per XML Schema Definition. Se nessun file XSD è connesso al file XML, può avere attributi, elementi e tag. Il file XSD fornisce un framework per il file XML, determinando quali componenti e attributi dovrebbero essere presenti nel file XML, nonché il loro ordine.
42. Cosa significano per te le proprietà Get and Set Accessor?
In C#, Get e Set sono stati definiti funzioni di accesso poiché sono realizzati utilizzando le proprietà. Una proprietà consente di leggere e scrivere sul valore di un campo privato. Tali campi privati sono accessibili tramite gli accessor.
Mentre la proprietà Get viene utilizzata per restituire il valore di una proprietà, la proprietà Set viene utilizzata per impostare il valore.
43. Che cos'è esattamente l'inserimento delle dipendenze in C#?
L'inserimento delle dipendenze (DI) è una tecnica di progettazione in C# usata per creare una programmazione collegata in modo lasco. Questa procedura trasferisce la creazione e l'associazione di oggetti dipendenti al di fuori della classe su cui si basano. L'obiettivo principale è rendere più gestibili le future modifiche al codice.
Conclusione
C# è il linguaggio di programmazione principale utilizzato in tutti i linguaggi di programmazione di livello superiore. Gli sviluppatori C# sono molto richiesti e possono trovare interessanti prospettive di carriera in settori come lo sviluppo front-end, la programmazione back-end e lo sviluppo di app. E poiché Microsoft lo supporta, la popolarità di C# non farà che aumentare.
Le suddette sono le domande più cruciali dell'intervista in C# per professionisti esperti e principianti. Vedere La serie di interviste di Hashdork per aiuto con la preparazione del colloquio.
Lascia un Commento