Топ-10 запитань та відповідей щодо інтерв'ю C # OOP (Оновлено на 2019 рік)

Зміст:

Anonim

Вступ Питання та відповіді щодо інтерв'ю C # OOP

C # - об'єктно-орієнтована, функціональна, загальна та компонентна мова програмування. Він використовується для створення різних програм, він особливо сильний у створенні настільних додатків та ігор Windows. Розробка веб-сайтів також може бути ефективно виконана за допомогою C #, і вона стає все більш популярною для мобільних розробок. Таким чином, це прекрасний вибір для будь-якого програміста, який бажає зайнятися розробкою веб та ігор. Це статично набрана мова, тому письмовий вихідний код ретельно перевіряється, перш ніж він перетвориться на додаток. Ця мова є складною для вивчення, а оволодіння нею може зайняти значну кількість часу. Доступні різні кросплатформові інструменти, які дозволяють застосувати програми, написані на C #, які можна використовувати на мобільних та на робочих столах.

Якщо ви шукаєте роботу, пов’язану з C # OOP, вам потрібно підготуватися до питань співбесіди C # OOP 2019 року. Незважаючи на те, що кожне інтерв'ю відрізняється, а сфера роботи також різна, ми можемо допомогти вам у вирішенні C # OOP-питань щодо інтерв'ю з відповідями, які допоможуть вам скочити та досягти успіху в інтерв'ю.

Нижче наведено верхню сторінку C # OOP для інтерв'ю 2019 року, яку часто задають в інтерв'ю, ці основні питання поділяються на дві частини:

Частина 1 - Питання щодо інтерв'ю C # OOP (основні)

Ця перша частина охоплює основні запитання та відповіді щодо інтерв'ю C # OOP

1. Чим відрізняється інтерфейс від абстрактного класу?

Відповідь:
Деяка різниця перерахована нижче:

  • Абстрактний клас може мати неабразивні методи (конкретні методи), тоді як у випадку інтерфейсу всі методи повинні бути абстрактними.
  • Абстрактний клас може оголошувати або використовувати будь-які змінні, поки інтерфейс не дозволяє це робити.
  • У абстрактному класі всі учасники даних або функції за замовчуванням приватні, а в інтерфейсі всі є загальнодоступними, ми не можемо їх змінити вручну.
  • Конструктор використання абстрактного класу, хоча в інтерфейсі у нас немає жодного типу конструктора.
  • Клас може реалізувати будь-яку кількість інтерфейсів, але підклас може використовувати максимум один абстрактний клас.

2. Що таке делегати та їх використання?

Відповідь:
Об'єкт делегата - це змінна тип посилання, яка використовується для утримання посилання на метод. Посилання може бути змінено під час виконання, яке зберігається об'єктом делегата. Об'єкт-делегат може містити багато посилань функцій, який також відомий як Список викликів, який посилається на функції в послідовності 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. Давайте перевіримо статичний метод:

загальнодоступна статична рядок DisplayUpperString (рядок s) (

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

Цей код добре, і перетворити у верхній регістр заданий рядок.
Але з точки зору ОО, розгляньте, як побудувати об'єкт, який нічого не представляє, а не оцінювати його за NULL.

загальнодоступний статичний рядок DisplayUpperString (можливіString s) (
рядок верхній = s.ToPossibleUpper ();
повернути верхній;
)

Тепер функція менш захаращена, більш читабельна, і більше не використовує перевірку на значення NULL.

9. Що таке метод розширення в C # і як їх використовувати?

Відповідь:
Це найчастіші запитання щодо інтерв'ю C # OOP, задані в інтерв'ю. Метод розширення - це особливий вид статичного методу, але вони називаються так, ніби вони були методами екземпляра розширеного типу. Цей метод дозволяє додавати методи до існуючих типів без створення нового похідного типу, перекомпіляції чи іншої модифікації вихідного типу. Методи розширення доступні лише тоді, коли ви явно імпортуєте простір імен у свій вихідний код із використанням директиви.

10. Чи можна використовувати це ключове слово в статичному методі?

Відповідь:
Оскільки ключове слово "це" повертає посилання на поточний екземпляр класу, тому ми не можемо використовувати це всередині статичного методу. А статичні члени існують без жодного примірника класу і дзвонять з іменем класу, а не за інстанцією. Отже, можна сказати, що "це" ключове слово є особливим типом опорної змінної, яка неявно визначається у кожному конструкторі та нестатичним методом як перший параметр класу типу, у якому він визначений.

Рекомендована стаття

Це посібник для переліку запитань та відповідей щодо інтерв'ю C # OOP, щоб кандидат міг легко розправити ці запитання щодо інтерв'ю C # OOP. Тут, у цій публікації, ми вивчали основні запитання щодо інтерв'ю C # OOP, які часто задаються в інтерв'ю. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Питання для інтерв'ю Hadoop Admin
  2. 12 дивовижних запитань щодо інтерв'ю
  3. 10 важливих питань інтерв'ю Ab initio
  4. 25 найважливіших питань інтерв'ю з інформатики
  5. Які переваги C # та Js