Úvod C # OOP Rozhovor Otázky a odpovědi
C # je objektově orientovaný, funkční, obecný a komponentově orientovaný programovací jazyk. Používá se k vytváření různých aplikací, je zvláště silný při vytváření desktopových aplikací a her pro Windows. Vývoj webu lze také efektivně provádět pomocí C # a stále více se stává populárním pro mobilní vývoj. Je tedy vynikající volbou pro každého programátora, který si přeje dělat vývoj webu a her. Jedná se o staticky psaný jazyk, takže napsaný zdrojový kód je před změnou v aplikaci důkladně zkontrolován. Je to složitý jazyk, který se naučit a zvládnout jej může trvat značné množství času. K dispozici jsou různé nástroje napříč platformami, které umožňují aplikace psané v C #, které lze použít přes mobilní a stolní počítače.
Pokud hledáte práci, která souvisí s C # OOP, musíte se připravit na 2019 C # OOP rozhovory. Přestože je každý rozhovor jiný a rozsah práce je také jiný, můžeme vám pomoci s top C # OOP Interview Otázky s odpověďmi, které vám pomohou udělat skok a získat úspěch v rozhovoru.
Níže jsou uvedeny hlavní otázky týkající se rozhovoru 2019 C # OOP, které jsou často kladeny v rozhovoru. Tyto hlavní otázky jsou rozděleny do dvou částí:
Část 1 - Otázky k pohovoru C # OOP (základní)
Tato první část se týká základních otázek a odpovědí na rozhovor C # OOP
1. Jaký je rozdíl mezi rozhraním a abstraktní třídou?
Odpovědět:
Některé rozdíly jsou uvedeny níže:
- Abstraktní třída může mít neinstrahující metody (konkrétní metody), zatímco v případě rozhraní musí být všechny metody abstraktní.
- Abstraktní třída může deklarovat nebo použít libovolné proměnné, pokud to rozhraní nemůže udělat.
- V abstraktní třídě jsou všechny datové členy nebo funkce ve výchozím nastavení soukromé, zatímco v rozhraní jsou všechny veřejné, nemůžeme je změnit ručně.
- Abstraktní třída používá konstruktor, zatímco v rozhraní nemáme žádný typ konstruktoru.
- Třída může implementovat libovolný počet rozhraní, ale podtřída může maximálně použít pouze jednu abstraktní třídu.
2. Co jsou delegáti a jejich použití?
Odpovědět:
Delegovaný objekt je proměnná typu odkazu, která slouží k uchování odkazu na metodu. Odkaz lze změnit za běhu, který drží objekt delegáta. Delegovaný objekt může obsahovat mnoho referencí funkcí, které jsou známé také jako Seznamy vyvolání, které odkazují na funkce v sekvenci FIFO, můžeme nové funkce v tomto seznamu za běhu zpracovat operátorem + = a odstranit - = operátorem.
Delegáti se používají zejména k provádění akcí a metod zpětného volání. Všichni delegáti jsou implicitně odvozeni ze systému. Delegujte třídu.
Přejdeme k dalším otázkám C # OOP Interview
3. Jaký je rozdíl mezi pozdní a včasnou vazbou?
Odpovědět:
V polymorfismu kompilace času nebo časné vazby použijeme několik metod se stejným názvem, ale s odlišným typem parametru nebo možná s číslem nebo parametrem, z tohoto důvodu můžeme provádět různé úkoly se stejným názvem metody ve stejné třídě, což je také známý jako metoda přetížení.
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);
)
)
Dynamický / runtime polymorfismus je také známý jako pozdní vazba. Zde musí být název metody a podpis metody (počet parametrů a typ parametrů musí být stejný a může mít jinou implementaci). Přepisování metody je příkladem dynamického polymorfismu.
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. Co by se stalo, kdyby zděděná rozhraní obsahovala konfliktní názvy metod?
Odpovědět:
Toto jsou běžné otázky C # OOP Interview položené v rozhovoru. Pokud máme konfliktní metody ve stejné třídě, nemůžeme implementovat jejich tělo nezávisle do stejné třídy kvůli stejnému jménu a stejnému podpisu, takže k odstranění této záměny metody musíme použít název rozhraní před názvem metody.
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. Jaké jsou různé způsoby přetížení metody?
Odpovědět:
Přetížení metody je jiné jméno pro kompilační polymorfismus, kde můžeme vytvořit metodu se stejným názvem, ale s odlišným podpisem. Děje se to při kompilaci a můžeme to udělat několika způsoby, ale název metody by zůstal stejný.
Řada parametrů se může lišit.
Typ parametru se může lišit.
Pořadí parametru se může lišit.
Příklad -
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;
)
Část 2 - Otázky k rozhovoru C # OOP (pokročilé)
Tato první část se týká pokročilých otázek a odpovědí na rozhovor C # OOP
6. Co je modifikátor přístupnosti a kolik jich je v C #?
Odpovědět:
Modifikátory přístupu jsou klíčová slova používaná k určení deklarované přístupnosti člena nebo typu. V C # je 5 několika typů modifikátorů přístupu.
Veřejné - Bez omezení přístupu k veřejným členům.
Soukromý - omezený přístup v rámci definice třídy, pokud není zadán žádný, pak je to výchozí.
Chráněný - přístup je omezen na definici třídy a jakoukoli třídu, která dědí po třídě.
Interní - přístup je omezen výhradně na třídy definované aktuálním projektem
Chráněný interní člen je přístupný kdekoli ve stejné sestavě a také přístupný zděděním této třídy, může být přístupný mimo sestavu pouze v odvozené třídě.
7. Co je virtuální metoda v C #?
Odpovědět:
Virtuální metoda je metoda, kterou lze znovu definovat v odvozených třídách. Virtuální metoda má implementaci v základní třídě a je odvozena od třídy. Používá se, když je základní funkčnost metody stejná, ale někdy je v odvozené třídě potřeba více funkcí. Virtuální metoda je vytvořena v základní třídě, kterou lze v odvozené třídě přepsat. Virtuální metodu vytváříme v základní třídě pomocí virtuálního klíčového slova a tato metoda je v odvozené třídě přepsána pomocí klíčového slova override.
Je-li vyvolána virtuální metoda, je zkontrolován typ run-time objektu, který má přednost. Vyvolá se převažující člen v nejvíce odvozené třídě, což by mohl být původní člen, pokud žádná odvozená třída nenahradila člena. Ve výchozím nastavení nejsou metody virtuální. Nemůžeme přepsat nevirtuální metodu.
Přejdeme k dalším otázkám C # OOP Interview
8. Jak se vyhnout NULL v C #?
Odpovědět:
Null není objekt. Můžeme mít třídu, ale proměnná s hodnotou NULL znamená, že neukazuje na žádný objekt. Mohli bychom narazit na kus kódu, který obsahuje mnoho podmíněných příkazů, které by zkontrolovaly, zda je hodnota proměnné NULL. Podívejme se na statickou metodu:
veřejný statický řetězec DisplayUpperString (řetězce) (
string upper = string.Empty;
If( s == null ) (
upper = null;
)
else (
upper = s.ToUpper();
)
return upper;
)
Tento kód je v pořádku a daný řetězec převede na velká písmena.
Z pohledu OO však zvažte konstrukci objektu, který nic nepředstavuje, spíše než jeho vyhodnocení na NULL.
public static String DisplayUpperString (PossibleString s) (
string upper = s.ToPossibleUpper ();
návrat horní;
)
Nyní je funkce méně nepřehledná, čitelnější a již nepoužívá kontrolu na hodnotu NULL.
9. Jaká je metoda rozšíření v C # a jak je používat?
Odpovědět:
Toto jsou nejčastěji kladené otázky C # OOP Interview. Metoda rozšíření je zvláštní druh statické metody, ale jsou volány, jako by to byly metody instance na rozšířeném typu. Tato metoda umožňuje přidávat metody k existujícím typům bez vytváření nového odvozeného typu, překompilování nebo jiné úpravy původního typu. Metody rozšíření jsou v rozsahu, pokud explicitně importujete obor názvů do svého zdrojového kódu pomocí direktivy použití.
10. Lze „toto“ klíčové slovo použít v rámci statické metody?
Odpovědět:
Protože klíčové slovo „this“ vrací odkaz na aktuální instanci třídy, nemůžeme to použít uvnitř statické metody. A statické členy existují bez jakékoli instance třídy a volají s názvem třídy, nikoli podle instance. Můžeme tedy říci, že „toto“ klíčové slovo je speciální typ referenční proměnné, která je implicitně definována v každém konstruktoru a nestatickou metodou jako první parametr třídy typu, ve které je definována.
Doporučený článek
Toto byl průvodce seznamem otázek a odpovědí na rozhovor C # OOP, aby uchazeč mohl snadno zrušit tyto dotazy na pohovor C # OOP. Zde v tomto příspěvku jsme se zabývali top otázkami rozhovoru C # OOP, které jsou často kladeny v rozhovorech. Další informace naleznete také v následujících článcích -
- Hadoop Admin Interview Otázky
- 12 úžasných otázek ohledně rozhovoru se Spark
- 10 důležitých otázek rozhovoru Ab initio
- 25 nejdůležitějších otázek z oblasti informatiky
- Jaké jsou výhody C # a Js