50 лучших вопросов и ответов на собеседовании по C# (2025 г.)

Вопросы и ответы на собеседовании по C# для новичков и 2/3/5/10 лет опыта

Вот вопросы и ответы на собеседовании по C# для новичков, а также кандидатов с опытом работы 5 или 10 лет, которые смогут получить работу своей мечты.

1) Что такое С#?

C# — это объектно-ориентированный, типобезопасный и управляемый язык, который компилируется платформой .Net для создания Microsoft Промежуточный язык.

👉 Скачать бесплатно PDF-файл: Интервью по C#, вопросы и ответы для собеседования


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 одного типа не могут быть выполнены. После выполнения соответствующего кода перехвата управление передается блоку «finally», а затем выполняется код, следующий за блоком «finally».


4) В чем разница между public, static и void?

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

Объект в C#

Вопросы для собеседования по C#


5) Что такое предмет?

Объект — это экземпляр класса, через который мы получаем доступ к методам этого класса. Ключевое слово «New» используется для создания объекта. Класс, создающий объект в памяти, будет содержать информацию о методах, переменных и поведении этого класса.


6) Определить конструкторы

Конструктор — это функция-член класса, имя которого совпадает с именем его класса. Конструктор автоматически вызывается при каждом создании класса объекта. Он создает значения членов данных при инициализации класса.


7) Что такое зубчатые массивы?

Массив, содержащий элементы типа массив, называется зубчатым массивом. Элементы могут быть разных размеров и размеров. Мы также можем назвать зубчатый массив массивом массивов.


8) В чем разница между параметрами ref и out?

Аргумент, переданный как ref, должен быть инициализирован перед передачей методу, тогда как параметр out не нужно инициализировать перед передачей методу.


9) Для чего используется оператор using в C#?

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


10) Что такое сериализация?

Когда мы хотим передать объект через сеть, нам необходимо преобразовать объект в поток байтов. Процесс преобразования объекта в поток байтов называется сериализацией. Чтобы объект можно было сериализовать, он должен реализовывать интерфейс ISerialize. Десериализация — это обратный процесс создания объекта из потока байтов.


11) Можем ли мы использовать команду «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#?

Мы создаем запечатанные классы, когда хотим ограничить наследование класса. Модификатор Sealed, используемый для предотвращения наследования от класса. Если мы принудительно укажем запечатанный класс в качестве базового, произойдет ошибка времени компиляции.


17) Что такое перегрузка метода?

Перегрузка метода — это создание нескольких методов с одинаковым именем и уникальными сигнатурами в одном классе. Когда мы компилируем, компилятор использует разрешение перегрузки, чтобы определить конкретный метод, который нужно вызвать.


18) В чем разница между массивом и массивом?

В массиве могут быть только элементы одного типа. Размер массива фиксируется при сравнении. 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?

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

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

42) Как создать массив со значениями, отличными от значений по умолчанию?

Мы можем создать массив со значениями, отличными от значений по умолчанию, используя Enumerable.Repeat.


43) В чем разница между операторами «is» и «as» в C#?

Оператор «is» используется для проверки совместимости объекта с заданным типом и возвращает результат в виде логического значения.

Оператор «as» используется для приведения объекта к типу или классу.


44) Что такое делегат многоадресной рассылки?

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


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

Индексаторы известны как умные массивы в С#. Это позволяет индексировать экземпляры класса так же, как и массив.

Например:

public int this[int index]    // Indexer declaration

46) В чем разница между «throw» и «throw ex» в .NET?

Оператор «Throw» сохраняет исходный стек ошибок, тогда как «throw ex» имеет трассировку стека от точки выброса. Всегда рекомендуется использовать «throw», поскольку это обеспечивает более точную информацию об ошибках.


47) Что такое атрибуты C# и их значение?

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


48) Как реализовать шаблон проектирования Singleton в 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# в промежуточный язык.


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

Эти вопросы для собеседования также помогут вам в устной речи.