Въведение Въпроси и отговори за интервю C # OOP
C # е обектно-ориентиран, функционален, общ и компонентно ориентиран език за програмиране. Използва се за изграждане на най-различни приложения, той е особено силен при изграждането на настолни приложения и игри на Windows. Уеб разработката също може да се извърши ефективно с C # и тя става все по-популярна за мобилните разработки. Така че това прави отличен избор за всеки програмист, който желае да се занимава с уеб и разработка на игри. Той е статично въведен език, така че написаният изходен код се проверява старателно, преди да се превърне в приложение. Това е сложен език за изучаването и овладяването му може да отнеме значително време. Налични са различни кросплатформени инструменти, които позволяват приложения, написани на C #, които могат да се използват през мобилни и десктоп.
Ако търсите работа, която е свързана с C # OOP, трябва да се подготвите за въпроси за интервю за C # OOP за 2019 г. Въпреки че всяко интервю е различно и обхватът на работата също е различен, ние можем да ви помогнем с топ C # OOP Интервюта с отговори, които ще ви помогнат да направите скока и да постигнете успех в интервюто.
По-долу е най-горният C 2019 за C # OOP Въпроси за интервю, които се задават често в интервю, тези топ въпроси са разделени на две части, както следва:
Част 1 - Въпроси за интервю на C # OOP (основни)
Тази първа част обхваща основни C # OOP въпроси за интервю и отговори
1. Каква е разликата между интерфейс и абстрактен клас?
Отговор:
Някои разлики са изброени по-долу:
- Абстрактният клас може да има нео-абстрактни методи (конкретни методи), докато в случай на интерфейс всички методи трябва да бъдат абстрактни.
- Абстрактен клас може да декларира или използва всякакви променливи, докато на интерфейса не му е позволено.
- В абстрактен клас всички данни или функции на данни по подразбиране са частни, докато в интерфейса всички са публични, не можем да ги променим ръчно.
- Абстрактен клас използва конструктор, докато в интерфейс нямаме никакъв тип конструктор.
- Класът може да реализира произволен брой интерфейси, но подклас може да използва най-много само един абстрактен клас.
2. Какво представляват делегатите и нейните употреби?
Отговор:
Обект на делегат е променлива от тип референтен, която се използва за задържане на препратката към метод. Референцията може да бъде променена по време на изпълнение, която се държи от обект на делегат. Обектът на делегат може да съдържа много функции, които също са известни като Invocation List, който препраща функциите в последователност FIFO, ние можем да изпълняваме нови функции в този списък по време на изпълнение от оператор + = и да премахнем от - = оператор.
Делегатите се използват специално за реализиране на събития и методи за обратно повикване. Всички делегати косвено са получени от Системата. Делегат клас.
Нека преминем към следващите C # OOP въпроси за интервю
3. Каква е разликата между късно свързване и ранно свързване?
Отговор:
Във времето за компилиране на полиморфизъм или ранно свързване ще използваме множество методи с едно и също име, но различен тип параметър или може би числото или параметър, поради това можем да изпълняваме различни задачи с едно и също име на метод в същия клас, който също е известен като Метод претоварване.
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);
)
)
Динамичният / време на изпълнение полиморфизъм е известен също като късно свързване. Тук името на метода и подпис на метода (брой параметри и тип параметър трябва да са еднакви и може да имат различна реализация). Преодоляването на метода е пример за динамичен полиморфизъм.
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. Какво би се случило в случай, че наследените интерфейси имат противоречиви имена на методи?
Отговор:
Това са често срещаните C # OOP въпроси за интервю, зададени в интервю. ако имаме противоречиви методи в един и същи клас, не можем да прилагаме тялото им независимо в същия клас поради същото име и същия подпис, така че трябва да използваме името на интерфейса преди името на метода, за да премахнем този метод объркване.
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. Какви са различните начини, по които даден метод може да бъде претоварен?
Отговор:
Методът претоварване е друго име за полиморфизъм във време на компилация, където можем да създадем метод със същото име, но с различен подпис. Прави се по време на компилиране и можем да го направим по няколко начина, но името на метода ще остане същото.
Редица параметри могат да бъдат различни.
Типът на параметъра може да бъде различен.
Редът на параметъра може да бъде различен.
Пример -
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 - Въпроси за интервю на C # OOP (Разширено)
Тази първа част обхваща разширени C # OOP въпроси за интервю и отговори
6. Какво е модификатор за достъпност и колко има в C #?
Отговор:
Модификаторите на достъп са ключови думи, използвани за уточняване на декларираната достъпност на член или тип. В C # има 5 няколко вида модификатори на достъп.
Публично - няма ограничения за достъп до обществени членове.
Частен - ограничен достъп в дефиниция на клас, ако не е посочен такъв, това е по подразбиране.
Защитени - достъпът е ограничен до определението за клас и до всеки клас, който наследява от класа.
Вътрешен - достъпът е ограничен изключително до класовете, определени от настоящия проект
Защитеният вътрешен член може да бъде достъпен навсякъде в една и съща група и също така достъпен чрез наследяване на този клас, той може да бъде достъпен извън монтажа само в производен клас.
7. Какво е виртуален метод в C #?
Отговор:
Виртуален метод е метод, който може да бъде предефиниран в производни класове. Виртуален метод има реализация в базов клас, както и извлечен от класа. Използва се, когато основната функционалност на метода е същата, но понякога е необходима повече функционалност в извлечения клас. В базовия клас се създава виртуален метод, който може да бъде отменен в производния клас. Ние създаваме виртуален метод в базовия клас с помощта на виртуалната ключова дума и този метод се отменя в извлечения клас с помощта на ключовата дума override.
Когато се извиква виртуален метод, типът на изпълнение на обекта се проверява за преобладаващ член. Повишаващият член в най-извлечения клас се извиква, който може да бъде оригиналният член, ако нито един производен клас не е отменил члена. По подразбиране методите са не-виртуални. Не можем да отменим не-виртуалния метод.
Нека преминем към следващите C # OOP въпроси за интервю
8. Как да избегнем NULL в C #?
Отговор:
Null не е обект. Можем да имаме клас, но променлива със стойност NULL означава, че не сочи към нито един обект. Може да се натъкнем на парче код, който съдържа много условни изрази, които биха проверили дали стойността на променлива е NULL. Нека проверим статичен метод:
публичен статичен низ DisplayUpperString (string s) (
string upper = string.Empty;
If( s == null ) (
upper = null;
)
else (
upper = s.ToUpper();
)
return upper;
)
Този код е добре и преобразувайте в горния регистър даден низ.
Но от гледна точка на OO, помислете за изграждането на обект, който не представлява нищо, вместо да го оценявате за NULL.
публичен статичен String DisplayUpperString (ВъзможниString s) (
низ горни = s.ToPossibleUpper ();
връщане горна;
)
Сега функцията е по-малко затрупана, по-четена и вече не използва проверката за NULL стойност.
9. Какъв е методът за разширение в C # и как да ги използвате?
Отговор:
Това са често задаваните въпроси за интервю на C # OOP, зададени в интервю. Методът за разширение е специален вид статичен метод, но те се наричат така, сякаш са методи за екземпляр на разширения тип. Този метод ви позволява да добавяте методи към съществуващи типове без да създавате нов производен тип, да прекомпилирате или по друг начин да променяте оригиналния тип. Методите за разширение са в обхвата само когато изрично импортирате пространството на имена във вашия изходен код с помощта на директива.
10. Може ли тази дума да се използва в статичен метод?
Отговор:
Тъй като ключовата дума „this“ връща препратка към текущия екземпляр от клас, така че не можем да използваме това в статичен метод. А статичните членове съществуват без каквато и да е инстанция на класа и се обаждат с името на класа, а не по инстанция. Така че, можем да кажем, че „тази“ ключова дума е специален тип референтна променлива, която се дефинира неявно във всеки конструктор и нестатичен метод като първи параметър от типа тип, в който е дефинирана.
Препоръчителен член
Това е ръководство за списъка с въпроси за отговори на интервю на C # OOP, така че кандидатът да може лесно да провали тези въпроси за интервю на C # OOP. Тук в тази публикация сме проучили най-добрите C # OOP въпроси за интервю, които често се задават в интервюта. Можете също да разгледате следните статии, за да научите повече -
- Въпроси за интервю с Hadoop
- 12 невероятни въпроси за интервю за искри
- 10 важни въпроси за интервю от Ab initio
- 25 най-важни въпроса за интервю за компютърни науки
- Какви са предимствата на C # и Js