Библиотека собеса по C# | вопросы с собеседований
5.55K subscribers
231 photos
2 videos
1 file
314 links
Вопросы с собеседований по C# и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/4c2f1c3b

Для обратной связи: @proglibrary_feeedback_bot

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
В чем разница между локальными и глобальными переменными в SQL?

Локальные переменные могут быть доступны только внутри функции, в которой они были объявлены. А глобальные переменные, будучи объявленными вне какой-либо функции, хранятся в фиксированных структурах памяти и могут использоваться во всей программе.

Библиотека собеса по С#
4
Что подразумевается под свойствами в C#?

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

Библиотека собеса по С#
Запишите различные события страницы в ASP.NET

PreInit
Init
InitComplete
LoadViewState
LoadPostData
PreLoad
Load
LoadComplete
PreRender
PreRenderComplete
SaveStageComplete
UnLoad


Библиотека собеса по С#
Как используется property?

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

Библиотека собеса по С#
Что такое цепочка конструкторов в C#?

Цепочка конструкторов — это способ соединить два или более классов в отношениях в виде наследования. В цепочке конструкторов каждый конструктор дочернего класса неявно сопоставляется с конструктором родительского класса с помощью ключевого слова base, поэтому, когда вы создаете экземпляр дочернего класса, он вызывает конструктор родительского класса. Без этого наследование невозможно.

Библиотека собеса по С#
В чем отличие использования Finalize и Dispose?

Метод Finalize уже определен в базовом для всех типов классе Object, однако данный метод нельзя так просто переопределить. И фактическая его реализация происходит через создание деструктора. Вызывается сборщиком мусора, а точный момент вызова неопределен.
Метод Dispose нужен для ручного освобождения ресурсов, через его явный вызов или с помощью using.


Библиотека собеса по С#
Как перемешать (случайно переставить) элементы в массиве?

Если у вас уже есть набор данных (массив или List), скорее всего вам нужно перемешивание его «на месте». Для этого подойдёт алгоритм из 3.4.2P из TAOCP, известный также как Fisher–Yates shuffle.

Пусть ваши данные находятся в массиве T[] data. Пусть random — экземпляр типа Random*. Тогда для перемешивания подходит следующий код.

Библиотека собеса по С#
👍3
Опишите разницу между оператором равенства (==) и методом Equals() в C#?

Оператор == и метод Equals() сравнивают два элемента данных типа значения или элемента данных ссылочного типа. Оператор равенства (==) является оператором сравнения, а метод Equals() сравнивает содержимое строки. Оператор == сравнивает ссылочную идентичность, тогда как метод Equals() сравнивает только содержимое.

Библиотека собеса по С#
🤔10😁3
В чём разница между ключевыми словами readonly и const в C#?

Пример ответа: «Ключевое слово readonly в C# используется для полей экземпляров, которые могут быть присвоены только во время объявления или в конструкторе. После присвоения их значения невозможно поменять. Ключевое слово const используется для статических констант, которые можно только прочесть и нельзя изменить во время работы программы. Полям const нужно присваивать значение во время объявления».

Библиотека собеса по С#
🤔4👍2
Что такое модульное тестирование и как его провести в C#?

Пример ответа: «Модульное тестирование — это техника тестирования, где изолированно тестируются отдельные модули или компоненты кода для обеспечения корректного функционирования. В C# модульное тестирование проводится с помощью таких фреймворков, как NUnit или MSTest. Пишутся тестовые методы, выполняющие нужные части кода и подтверждающие, что получено ожидаемое поведение. Модульное тестирование помогает раньше идентифицировать баги, улучшает качество кода и содействует сопровождаемости».

Библиотека собеса по С#
Что такое класс хэш таблицы в C#?

Класс Hashtable представляет собой коллекцию пар ключ/значение, организованных на основе хэш-кода ключа. Этот класс относится к пространству имен System. Collections. Класс Hashtable предоставляет различные типы методов, которые используются для выполнения различных типов операций с хэш-таблицами. В Hashtable ключи используются для доступа к элементам, присутствующим в коллекции. Для очень больших объектов Hashtable можно увеличить максимальную емкость до 2 миллиардов элементов в 64-битной системе.

Библиотека собеса по С#
Что такое интеграционные тесты и unit-тесты?

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


Библиотека собеса по С#
🤩4🔥2
Сравнение строк

Для сравнения строк применяется статический метод Compare.

Данная версия метода Compare принимает две строки и возвращает число. Если первая строка по алфавиту стоит выше второй, то возвращается число меньше нуля. В противном случае возвращается число больше нуля. И третий случай — если строки равны, то возвращается число 0.

В данном случае так как символ h по алфавиту стоит выше символа w, то и первая строка будет стоять выше.


Библиотека собеса по С#
4
В чем разница между понятиями namespace и assembly?

Namespace (пространство имен) является логическим соглашением, используемым во время разработки, в то время как assembly (сборка) устанавливает область видимости имени в процессе выполнения.

Библиотека собеса по С#
😁2
Можете ли вы объяснить важность правильной обработки ошибок и кодов состояния в RESTful API, и как их реализовать с помощью C#?

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

Библиотека собеса по С#
😁2
В Unity объясните различия между FixedUpdate, Update и LateUpdate. Как вы решите, когда использовать каждый из этих методов обновления для различных компонентов игрового движка, таких как обработка физики, общая логика игры, и анимации?

Краткий ответ: В Unity, методы FixedUpdate, Update и LateUpdate используются для различных целей в игровом цикле:
FixedUpdate вызывается с фиксированным интервалом времени и является идеальным для обработки всего, что связано с физикой, так как физический движок Unity обновляется в фиксированные моменты времени. Это обеспечивает стабильность физических вычислений независимо от частоты кадров.

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

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


Библиотека собеса по С#
3
Разница IEnumerable и IQueryable при работе с удаленной БД?

Объект IEnumerable представляет набор данных в памяти и может перемещаться по этим данным только вперед.
IQueryable располагается в пространстве имен System.Linq. Объект предоставляет удаленный доступ к базе данных и позволяет перемещаться по данным как в прямом порядке от начала до конца, так и в обратном порядке. В процессе же выполнения запроса, происходит оптимизация запроса.

IEnumerable phoneIEnum = db.Phones;
var phones1 = phoneIEnum.Where(p => p.Id > id).ToList(); //SELECT * FROM PHONES, фильтрация на стороне клиента
IQueryable phoneIQuer = db.Phones;
int id = 3;
var phones2 = phoneIQuer.Where(p => p.Id > id).ToList(); //SELECT * FROM PHONES WHERE ID > 3


Библиотека собеса по С#
Что такое процесс JIT-компилятора?

Компилятор Just-In-Time (JIT) является частью Common Language Runtime (CLR) в .NET, которая отвечает за управление выполнением программ .NET независимо от языка программирования .NET. Специфичный для языка компилятор преобразует исходный код в промежуточный язык. Затем этот промежуточный язык преобразуется в машинный код компилятором Just-In-Time (JIT). Этот машинный код специфичен для компьютерной среды, в которой работает компилятор JIT.

Библиотека собеса по С#
Что делает Span<T> и зачем он нужен в .NET?

Span<T> позволяет работать с непрерывной областью памяти без аллокаций. Используется для high-performance кода — например, парсинга или работы с массивами без копирования.

Библиотека собеса по С#
🔥5
Какими способами можно перегрузить метод?

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

Библиотека собеса по С#