Топ-50 запитань і відповідей на співбесіді з C# (2025)

Питання та відповіді на співбесіді з C# для новачків і 2/3/5/10 років досвіду

Ось питання та відповіді на співбесіді на C# для нових, а також для кандидатів із 5 або 10-річним досвідом роботи, щоб отримати роботу своєї мрії.

1) Що таке C#?

C# — це об’єктно-орієнтована, безпечна для типів і керована мова, скомпільована фреймворком .Net для створення Microsoft Проміжна мова.

👉 Безкоштовне завантаження у форматі PDF: C# Interview Interview Questions & Answers


2) Поясніть види коментарів в C# з прикладами

Одна лінія

приклад:

//This is a single line comment

ii. Кілька рядків (/* */)

приклад:

/*This is a multiple line comment
We are in line 2
Last line of comment*/

iii. Коментарі XML (///).

приклад:

/// summary;
/// Set error message for multilingual language.
/// summary

3) Чи можна виконати декілька блоків catch?

Ні, декілька блоків catch подібного типу не можуть бути виконані. Після виконання належного коду catch керування передається до блоку finally, а потім виконується код, який слідує за блоком finally.


4) Яка різниця між public, static і void?

Загальнодоступні оголошені змінні або методи доступні будь-де в програмі. Статичні оголошені змінні або методи доступні глобально без створення екземпляра класу. Статичні члени за замовчуванням недоступні глобально, це залежить від типу модифікованого доступу, який використовується. Компілятор зберігає адресу методу як точку входу та використовує цю інформацію для початку виконання до створення будь-яких об’єктів. А Void — це модифікатор типу, який вказує, що метод або змінна не повертає жодного значення.

Об'єкт у C#

Питання для співбесіди C#


5) Що таке об’єкт?

Об’єкт — це екземпляр класу, через який ми отримуємо доступ до методів цього класу. Ключове слово «New» використовується для створення об’єкта. Клас, який створює об’єкт у пам’яті, міститиме інформацію про методи, змінні та поведінку цього класу.


6) Визначення конструкторів

Конструктор — це функція-член у класі, яка має те саме ім’я, що й його клас. Конструктор автоматично викликається щоразу, коли створюється клас об’єкта. Він створює значення членів даних під час ініціалізації класу.


7) Що таке Jagged Arrays?

Масив, який містить елементи типу array, називається зубчастим масивом. Елементи можуть бути різних габаритів і розмірів. Ми також можемо назвати зубчастий масив як масив масивів.


8) Яка різниця між параметрами ref і out?

Аргумент, переданий як посилання, повинен бути ініціалізований перед передачею в метод, тоді як параметр out не потрібно ініціалізувати перед передачею в метод.


9) Яке використання оператора 'using' у C#?

Блок «використання» використовується для отримання ресурсу та його обробки, а потім автоматичного видалення після завершення виконання блоку.


10) Що таке серіалізація?

Коли ми хочемо передати об’єкт через мережу, ми повинні перетворити об’єкт у потік байтів. Процес перетворення об'єкта в потік байтів називається серіалізацією. Щоб об’єкт міг бути серіалізованим, він має реалізувати інтерфейс ISerialize. Десеріалізація - це зворотний процес створення об'єкта з потоку байтів.


11) Чи можемо ми використовувати команду «this» у статичному методі?

Ми не можемо використовувати «This» у статичному методі, тому що ми можемо використовувати лише статичні змінні/методи в статичному методі.


12) Яка різниця між константами та доступними лише для читання?

Константні змінні оголошуються та ініціалізуються під час компіляції. Згодом значення не можна змінити. Лише читання використовується лише тоді, коли ми хочемо призначити значення під час виконання.


13) Що таке клас інтерфейсу? Наведіть один приклад цього

Інтерфейс — це абстрактний клас, який має лише публічні абстрактні методи, а методи мають лише оголошення, а не визначення. Ці абстрактні методи повинні бути реалізовані в успадкованих класах.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 interface Guru99Interface
 {
  void SetTutorial(int pID, string pName);
  String GetTutorial();
 }

 class Guru99Tutorial : Guru99Interface
 {
  protected int TutorialID;
  protected string TutorialName;

  public void SetTutorial(int pID, string pName)
  {
   TutorialID = pID;
   TutorialName = pName;
  }

  public String GetTutorial()
  {
   return TutorialName;
  }

  static void Main(string[] args)
  {
   Guru99Tutorial pTutor = new Guru99Tutorial();

   pTutor.SetTutorial(1,".Net by Guru99");

   Console.WriteLine(pTutor.GetTutorial());

   Console.ReadKey();
  }
 }
}

14) Що таке типи значень і типи посилань?

Тип значення містить значення даних у власному просторі пам’яті. приклад

int a = 30;

Тип посилання зберігає адресу об’єкта, де зберігається значення. Це вказівник на іншу область пам'яті.

string b = "Hello Guru99!!";

15) Що таке користувацький контроль і контроль користувача?

Спеціальні елементи керування — це елементи керування, згенеровані як скомпільований код (DLL), ними простіше користуватися та їх можна додати до панелі інструментів. Розробники можуть перетягувати елементи керування у свої веб-форми. Атрибути можуть під час розробки. Ми можемо легко додати власні елементи керування до кількох програм (якщо спільні DLL). Отже, якщо вони є приватними, тоді ми можемо скопіювати dll у каталог bin веб-програми, а потім додати посилання та використовувати їх.

Елементи керування користувача дуже схожі на файли включення ASP, і їх легко створити. Елементи керування користувача не можна розмістити на панелі інструментів і перетягнути звідти. Вони мають свій дизайн і код. Розширення файлу для елементів керування користувача - ascx.


16) Що таке запечатані класи в C#?

Ми створюємо запечатані класи, коли хочемо обмежити успадкування класу. Запечатаний модифікатор, який використовується для запобігання похідним від класу. Якщо ми примусово вкажемо запечатаний клас як базовий, то під час компіляції виникає помилка.


17) Що таке перевантаження методу?

Перевантаження методів — це створення кількох методів з однаковою назвою з унікальними підписами в одному класі. Коли ми компілюємо, компілятор використовує дозвіл перевантаження, щоб визначити конкретний метод, який потрібно викликати.


18) Яка різниця між Array і Arraylist?

У масиві ми можемо мати елементи лише одного типу. При порівнянні розмір масиву фіксований. Список масивів схожий на масив, але не має фіксованого розміру.


19) Чи можна перевизначити приватний віртуальний метод?

Ні, тому що вони недоступні поза класом.


20) Опишіть модифікатор доступності «захищений внутрішній».

Захищені внутрішні змінні/методи доступні в межах однієї збірки, а також із класів, які походять від цього батьківського класу.


21) Які відмінності між класами System.String і System.Text.StringBuilder?

System.String є незмінним. Коли ми змінюємо значення рядкової змінної, для нового значення виділяється нова пам’ять, а попередній розподіл пам’яті звільняється. System.StringBuilder був розроблений, щоб мати концепцію змінного рядка, де різноманітні операції можуть виконуватися без виділення окремого місця пам’яті для зміненого рядка.


22) Яка різниця між System.Array.CopyTo() і System.Array.Clone()?

використання Clone() ми створюємо новий об’єкт масиву, що містить усі елементи вихідного масиву та використовуємо CopyTo() метод. Усі елементи існуючого масиву копіюються в інший існуючий масив. Обидва методи виконують поверхневе копіювання.


23) Як ми можемо відсортувати елементи масиву в порядку спадання?

використання Sort() методи, дотримувані Reverse() метод.


24) Запишіть синтаксис C#, щоб перехопити виняток

Щоб перехопити виняток, ми використовуємо блоки try-catch. Блок catch може мати параметр типу system.Exception.

Наприклад:

try {
    GetAllData();
} 
catch (Exception ex) {
}

У наведеному вище прикладі ми можемо опустити параметр у операторі catch.


25) Яка різниця між інтерфейсом і абстрактним класом?

Інтерфейси мають усі методи, які мають лише оголошення, але не мають визначення. В абстрактному класі ми можемо мати деякі конкретні методи. У класі інтерфейсу всі методи є відкритими. Абстрактний клас може мати приватні методи.


26) Яка різниця між методами Finalize() і Dispose()?

Dispose() викликається, коли ми хочемо, щоб об’єкт звільнив будь-які некеровані ресурси. З іншого боку, Finalize() використовується з тією ж метою, але не забезпечує збирання сміття об’єкта.


27) Що таке циклічні посилання?

Циркулярне посилання — це ситуація, коли два або більше ресурсів взаємозалежні один від одного, спричиняє стан блокування та робить ресурси непридатними для використання.


28) Що таке дженерики в C#.NET?

Генерики використовуються для створення багаторазово використовуваних класів коду, щоб зменшити надмірність коду, підвищити безпеку типу та продуктивність. Використовуючи дженерики, ми можемо створювати класи колекцій. Щоб створити загальну колекцію, слід використовувати простір імен System.Collections.Generic замість таких класів, як ArrayList у просторі імен System.Collections. Generics сприяє використанню параметризованих типів.


29) Що таке пул об'єктів у .NET?

Пул об’єктів — це контейнер, що містить об’єкти, готові до використання. Він відстежує об’єкт, який зараз використовується, загальну кількість об’єктів у пулі. Це зменшує накладні витрати на створення та повторне створення об’єктів.


30) Перелічіть типи винятків, які зазвичай використовуються в .net

ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException ,OverflowException, IndexOutOfRangeException, InvalidCastException, InvalidOperationException, IOEndOfStreamException, NullReferenceException, OutOfMemoryException, StackOverflowException тощо.


31) Що таке спеціальні винятки?

Іноді виникають деякі помилки, які потрібно обробляти відповідно до вимог користувача. Для них використовуються спеціальні винятки та використовуються визначені винятки.


32) Що таке делегати?

Делегати є такими ж, як і вказівники на функції C++, але єдина відмінність полягає в тому, що вони безпечні для типів, на відміну від покажчиків на функції. Делегати потрібні, оскільки їх можна використовувати для написання набагато більш загальних типобезпечних функцій.


33) Як ви успадковуєте клас в інший клас у C#?

Двокрапка використовується як оператор успадкування в C#. Просто поставте двокрапку, а потім назву класу.

public class DerivedClass : BaseClass

34) Що таке базовий клас у .net, з якого походять усі класи?

System.Object

35) Яка різниця між перевизначенням методу та перевантаженням методу?

У перевизначенні методу ми змінюємо визначення методу в похідному класі, що змінює поведінку методу. Перевантаження методів — це створення методу з однаковою назвою в одному класі з різними підписами.


36) Якими різними способами можна перевантажити метод?

Методи можна перевантажувати за допомогою різних типів даних для параметра, різного порядку параметрів і різної кількості параметрів.


37) Чому ви не можете вказати модифікатор доступності для методів всередині інтерфейсу?

В інтерфейсі ми маємо віртуальні методи, які не мають визначення методу. Усі методи існують для перевизначення в похідному класі. Тому всі вони публічні.


38) Як ми можемо налаштувати успадкування класу, але запобігти перевизначенню методу?

Оголосіть клас як публічний і зробіть метод закритим, щоб запобігти його перевизначенню.


39) Що станеться, якщо успадковані інтерфейси мають конфліктні назви методів?

Реалізація залежить від вас, оскільки метод знаходиться у вашому власному класі. Може виникнути проблема, коли методи з різних інтерфейсів очікують різних даних, але, наскільки піклується компілятор, ви в порядку.


40) Яка різниця між структурою та класом?

Структури є змінними типу значення, а класи є довідковими типами. Структури, що зберігаються в стеку, викликають додаткові накладні витрати, але швидший пошук. Структури не можуть бути успадковані.


41) Як використовувати типи, що допускають значення NULL, у .Net?

Типи значень можуть приймати або свої звичайні значення, або нульове значення. Такі типи називаються нульовими типами.

Int? someID = null;
If(someID.HasVAlue)
{
}

42) Як ми можемо створити масив зі значеннями, відмінними від замовчування?

Ми можемо створити масив зі значеннями, нестандартними, за допомогою Enumerable.Repeat.


43) Яка різниця між операторами «is» і «as» у C#?

Оператор «is» використовується для перевірки сумісності об’єкта з заданим типом і повертає результат як логічний.

Оператор as використовується для приведення об’єкта до типу або класу.


44) Що таке багатоадресний делегат?

Делегат, якому призначено кілька обробників, називається багатоадресним делегатом. Кожному обробнику призначено метод.


45) Що таке індексатори в C# .NET?

Індексатори відомі як розумні масиви в C#. Це дозволяє індексувати екземпляри класу так само, як і масив.

Наприклад:

public int this[int index]    // Indexer declaration

46) Яка різниця між «throw» і «throw ex» у .NET?

Інструкція “Throw” зберігає вихідний стек помилок, тоді як “throw ex” має трасування стека з їхньої точки кидка. Завжди рекомендується використовувати «throw», оскільки це надає точнішу інформацію про помилку.


47) Що таке атрибути C# і їх значення?

C# надає розробникам можливість визначати декларативні теги для певних об’єктів, наприклад. Клас, метод тощо називаються атрибутами. Інформацію про атрибут можна отримати під час виконання за допомогою Reflection.


48) Як реалізувати однотонний шаблон проектування в C#?

У шаблоні singleton клас може мати лише один екземпляр і надає точку доступу до нього глобально.

Наприклад:

Public sealed class Singleton
{
Private static readonly Singleton _instance = new Singleton();
}

49) Яка різниця між directcast і ctype?

DirectCast використовується для перетворення типу об’єкта, який вимагає, щоб тип часу виконання збігався з указаним типом у DirectCast.

Ctype використовується для перетворення, де перетворення визначається між виразом і типом.


50) Код C# є керованим чи некерованим?

C# — це керований код, оскільки середовище виконання Common language може компілювати код C# у мову Intermediate.


51) Що таке консольний додаток?

Консольна програма – це програма, яку можна запускати в командному рядку Windows. Для будь-якого новачок в .Net, створення консольної програми – це ідеальний перший крок для початку.


52) Наведіть приклад вилучення елемента з черги

Метод dequeue використовується для видалення елемента з черги.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Queue qt = new Queue();
   qt.Enqueue(1);
   qt.Enqueue(2);
   qt.Enqueue(3);

   foreach (Object obj in qt)
   {
    Console.WriteLine(obj);
   }
    Console.WriteLine(); Console.WriteLine();
    Console.WriteLine("The number of elements in the Queue " + qt.Count);
    Console.WriteLine("Does the Queue contain " + qt.Contains(3));
    Console.ReadKey();
   }
 }
}

Ці запитання для співбесіди також допоможуть вам у життєдіяльності (усному)