Introduzione C # OOP Intervista Domande e risposte
C # è un linguaggio di programmazione orientato agli oggetti, funzionale, generico e orientato ai componenti. Viene utilizzato per creare una varietà di applicazioni, è particolarmente efficace nella creazione di applicazioni e giochi desktop Windows. Lo sviluppo Web può anche essere fatto in modo efficiente con C # ed è diventato sempre più popolare per gli sviluppi mobili. Quindi, rappresenta una scelta eccellente per tutti i programmatori che desiderano sviluppare siti Web e giochi. È un linguaggio di tipo statico, quindi il codice sorgente scritto viene controllato accuratamente prima che si trasformi in un'applicazione. È una lingua complessa da apprendere e padroneggiare che può richiedere molto tempo. Sono disponibili vari strumenti multipiattaforma che consentono applicazioni scritte in C # che possono essere utilizzate su dispositivi mobili e desktop.
Se stai cercando un lavoro correlato a C # OOP, devi prepararti per le domande di intervista di C # OOP 2019. Anche se ogni colloquio è diverso e anche la portata di un lavoro è diversa, possiamo aiutarti con le migliori domande di intervista su C # OOP con le risposte, che ti aiuteranno a fare il salto e ottenere il successo nel tuo colloquio.
Di seguito sono riportate le principali domande di intervista di C # OOP 2019 che vengono poste frequentemente in un'intervista. Queste domande principali sono divise in due parti:
Parte 1 - Domande per l'intervista a C # OOP (di base)
Questa prima parte copre le domande e le risposte di intervista di base su C # OOP
1. Qual è la differenza tra Interface e Abstract Class?
Risposta:
Alcune differenze sono elencate di seguito:
- Una classe astratta può avere metodi non astratti (metodi concreti) mentre in caso di interfaccia tutti i metodi devono essere astratti.
- Una classe astratta può dichiarare o utilizzare qualsiasi variabile mentre a un'interfaccia non è permesso farlo.
- In una classe astratta, tutti i membri o le funzioni dei dati sono privati per impostazione predefinita mentre nell'interfaccia sono tutti pubblici, non possiamo cambiarli manualmente.
- Una classe astratta usa il costruttore mentre in un'interfaccia non abbiamo alcun tipo di costruttore.
- Una classe può implementare un numero qualsiasi di interfacce ma una sottoclasse può al massimo utilizzare solo una classe astratta.
2. Cosa sono i delegati e i suoi usi?
Risposta:
Un oggetto delegato è una variabile del tipo di riferimento che utilizza per contenere il riferimento a un metodo. Il riferimento può essere modificato in fase di esecuzione che è trattenuto da un oggetto di un delegato. Un oggetto delegato può contenere molte funzioni di riferimento che è anche noto come Elenco di invocazione che fa riferimento a funzioni in una sequenza FIFO, possiamo eseguire nuove funzioni ref in questo elenco in fase di esecuzione da un operatore + = e rimuovere da - = operatore.
I delegati vengono utilizzati in particolare per l'implementazione di eventi e i metodi di call-back. Tutti i delegati sono implicitamente derivati dal sistema. Classe delegata.
Passiamo alle prossime domande di intervista su C # OOP
3. Qual è la differenza tra associazione tardiva e associazione anticipata?
Risposta:
Nel polimorfismo del tempo di compilazione o Early Binding, utilizzeremo più metodi con lo stesso nome ma un diverso tipo di parametro o forse il numero o il parametro a causa di ciò possiamo eseguire attività diverse con lo stesso nome di metodo nella stessa classe che è anche noto come metodo di sovraccarico.
public class TestData
(
public int Add(int a, int b, int c)
(
return a + b + c;
)
public int Add(int a, int b)
(
return a + b;
)
)
class Program
(
static void Main(string() args)
(
TestData dataClass = new TestData();
int add2 = dataClass.Add(45, 34, 67);
int add1 = dataClass.Add(23, 34);
)
)
Il polimorfismo dinamico / di runtime è anche noto come associazione tardiva. Qui, il nome del metodo e la firma del metodo (il numero di parametri e il tipo di parametro deve essere lo stesso e può avere un'implementazione diversa). La sostituzione del metodo è un esempio di polimorfismo dinamico.
public class Drawing
(
public virtual double Area()
(
return 0;
)
)
public class Square : Drawing
(
public double Length ( get; set; )
public Square()
(
Length = 6;
)
public override double Area()
(
return Math.Pow(Length, 2);
)
)
public class Rectangle : Drawing
(
public double Height ( get; set; )
public double Width ( get; set; )
public Rectangle()
(
Height = 5.3;
Width = 3.4;
)
public override double Area()
(
return Height * Width;
)
)
class Program
(
static void Main(string() args)
(
Drawing square = new Square();
Console.WriteLine("Area :" + square.Area());
Drawing rectangle = new Rectangle();
Console.WriteLine("Area :" + rectangle.Area());
)
)
4. Cosa accadrebbe nel caso in cui le interfacce ereditate abbiano nomi di metodi in conflitto?
Risposta:
Queste sono le domande frequenti sull'intervista di C # OOP poste in un'intervista. se abbiamo metodi in conflitto in una stessa classe, non possiamo implementare il loro corpo in modo indipendente nella stessa classe a causa dello stesso nome e della stessa firma, quindi dobbiamo usare il nome dell'interfaccia prima del nome del metodo per rimuovere questa confusione del metodo.
interface testInterface1 (
void Show();
)
interface testInterface2 (
void Show();
)
class Abc: testInterface1,
testInterface2 (
void testInterface1.Show() (
Console.WriteLine("For testInterface1 !!");
)
void testInterface2.Show() (
Console.WriteLine("For testInterface2 !!");
)
)
5. Quali sono i diversi modi in cui un metodo può essere sovraccaricato?
Risposta:
Il sovraccarico del metodo è un altro nome per il polimorfismo in fase di compilazione, in cui è possibile creare un metodo con lo stesso nome ma con una firma diversa. Viene eseguito al momento della compilazione e possiamo farlo in diversi modi, ma il nome del metodo rimarrebbe lo stesso.
Un numero di parametri può essere diverso.
Il tipo di parametro può essere diverso.
L'ordine dei parametri può essere diverso.
Esempio -
static int volume ( int x )(
return (x * x * x);
)
static double volume (float f, int i)(
return 3.14 * f * f * I;
)
static long volume (long l, int b, int n)(
return l * b * h;
)
Parte 2 - Domande per l'intervista a C # OOP (Avanzate)
Questa prima parte copre le domande e le risposte avanzate per l'intervista a C # OOP
6. Che cos'è un modificatore dell'accessibilità e quanti ce ne sono in C #?
Risposta:
I modificatori di accesso sono parole chiave utilizzate per specificare l'accessibilità dichiarata di un membro o di un tipo. In C # ci sono 5 diversi tipi di modificatori di accesso.
Pubblico: nessuna restrizione sull'accesso ai membri pubblici.
Privato: accesso limitato all'interno di una definizione di classe, se non ne viene specificato nessuno, questa è l'impostazione predefinita.
Protetto: l'accesso è limitato alla definizione di classe e a qualsiasi classe che eredita dalla classe.
L'accesso interno è limitato esclusivamente alle classi definite dal progetto corrente
Il membro interno protetto è accessibile ovunque nello stesso assembly e accessibile anche ereditando quella classe, può essere accessibile all'esterno dell'assembly solo nella classe derivata.
7. Che cos'è un metodo virtuale in C #?
Risposta:
Un metodo virtuale è un metodo che può essere ridefinito in classi derivate. Un metodo virtuale ha un'implementazione in una classe base oltre che derivata dalla classe. Viene utilizzato quando la funzionalità di base di un metodo è la stessa, ma a volte sono necessarie più funzionalità nella classe derivata. Viene creato un metodo virtuale nella classe base che può essere sovrascritto nella classe derivata. Creiamo un metodo virtuale nella classe base usando la parola chiave virtuale e quel metodo viene sovrascritto nella classe derivata usando la parola chiave override.
Quando viene invocato un metodo virtuale, il tipo di runtime dell'oggetto viene verificato per un membro di sostituzione. Viene chiamato il membro principale nella classe più derivata, che potrebbe essere il membro originale se nessuna classe derivata ha sostituito il membro. Per impostazione predefinita, i metodi non sono virtuali. Non possiamo ignorare un metodo non virtuale.
Passiamo alle prossime domande di intervista su C # OOP
8. Come evitare NULL in C #?
Risposta:
Null non è un oggetto. Possiamo avere una classe, ma una variabile con un valore NULL significa che non punta a nessun oggetto. Potremmo imbatterci in un pezzo di codice che contiene molte istruzioni condizionali che verificherebbero se il valore di una variabile è NULL. Controlliamo un metodo statico:
stringa statica pubblica DisplayUpperString (string s) (
string upper = string.Empty;
If( s == null ) (
upper = null;
)
else (
upper = s.ToUpper();
)
return upper;
)
Questo codice va bene e converte in maiuscolo una determinata stringa.
Ma dal punto di vista OO, considera la costruzione di un oggetto che non rappresenta nulla, piuttosto che valutarlo per NULL.
stringa statica pubblica DisplayUpperString (PossibleString s) (
string upper = s.ToPossibleUpper ();
ritorno superiore;
)
Ora la funzione è meno ingombra, più leggibile e non utilizza più il controllo per un valore NULL.
9. Qual è il metodo di estensione in C # e come usarli?
Risposta:
Queste sono le domande frequenti sull'intervista di C # OOP poste in un'intervista. Un metodo di estensione è un tipo speciale di metodo statico, ma vengono chiamati come se fossero metodi di istanza sul tipo esteso. Questo metodo consente di aggiungere metodi ai tipi esistenti senza creare un nuovo tipo derivato, ricompilare o modificare in altro modo il tipo originale. I metodi di estensione hanno portata solo quando si importa esplicitamente lo spazio dei nomi nel codice sorgente con una direttiva using.
10. La parola chiave "this" può essere utilizzata in un metodo statico?
Risposta:
Poiché la parola chiave "this" restituisce un riferimento all'istanza corrente di una classe, non è possibile utilizzarla all'interno di un metodo statico. E i membri statici esistono senza alcuna istanza della classe e chiamano con il nome della classe, non per istanza. Quindi, possiamo dire che "questa" parola chiave è un tipo speciale di variabile di riferimento che è implicitamente definita all'interno di ciascun costruttore e metodo non statico come primo parametro della classe di tipo in cui è definita.
Articolo raccomandato
Questa è stata una guida all'elenco delle domande e risposte sull'intervista di C # OOP in modo che il candidato possa facilmente reprimere queste domande sull'intervista di C # OOP. Qui in questo post, abbiamo studiato le principali domande di intervista su C # OOP che vengono spesso poste nelle interviste. Puoi anche consultare i seguenti articoli per saperne di più -
- Domande di intervista dell'amministratore di Hadoop
- 12 domande stupefacenti per l'intervista a Spark
- 10 Domande importanti per l'intervista con Ab initio
- 25 domande di intervista di informatica più importanti
- Quali sono i vantaggi di C # e Js