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

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

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

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

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
Что такое модульное тестирование и как его провести в 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 (сборка) устанавливает область видимости имени в процессе выполнения.

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

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

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

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

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

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


Библиотека собеса по С#
4
Разница 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 кода — например, парсинга или работы с массивами без копирования.

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

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

Библиотека собеса по С#
Как работает async/await и роль SynchronizationContext?

async/await преобразует метод в машину состояний. При await выполнение приостанавливается, а продолжение может быть запланировано на исходном SynchronizationContext (например, UI-поток). В ASP.NET Core его нет, и продолжение выполняется в ThreadPool. ConfigureAwait(false) отключает возврат в контекст.

Библиотека собеса по С#
Что такое Round Trip в ASP.NET?

В момент включения обработки на стороне сервера, тогда включаются четыре этапа:

1. Пользователь запрашивает веб-форму с веб-сервера.
2. Веб-сервер отвечает указанной веб-формой.
3. Пользователь вводит информацию и отправляет веб-форму на сервер.
4. Затем веб-сервер обрабатывает структуру формы и отправляет результаты обратно конкретному пользователю.

Теперь этап 3 известен как постбэк страницы, в то время как этапы 3 и 4 в совокупности известны как «Round Trip». Можно сказать, что обратный путь включает в себя выполнение полного обхода по сети к веб-браузеру и получение ответа. Веб-приложения используют HTTP для создания соответствия между веб-программой и сервером.


Библиотека собеса по С#
Что вы знаете о JIT?

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

Библиотека собеса по С#
Что такое абстрактный класс? В каком случае вы обязаны объявить класс абстрактным?

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


Библиотека собеса по С#
😁1
Что такое readonly struct в C# и в чём его отличие от обычной структуры? В каких случаях стоит использовать readonly struct?

readonly struct в C# — это структура, у которой запрещено изменение состояния после создания. Все поля такой структуры должны быть помечены как readonly, и любые методы не имеют права изменять содержимое полей. Это создаёт гарантию, что экземпляр структуры остаётся неизменным. Главное отличие от обычной структуры заключается в том, что обычная структура может быть изменена после создания, а readonly struct — нет. Использовать readonly struct имеет смысл в ситуациях, когда структура представляет собой логически неизменяемый объект (например, координата, цвет, диапазон), и нужно обеспечить как защиту от случайных изменений, так и избежать лишнего копирования при передаче в методы или возвращении из них.

Библиотека собеса по С#
🤔2🌚2
Можете ли вы вкратце объяснить, что такое пул потоков в C#?

Пул потоков в C# — это, по сути, набор потоков. Эти потоки используются для выполнения задач, не влияя на реализацию основного потока. После завершения реализации поток из пула потоков возвращается в пул потоков.

Библиотека собеса по С#
🤔4👾1
Сколько типов серверных элементов управления поддерживает ASP.NET?

В ASP.NET в основном существует четыре различных типа элементов управления на стороне сервера:

✍️ Элементы управления сервером HTML;
✍️ Элементы управления веб-сервером;
✍️ Элементы управления пользователем;
✍️ Элементы управления проверкой.
Что такое частичные классы в C#?

Частично реализованные классы распределяют функциональность одного класса по нескольким файлам. В процессе компиляции эти несколько файлов объединяются в один. Ключевое слово parts используется для создания разделяемого класса.

public partial Class_name{
// code
}

Методы, интерфейсы и функциональные возможности структур можно легко разделить на несколько файлов. Вы также можете включить вложенные частичные классы.


Библиотека собеса по С#
🤩1
Обсудите важность Asset Bundles в разработке игр на Unity.

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

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