Top 10 C # Răspunsuri la interviu și răspunsuri la OOP (Actualizate pentru 2019)

Cuprins:

Anonim

Introducere C # OOP Interviu Întrebări și răspunsuri

C # este un limbaj de programare orientat pe obiecte, funcțional, generic și bazat pe componente. Este folosit pentru a construi o varietate de aplicații, este special puternic pentru a construi aplicații și jocuri desktop pentru Windows. Dezvoltarea web se poate face și eficient cu C # și a devenit din ce în ce mai populară pentru dezvoltările mobile. Deci, face o alegere excelentă pentru orice programator care dorește să dezvolte web și jocuri. Este un limbaj tipizat static, astfel încât codul sursă scris este verificat amănunțit înainte de a se transforma într-o aplicație. Este un limbaj complex pentru a învăța și stăpânirea acestuia poate dura o cantitate substanțială de timp. Există diverse instrumente multiplă platformă care permit aplicațiile scrise în C # care pot fi utilizate pe mobil și pe desktop.

Dacă sunteți în căutarea unui loc de muncă care are legătură cu C # OOP, trebuie să vă pregătiți pentru întrebările de interviu C # OOP din 2019. Deși fiecare interviu este diferit și sfera unui loc de muncă este, de asemenea, diferită, vă putem ajuta cu cele mai bune întrebări de interviu C # OOP cu răspunsuri, care vă vor ajuta să faceți saltul și să vă obțineți succes în interviu.

Mai jos sunt cele mai bune întrebări de interviu 2019 C # OOP care sunt adresate frecvent într-un interviu, aceste întrebări de top sunt împărțite în două părți sunt următoarele:

Partea 1 - Întrebări de interviu C # OOP (de bază)

Această primă parte acoperă întrebările și răspunsurile de bază ale interviului C # OOP

1. Care este diferența dintre interfața și clasa abstractă?

Răspuns:
Unele diferențe sunt enumerate mai jos:

  • O clasă abstractă poate avea metode non-abstracte (metode concrete), în timp ce în cazul interfeței toate metodele trebuie să fie abstracte.
  • O clasă abstractă poate declara sau utiliza orice variabilă în timp ce o interfață nu are voie să facă acest lucru.
  • Într-o clasă abstractă, toți membrii sau funcțiile de date sunt private în mod implicit, în timp ce în interfață toate sunt publice, nu le putem schimba manual.
  • Un constructor de clasă abstractă folosește un conector în timp ce într-o interfață nu avem niciun tip de constructor.
  • O clasă poate implementa orice număr de interfețe, dar o subclasă poate utiliza cel mult o singură clasă abstractă.

2. Care sunt delegații și utilizările acestuia?

Răspuns:
Un obiect delegat este o variabilă de tip de referință care folosește pentru a reține referința la o metodă. Referința poate fi modificată la runtime, care este deținută de un obiect al delegatului. Un obiect delegat poate reține numeroase funcții de referință, care este, de asemenea, cunoscut sub numele de Lista de invocare care se referă la funcții într-o secvență FIFO, putem noi funcții ref din această listă la runtime de un operator + = și putem elimina prin - = operator.
Delegații sunt folosiți în special pentru implementarea evenimentelor și metodele de apelare. Toți delegații sunt implicit derivați din sistem. Clasa delegată.

Haideți să trecem la următoarele întrebări de interviu C # OOP

3. Care este o diferență între legarea tardivă și legarea timpurie?

Răspuns:
În polimorfismul Compila-timp sau legare timpurie, vom folosi mai multe metode cu același nume, dar un tip diferit de parametru sau poate numărul sau parametrul, din această cauză putem efectua diferite sarcini diferite cu același nume de metodă din aceeași clasă, care este de asemenea cunoscut sub numele de Metoda supraîncărcare.

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);
)
)

Polimorfismul dinamic / runtime este cunoscut și sub denumirea de legare tardivă. Aici, numele metodei și semnătura metodei (numărul de parametri și tipul de parametru trebuie să fie același și poate avea o implementare diferită). Suprasolicitarea metodei este un exemplu de polimorfism dinamic.

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. Ce s-ar întâmpla în cazul în care interfețele moștenite ar avea nume de metode contradictorii?

Răspuns:
Aceasta este întrebarea comună a interviului C # OOP adresată într-un interviu. dacă avem metode conflictuale într-o aceeași clasă, nu putem implementa corpul lor independent în aceeași clasă, din cauza aceluiași nume și aceeași semnătură, așa că trebuie să folosim numele interfeței înainte de numele metodei pentru a elimina această confuzie.

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. Care sunt diferitele moduri în care o metodă poate fi supraîncărcată?

Răspuns:
Supraîncărcarea metodei este un alt nume pentru polimorfismul compilat în timp, unde putem crea o metodă cu același nume, dar cu o semnătură diferită. Se face la timp de compilare și putem face mai multe moduri, dar numele metodei ar rămâne același.

O serie de parametri pot fi diferiți.
Tipul parametrului poate fi diferit.
Ordinea parametrului poate fi diferită.

Exemplu -

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;
)

Partea 2 - Întrebări de interviu C # OOP (avansat)

Această primă parte acoperă întrebările și răspunsurile avansate ale interviului C # OOP

6. Ce este un modificator de accesibilitate și câți sunt în C #?

Răspuns:
Modificatorii de acces sunt cuvinte cheie utilizate pentru a specifica accesibilitatea declarată a unui membru sau a unui tip. În C # există 5 mai multe tipuri de modificatori de acces.

Public - Fără restricții de acces la membrii publici.
Privat - acces limitat în cadrul unei definiții a clasei, dacă nu este specificată niciuna, aceasta este implicită.
Protejat - accesul este limitat la definiția clasei și la orice clasă care se moștenește de la clasă.
Intern - accesul este limitat exclusiv la clasele definite de proiectul curent
Membrul intern protejat poate fi accesat oriunde în același ansamblu și accesibil, de asemenea, moștenind acea clasă, poate fi accesibil în afara ansamblului doar în clasa derivată.

7. Care este o metodă virtuală în C #?

Răspuns:
O metodă virtuală este o metodă care poate fi redefinită în clase derivate. O metodă virtuală are o implementare într-o clasă de bază, precum și derivată din clasă. Este utilizat atunci când funcționalitatea de bază a unei metode este aceeași, dar uneori este nevoie de mai multe funcționalități în clasa derivată. În clasa de bază este creată o metodă virtuală care poate fi înlocuită în clasa derivată. Creăm o metodă virtuală în clasa de bază folosind cuvântul cheie virtual și această metodă este anulată în clasa derivată folosind cuvântul cheie de înlocuire.
Atunci când este invocată o metodă virtuală, tipul de timp de execuție al obiectului este verificat pentru un membru suprasemnal. Este numit membru suprasolicitant din clasa cea mai derivată, care ar putea fi membru inițial dacă nicio clasă derivată nu a depășit membrul. În mod implicit, metodele sunt non-virtuale. Nu putem ignora o metodă non-virtuală.

Haideți să trecem la următoarele întrebări de interviu C # OOP

8. Cum să evitați NULL în C #?

Răspuns:
Null nu este un obiect. Putem avea o clasă, dar o variabilă cu o valoare NULL înseamnă că nu indică niciun obiect. S-ar putea să găsim o bucată de cod care conține multe declarații condiționale care ar verifica dacă valoarea unei variabile este NULL. Să verificăm o metodă statică:

public static string DisplayUpperString (șiruri) (

string upper = string.Empty;
If( s == null ) (
upper = null;
)
else (
upper = s.ToUpper();
)
return upper;
)

Acest cod este bine și transformați în majuscule un șir dat.
Dar, din perspectiva OO, luați în considerare construirea unui obiect care nu reprezintă nimic, decât să îl evaluați pentru NULL.

public static String DisplayUpperString (PosibleString s) (
string superior = s.ToPossibleUpper ();
revenire superioară;
)

Acum funcția este mai puțin aglomerată, mai lizibilă și nu mai folosește verificarea pentru o valoare NULL.

9. Care este metoda de extensie din C # și cum să le utilizați?

Răspuns:
Aceasta este cea mai frecventă întrebare de interviu C # OOP Întrebări adresate într-un interviu. O metodă de extensie este un fel special de metodă statică, dar sunt numite ca și cum ar fi metode de instanță pe tipul extins. Această metodă vă permite să adăugați metode la tipurile existente fără a crea un tip derivat nou, recompilare sau modificare altfel a tipului inițial. Metodele de extensie sunt numai de obiect atunci când importați explicit spațiul de nume în codul sursă cu o directivă de utilizare.

10. Poate fi folosit acest cuvânt cheie „acest” în cadrul unei metode statice?

Răspuns:
Întrucât cuvântul cheie „acest” returnează o referință la instanța curentă a unei clase, deci nu putem folosi acest lucru în cadrul unei metode statice. Și membrii statici există fără nicio instanță a clasei și apelează cu numele clasei, nu de exemplu. Deci, putem spune că „acest” cuvânt cheie este un tip special de variabilă de referință care este definit implicit în cadrul fiecărui constructor și metoda nestatică ca prim parametru al clasei de tip în care este definit.

Articol recomandat

Acesta a fost un ghid la Lista întrebărilor și răspunsurilor la interviu C # OOP, astfel încât candidatul să poată împărți cu ușurință aceste întrebări de interviu C # OOP. Aici, în acest post, am studiat despre întrebările de interviu C # OOP de top, care sunt adesea puse în interviuri. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -

  1. Întrebări de interviu pentru Hadoop Admin
  2. 12 întrebări de interviu uimitoare Spark
  3. 10 Întrebări importante pentru interviu Ab initio
  4. 25 Cele mai importante întrebări la interviu în informatică
  5. Care sunt avantajele C # și Js