Учебники

26) C # Интервью Q & A

Вот некоторые часто задаваемые вопросы об интервью для новичков, а также опытных кандидатов на C # разработчиков, чтобы получить правильную работу.

1. Что такое C #?

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

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 — это модификатор типа, который утверждает, что метод или переменная не возвращает никакого значения.

5. Что такое объект?

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

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

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

7. Что такое Jagged Arrays?

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

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

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

9. Какая польза от оператора using в C #?

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

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. Что такое пользовательский контроль и пользовательский контроль?

Пользовательские элементы управления — это элементы управления, созданные в виде скомпилированного кода (Dlls), которые проще в использовании и могут быть добавлены в панель инструментов. Разработчики могут перетаскивать элементы управления на свои веб-формы. Атрибуты могут, во время разработки. Мы можем легко добавить пользовательские элементы управления в несколько приложений (если общие библиотеки). Итак, если они являются частными, то мы можем скопировать в каталог 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 (), мы создаем новый объект массива, содержащий все элементы в исходном массиве Array и используя метод CopyTo (). Все элементы существующего массива копируются в другой существующий массив. Оба метода выполняют поверхностное копирование.

23. Как мы можем отсортировать элементы массива в порядке убывания?

Использование методов Sort () и метода Reverse ().

24. Запишите синтаксис C #, чтобы поймать исключение

Чтобы поймать исключение, мы используем блоки try-catch. Блок Catch может иметь параметр system.Exception type.

Например:

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

В приведенном выше примере мы можем опустить параметр из оператора catch.

25. В чем разница между интерфейсом и абстрактным классом?

Интерфейсы имеют все методы, имеющие только объявление, но без определения. В абстрактном классе мы можем иметь несколько конкретных методов. В классе интерфейса все методы являются открытыми. Абстрактный класс может иметь закрытые методы.

26. В чем разница между методами Finalize () и Dispose ()?

Dispose () вызывается, когда мы хотим, чтобы объект освободил любые неуправляемые ресурсы с ними. С другой стороны, Finalize () используется для той же цели, но не обеспечивает сборку мусора объекта.

27. Что такое циркулярные ссылки?

Циркулярная ссылка — это ситуация, в которой два или более ресурса взаимозависимы, что вызывает состояние блокировки и делает ресурсы непригодными для использования.

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

Обобщения используются для создания повторно используемых классов кода, чтобы уменьшить избыточность кода, повысить безопасность типов и производительность. Используя дженерики, мы можем создавать коллекционные классы. Чтобы создать универсальную коллекцию, следует использовать пространство имен System.Collections.Generic вместо классов, таких как ArrayList в пространстве имен System.Collections. Дженерики способствуют использованию параметризованных типов.

29. Что такое пул объектов в .NET?

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

30. Перечислите часто используемые типы исключений в .net

ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException, OverflowException, IndexOutOfRangeException, InvalidCastException, InvalidOperationException, IOEndOfStreamException, NullReferenceExceptionExceptionOxtException, OutOfExOmExO

31. Что такое пользовательские исключения?

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

32. Что такое делегаты?

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

33. Как вы наследуете класс в другой класс в C #?

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

открытый класс DerivedClass: BaseClass

34. Из какого базового класса в .net получены все классы?

System.Object

35. В чем разница между переопределением метода и перегрузкой метода?

В переопределении метода мы меняем определение метода в производном классе, который меняет поведение метода. Перегрузка метода — это создание метода с одним и тем же именем в одном классе с разными сигнатурами.

36. Какими способами метод может быть перегружен?

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

37. Почему вы не можете указать модификатор доступности для методов внутри интерфейса?

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

38. Как мы можем установить класс для наследования, но предотвратить переопределение метода?

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

39. Что произойдет, если унаследованные интерфейсы имеют конфликтующие имена методов?

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

40. В чем разница между структурой и классом?

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

41. Как использовать обнуляемые типы в .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. Как реализовать шаблон проектирования Singleton в C #?

В одноэлементном шаблоне класс может иметь только один экземпляр и предоставляет точку доступа к нему глобально.

Например:

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