10 parasta C # OOP -haastattelua koskevaa kysymystä ja vastausta (Päivitetty 2019)

Sisällysluettelo:

Anonim

Johdanto C # OOP -haastattelun kysymykset ja vastaukset

C # on oliokeskeinen, toiminnallinen, yleinen ja komponenttisuuntautunut ohjelmointikieli. Sitä käytetään rakentamaan erilaisia ​​sovelluksia, ja se on erityisen vahva rakentamaan Windows-työpöytäsovelluksia ja pelejä. Web-kehitys voidaan tehdä tehokkaasti myös C #: n avulla, ja siitä on tullut yhä suositumpaa mobiilikehityksessä. Joten se tekee erinomaisen valinnan jokaiselle ohjelmoijalle, joka haluaa kehittää verkkoa ja peliä. Se on staattisen tyyppinen kieli, joten kirjoitettu lähdekoodi tarkistetaan perusteellisesti ennen kuin siitä tulee sovellus. Kielen opiskelu on monimutkaista, ja sen hallitseminen voi viedä huomattavasti aikaa. Saatavilla on useita eri alustojen välisiä työkaluja, jotka sallivat C # -sovelluksella kirjoitettujen sovellusten käyttämisen mobiili- ja työpöydällä.

Jos etsit työtä, joka liittyy C # OOP -palveluun, sinun on varauduttava 2019 C # OOP -haastattelukysymyksiin. Vaikka jokainen haastattelu on erilainen ja työn laajuus on myös erilainen, voimme auttaa sinua parhaimmissa C # OOP -haastattelukysymyksissä vastauksilla, jotka auttavat sinua tekemään harppauksen ja saavuttamaan menestyksen haastattelussa.

Alla on suosituimmat 2019 C # OOP -haastattelukysymykset, joita kysytään usein haastattelussa. Nämä tärkeimmät kysymykset jakautuvat kahteen osaan seuraavasti:

Osa 1 - C # OOP -haastattelukysymykset (perus)

Tämä ensimmäinen osa kattaa C # OOP -haastattelun peruskysymykset ja vastaukset

1. Mitä eroa on käyttöliittymän ja tiivistelmäluokan välillä?

Vastaus:
Jotkut erot on lueteltu alla:

  • Abstraktissa luokassa voi olla ei-abstrakteja menetelmiä (konkreettisia menetelmiä), kun taas rajapinnan tapauksessa kaikkien menetelmien on oltava abstrakteja.
  • Abstrakti luokka voi ilmoittaa tai käyttää mitä tahansa muuttujia, kun rajapinta ei ole sallittua tehdä niin.
  • Abstraktissa luokassa kaikki datajäsenet tai toiminnot ovat oletuksena yksityisiä, kun taas käyttöliittymässä kaikki ovat julkisia, emme voi muuttaa niitä manuaalisesti.
  • Abstrakti luokkakäyttäjä, vaikka käyttöliittymässä meillä ei ole minkäänlaista rakentajaa.
  • Luokka voi toteuttaa minkä tahansa määrän rajapintoja, mutta alaluokka voi käyttää korkeintaan vain yhtä abstraktia luokkaa.

2. Mitä edustajat ja sen käyttötavat ovat?

Vastaus:
Delegoitu objekti on viitetyyppimuuttuja, jota käytetään pitämään viittaus menetelmään. Viite voidaan muuttaa ajon aikana, jota edustajan esine pitää hallussaan. Valtuutettu kohde voi sisältää monia funktioviitteitä, joita kutsutaan myös kutsutusluetteloksi ja joka viittaa funktioihin FIFO-sekvenssissä, voimme + = operaattori ref-listalle suorittaa tämän luettelon ajon aikana ja poistaa - = operaattori.
Delegaatteja käytetään erityisesti tapahtumien ja takaisinsoittomenetelmien toteuttamiseen. Kaikki edustajat ovat implisiittisesti johdettu järjestelmästä. Valtuutettu luokka.

Siirrytään seuraavaan C # OOP -haastattelukysymykseen

3. Mikä on ero myöhään sitoutumisen ja varhaisen sitoutumisen välillä?

Vastaus:
Käännä aikapolymorfismia tai varhaista sidontaa, käytämme useita menetelmiä samalla nimellä, mutta eri tyyppisellä parametrilla tai ehkä numerolla tai parametrilla, minkä vuoksi voimme suorittaa erilaisia-erilaisia ​​tehtäviä samalla menetelmän nimellä samassa luokassa, joka on myös tunnetaan menetelmän ylikuormituksena.

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

Dynaaminen / ajonaikainen polymorfismi tunnetaan myös myöhäisenä sitoutumisena. Tässä menetelmän nimi ja menetelmän allekirjoitus (parametrien lukumäärän ja parametrityypin on oltava samat ja niiden toteutuksen voi olla erilainen). Menetelmän ohittaminen on esimerkki dynaamisesta polymorfismista.

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. Mitä tapahtuisi, jos perinnöllisissä rajapinnoissa olisi ristiriitaisia ​​menetelmänimiä?

Vastaus:
Tämä on yleinen haastattelussa kysytyt C # OOP -haastattelukysymykset. Jos meillä on ristiriitaisia ​​menetelmiä samassa luokassa, emme voi toteuttaa heidän vartaloaan itsenäisesti samassa luokassa saman nimen ja saman allekirjoituksen vuoksi, joten meidän on käytettävä käyttöliittymän nimeä ennen menetelmän nimeä tämän menetelmän sekaannuksen poistamiseksi.

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. Millä tavoin menetelmä voidaan ylikuormittaa?

Vastaus:
Menetelmän ylikuormitus on toinen nimi käännösajan polymorfismille, jossa voimme luoda menetelmän samalla nimellä, mutta toisella allekirjoituksella. Se tehdään käännöshetkellä ja voimme tehdä sen monin tavoin, mutta menetelmän nimi pysyy samana.

Useat parametrit voivat olla erilaisia.
Parametrityyppi voi olla erilainen.
Parametrijärjestys voi olla erilainen.

Esimerkki -

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

Osa 2 - C # OOP -haastattelut (Advanced)

Tämä ensimmäinen osa kattaa edistyneet C # OOP -haastattelukysymykset ja -vastaukset

6. Mikä on esteettömyyden muokkain ja kuinka monta C #: ssä on?

Vastaus:
Käyttöoikeuksien muokkaimet ovat avainsanoja, joita käytetään määrittämään jäsenen tai tyypin ilmoitettu saavutettavuus. C #: ssä on 5 erityyppistä käyttömuunninta.

Julkinen - Ei rajoituksia pääsylle yleisön jäsenille.
Yksityinen - rajoitettu pääsy luokan määritelmään, jos mitään ei ole määritetty, tämä on oletus.
Suojattu - pääsy on rajoitettu luokan määritelmään ja mihin tahansa luokkaan perittävään luokkaan.
Sisäinen pääsy on rajoitettu yksinomaan nykyisen projektin määrittelemiin luokkiin
Suojattuun sisäosaan voidaan päästä missä tahansa samassa kokoonpanossa ja päästä myös perimällä luokka, siihen voi päästä vain kokoonpanon ulkopuolella johdetussa luokassa.

7. Mikä on virtuaalinen menetelmä C #: ssä?

Vastaus:
Virtuaali menetelmä on menetelmä, joka voidaan määritellä uudelleen johdettuina luokina. Virtuaalisella menetelmällä on toteutus perusluokassa sekä johdettu luokasta. Sitä käytetään, kun menetelmän perustoiminnot ovat samat, mutta joskus tarvitaan johdetussa luokassa enemmän toimintoja. Perusluokkaan luodaan virtuaalinen menetelmä, joka voidaan ohittaa johdetussa luokassa. Luomme virtuaalisen menetelmän perusluokassa käyttämällä virtuaalista avainsanaa, ja tämä menetelmä korvataan johdetussa luokassa käyttämällä ohitusavainta.
Kun kutsutaan virtuaalista menetelmää, objektin ajonaikaistyyppi tarkistetaan ohittavan jäsenen suhteen. Kaikkein johdetun luokan pääosaa kutsutaan, mikä saattaa olla alkuperäinen jäsen, jos yksikään johdettu luokka ei ole ohittanut jäsentä. Oletuksena menetelmät eivät ole virtuaalisia. Emme voi ohittaa ei-virtuaalista menetelmää.

Siirrytään seuraavaan C # OOP -haastattelukysymykseen

8. Kuinka välttää NULL C #: ssä?

Vastaus:
Null ei ole esine. Meillä voi olla luokka, mutta muuttuja, jolla on NULL-arvo, tarkoittaa, että se ei osoita mitään objektia. Saatamme kohdata koodin, joka sisältää monia ehdollisia lauseita, jotka tarkistavat, onko muuttujan arvo NULL. Tarkistetaan staattinen menetelmä:

julkinen staattinen merkkijono DisplayUpperString (merkkijono) (

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

Tämä koodi on hieno, ja muunna annettu merkkijono isoiksi kirjaimiksi.
Mutta OO-näkökulmasta, harkitse sellaisen objektin rakentamista, joka ei edusta mitään, sen sijaan, että arvioisit sen NULL: n suhteen.

julkinen staattinen merkkijono DisplayUpperString (PossibleString s) (
merkkijono ylä = s.ToPossibleUpper ();
paluu yläosa;
)

Nyt-toiminto on vähemmän sotkuinen, luettavissa eikä enää käytä NULL-arvon tarkistusta.

9. Mikä on C # -laajennusmenetelmä ja kuinka niitä käytetään?

Vastaus:
Tämä on haastattelussa usein kysyttyjä C # OOP -haastattelukysymyksiä. Laajennusmenetelmä on erityinen staattinen menetelmä, mutta niitä kutsutaan ikään kuin ne olisivat esiintymismenetelmiä laajennetussa tyypissä. Tämän menetelmän avulla voit lisätä menetelmiä olemassa oleviin tyyppeihin luomatta uutta johdettua tyyppiä, kääntämättä uudelleen tai muutoin muuttamatta alkuperäistä tyyppiä. Laajennusmenetelmät ovat laajuudessaan vain, kun tuodaan nimitila nimenomaisesti lähdekoodiin käyttävällä direktiivillä.

10. Voidaanko tätä avainsanaa käyttää staattisessa menetelmässä?

Vastaus:
Koska "tämä" avainsana palauttaa viittauksen luokan nykyiseen esiintymään, emme voi käyttää tätä staattisen menetelmän sisällä. Ja staattiset jäsenet ovat olemassa ilman luokan yhtäkään esiintymää, ja he soittavat luokan nimellä, eivät tapauskohtaisesti. Joten voimme sanoa, että “tämä” avainsana on erityinen vertailumuuttuja, joka on implisiittisesti määritelty kussakin rakentajassa ja epästaattisessa menetelmässä sen tyyppiluokan ensimmäisenä parametrina, johon se on määritelty.

Suositeltava artikkeli

Tämä on opas luetteloon C # OOP -haastattelua koskevista kysymyksistä ja vastauksista, jotta ehdokas voi helposti hajottaa nämä C # OOP -haastattelukysymykset. Täällä tässä viestissä olemme tutkineet suosituimpia C # OOP -haastattelukysymyksiä, joita usein haastatteluissa kysytään. Voit myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -

  1. Hadoop-järjestelmänvalvojan haastattelukysymykset
  2. 12 hämmästyttävää kipinähaastattelua koskevaa kysymystä
  3. 10 tärkeätä Ab initio -haastattelukysymystä
  4. 25 tärkeintä tietotekniikan haastattelua koskevaa kysymystä
  5. Mitkä ovat C #: n ja J: n edut?