Kümme parimat C # OOP-ga seotud intervjuu küsimust ja vastust (värskendatud 2019 jaoks)

Lang L: none (table-of-contents):

Anonim

Sissejuhatus C # OOP intervjuu küsimused ja vastused

C # on objektorienteeritud, funktsionaalne, üldine ja komponendile orienteeritud programmeerimiskeel. Seda kasutatakse mitmesuguste rakenduste ehitamiseks, see on eriti tugev Windowsi töölauarakenduste ja mängude ehitamisel. Veebiarendust saab tõhusalt teha ka C # abil ja see on muutunud üha populaarsemaks mobiilsete arenduste jaoks. Seega on see suurepärane valik igale programmeerijale, kes soovib veebi- ja mänguarendust teha. See on staatiliselt kirjutatud keel, nii et enne selle rakenduseks muutmist kontrollitakse põhjalikult lähtekoodi. Keele õppimine on keeruline ja selle valdamine võib võtta palju aega. Saadaval on erinevad platvormidevahelised tööriistad, mis võimaldavad C # -ga kirjutatud rakendusi, mida saab kasutada nii mobiilis kui ka lauaarvutis.

Kui otsite tööd, mis oleks seotud C # OOP-ga, peate valmistuma 2019. aasta C # OOP-i intervjuuküsimusteks. Ehkki iga intervjuu on erinev ja ka töö maht on erinev, saame teid aidata vastuste hulgas olevate parimate C # OOP-intervjuu küsimustega, mis aitavad teil hüppe teha ja teie intervjuus edu saavutada.

Allpool on toodud 2019. aasta populaarseimad C # OOP-intervjuu küsimused, mida küsitakse sageli intervjuul. Need top küsimused jagunevad kaheks osaks:

1. osa - C # OOP-intervjuu küsimused (põhilised)

See esimene osa hõlmab põhilisi C # OOP intervjuu küsimusi ja vastuseid

1. Mis vahe on liidese ja abstraktse klassi vahel?

Vastus:
Allpool on loetletud mõned erinevused:

  • Abstraktsel klassil võivad olla mitteabstraktsed meetodid (konkreetsed meetodid), samas kui liidese korral peavad kõik meetodid olema abstraktsed.
  • Abstraktne klass võib deklareerida või kasutada kõiki muutujaid, samal ajal kui liides seda ei luba.
  • Abstraktses klassis on kõik andmeliikmed või funktsioonid vaikimisi privaatsed, samas kui liideses on kõik avalikud, me ei saa neid käsitsi muuta.
  • Abstraktne klass kasutab konstruktorit, samas kui liideses pole meil ühtegi konstruktoritüüpi.
  • Klass saab rakendada suvalist arvu liideseid, kuid alaklass võib kasutada ainult ühte abstraktset klassi.

2. Mis on delegaadid ja selle kasutusvõimalused?

Vastus:
Delegeeritud objekt on viitetüüpi muutuja, mida kasutatakse meetodi viite hoidmiseks. Viidet saab muuta käitustöö ajal, mida hoiab delegaadi objekt. Delegeeritud objektil võib olla palju funktsioonide viiteid, mida nimetatakse ka kutsumiste loendiks ja mis viitavad funktsioonidele FIFO-järjestuses. Me võime uusi funktsioone selles loendis käitamisperioodil refineerida + = operaator ja eemaldada - = operaator.
Delegaate kasutatakse eriti sündmuste ja tagasihelistamise meetodite rakendamiseks. Kõik delegaadid on kaudselt süsteemist tuletatud. Delegaadi klass.

Liigume edasi järgmiste C # OOP intervjuu küsimuste juurde

3. Mis vahe on hilise ja varase sidumise vahel?

Vastus:
Ajakompolimorfismi või varase sidumise korral kasutame mitut meetodit sama nimega, kuid erinevat tüüpi parameetriga või võib-olla arvu või parameetriga, seetõttu võime samas klassis täita sama meetodi nimega erinevaid ülesandeid, mis on ka tuntud kui meetodi ülekoormamine.

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

Dünaamilist / käitusaja polümorfismi nimetatakse ka hiliseks sidumiseks. Siin on meetodi nimi ja meetodi allkiri (parameetrite arv ja parameetri tüüp peavad olema samad ja neil võib olla erinev teostus). Meetodi alistamine on näide dünaamilisest polümorfismist.

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. Mis juhtuks, kui päritud liidestel on vastuolulised meetodinimed?

Vastus:
See on tavaline intervjuus küsitav C # OOP-i küsimus. kui meil on samas klassis vastuolulised meetodid, ei saa me sama nime ja sama allkirja tõttu iseseisvalt samasse klassi rakendada, nii et selle meetodi segaduse eemaldamiseks peame enne meetodi nime kasutama liidese nime.

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. Millistel erinevatel viisidel saab meetodit üle koormata?

Vastus:
Meetodi ülekoormamine on kompileerimisaja polümorfismi teine ​​nimi, kus saame luua meetodi sama nimega, kuid erineva allkirjaga. Seda tehakse kompileerimise ajal ja me võime seda teha mitmel viisil, kuid meetodi nimi jääks samaks.

Parameetrite arv võib olla erinev.
Parameetri tüüp võib olla erinev.
Parameetri järjekord võib olla erinev.

Näide -

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

2. osa - C # OOP-intervjuu küsimused (täpsemad)

See esimene osa hõlmab täiustatud C # OOP-intervjuu küsimusi ja vastuseid

6. Mis on juurdepääsetavuse modifikaator ja kui palju on neid C # -s?

Vastus:
Juurdepääsu modifikaatorid on märksõnad, mida kasutatakse liikme või tüübi deklareeritud juurdepääsetavuse täpsustamiseks. C #-s on 5 mitut tüüpi pääsemuundurit.

Avalik - avalikele liikmetele juurdepääsupiirangud puuduvad.
Privaatne - piiratud juurdepääs klassi määratlusele, kui seda pole täpsustatud, on see vaikimisi.
Kaitstud - juurdepääs on piiratud klassi määratlusega ja klassiga, mis klassilt pärib.
Sisejuurdepääs on piiratud ainult praeguses projektis määratletud klassidega
Kaitstud sisemisele elemendile pääseb juurde kõikidest samast koosseisust ning sellele klassile ka pärimise teel pääseb juurde, ainult sellele tuletatud klassis.

7. Mis on C #-s virtuaalne meetod?

Vastus:
Virtuaalne meetod on meetod, mida saab tuletatud klassides uuesti määratleda. Virtuaalsel meetodil on teostus nii põhiklassis kui ka klassist tuletatud. Seda kasutatakse siis, kui meetodi põhifunktsioonid on samad, kuid mõnikord on tuletatud klassis vaja rohkem funktsioone. Põhiklassis luuakse virtuaalne meetod, millest tuletatud klassis saab mööda vaadata. Loome virtuaalmeetodi põhiklassis virtuaalse märksõna abil ja see meetod on tuletatud klassis üle kirjutatud märksõnaga alistatud.
Virtuaalse meetodi kasutamisel kontrollitakse, kas objekti käivitustüüp on ülimuslik. Kõige enam tuletatud klassi ülimuslikku liiget kutsutakse, mis võib olla algne liige, kui ükski tuletatud klass pole liiget ületanud. Vaikimisi pole meetodid virtuaalsed. Me ei saa alistada mitte-virtuaalset meetodit.

Liigume edasi järgmiste C # OOP intervjuu küsimuste juurde

8. Kuidas vältida NULL-i C # -s?

Vastus:
Null pole objekt. Meil võib klass olla, kuid NULL-i väärtusega muutuja tähendab, et see ei osuta ühelegi objektile. Võime kokku puutuda kooditükiga, mis sisaldab palju tingimuslikke avaldusi, mis kontrolliks, kas muutuja väärtus on NULL. Kontrollime staatilist meetodit:

avalik staatiline string DisplayUpperString (stringid) (

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

See kood sobib ja teisendage antud string suurtähtedeks.
Kuid OO vaatenurgast mõelge objekti konstrueerimisele, mis ei esinda midagi, selle asemel, et hinnata seda NULL-i jaoks.

avalik staatiline String DisplayUpperString (PossibleString s) (
string ülemine = s.ToPossibleUpper ();
tagasi ülemine;
)

Nüüd on funktsioon vähem segaduses, loetavam ega kasuta enam NULL-i väärtuse kontrollimist.

9. Milline on C # laiendusmeetod ja kuidas neid kasutada?

Vastus:
See on intervjuus sageli küsitav C # OOP-i küsimus. Laiendusmeetod on spetsiaalne staatiline meetod, kuid neid nimetatakse justkui laiendatud tüüpi eksemplari meetoditeks. See meetod võimaldab teil lisada meetodeid olemasolevatele tüüpidele, ilma et saaksite luua uut tuletatud tüüpi, uuesti kompileerida või muul viisil algset tüüpi muuta. Laiendusmeetodid on ulatusega ainult siis, kui impordite nimeruumi selgesõnaliselt lähtekoodisse kasutades selleks mõnda käskkirja.

10. Kas seda märksõna saab kasutada staatilises meetodis?

Vastus:
Kuna „see” märksõna tagastab viite klassi praegusele esinemisjuhule, ei saa me seda staatilises meetodis kasutada. Ja staatilised liikmed eksisteerivad ilma klassi ühegi eksemplarita ja helistavad klassi nimega, mitte astme kaupa. Niisiis, võime öelda, et see märksõna on spetsiaalne tüüpmuutuja, mis on kaudselt määratletud igas konstruktoris ja mittestaatilises meetodis selle tüübiklassi esimese parameetrina, milles see on määratletud.

Soovitatav artikkel

See on juhend C # OOP-küsimuste ja vastuste loendi loendisse, nii et kandidaat saaks hõlpsalt neid C # OOP-intervjuu küsimusi lahendada. Selles postituses oleme uurinud populaarsemaid C # OOP intervjuuküsimusi, mida küsitakse sageli intervjuudes. Lisateabe saamiseks võite vaadata ka järgmisi artikleid -

  1. Hadoopi administraatori intervjuu küsimused
  2. 12 hämmastavat Sparki intervjuu küsimust
  3. 10 olulist Ab initio intervjuu küsimust
  4. 25 kõige olulisemat infotehnoloogiaintervjuu küsimust
  5. Millised on C # ja J eelised?