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

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

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

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
Изменение размера массива

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

Если второй параметр меньше длины массива, то массив усекается. Если значение параметра, наоборот, больше, то массив дополняется дополнительными элементами, которые имеют значение по умолчанию. Причем первый параметр передается по ссылке.
Строковая интерполяция

Строковая интерполяция в C# позволяет встраивать выражения непосредственно в строковые литералы, что упрощает форматирование и делает код более читаемым.

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

Блок catch, отлавливающий исключения типа System.Exception. Также можно просто использовать catch{}, не указывая тип исключения.
Вычислите разницу между двумя датами (в днях).

Ответ на картинке.
Метод ToString

Метод ToString() не только получает строковое описание объекта, но и может осуществлять форматирование. Он поддерживает те же описатели, что используются в методе Format.
Простой способ сравнить массивы в C#

Воспользуйтесь методом Enumerable.SequenceEqual.
Можете ли вы объяснить различие между управляемой кучей в .NET и стеком, и как это влияет на управление памятью и производительность приложения?

В .NET управляемая куча — это область памяти, используемая для размещения объектов, управляемых средой CLR (Common Language Runtime), которые уничтожаются автоматически с помощью сборщика мусора. Это помогает предотвратить утечки памяти и обеспечивает автоматизацию управления памятью. Стек используется для хранения примитивов и ссылок на объекты в куче, которые создаются в рамках потока исполнения и имеют время жизни, ограниченное текущим контекстом вызова (например, выполнением метода).

Управление памятью в стеке более быстрое, поскольку объекты выделяются и освобождаются в порядке LIFO (Last In, First Out), что требует минимального управления. В куче же объекты могут быть размещены и освобождены в произвольном порядке, что требует более сложного управления и периодического запуска сборщика мусора, что может влиять на производительность. Однако куча позволяет работать с динамически создаваемыми объектами, что необходимо для большинства приложений.
Объясните, что такое Prefabs в Unity 3D?

Prefab в Unity 3D называется готовым шаблоном объекта (класс, объединяющий объекты и скрипты). Во время разработки префаб можно перетащить из окна проекта в окно сцены и добавить в сцену иерархию игровых объектов.

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

Unity управляет сценами и активами с использованием своего внутреннего механизма управления ресурсами. Загрузка сцен осуществляется через класс SceneManager, который позволяет загружать, выгружать и переключаться между сценами. Для оптимизации памяти и производительности используются техники, такие как асинхронная загрузка сцен (SceneManager.LoadSceneAsync), что позволяет избежать подвисаний игры во время загрузки. Управление активами включает в себя правильное использование ассетбандлов для загрузки и выгрузки ресурсов по требованию, что снижает нагрузку на память. Важно также использовать профайлер для отслеживания использования ресурсов и оптимизации загрузки активов, особенно в больших и сложных сценах, чтобы обеспечить стабильную и эффективную работу приложения.
Что такое пространство имен и является ли оно обязательным?

Ответ:
Пространство имен - это способ организации классов одной и той же группы или функциональности под одним и тем же именем. Мы можем назвать это модулем. Хотя не обязательно помещать класс в пространство имен.
Каков будет результат программы?

Ответ:
location is null
1/1/0001 12:00:00 AM

Обе переменные неинициализированы, но String со ссылочным типом, а DateTime — с типом значения. В качестве типа значения для DateTime устанавливается значение по умолчанию в полночь 1/1/1, а не null.
Расскажите, какова функция Inspector в Unity 3D

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

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

Подобным образом действует метод LastIndexOf, только находит индекс последнего вхождения символа или подстроки в строку.
Операторы as и is

Оператор is используется для того, чтобы определить принадлежность объекта к типу, если это так, то вернет true. Например, является ли объект Person экземпляром типа Adult или типа, производного от Adult.

Для проверки возможности преобразования типов используйте оператор as.

Если преобразование невозможно, то будет возвращено значение NULL.
Что означают следующие аббревиатуры в .NET: IL, CIL, MSIL, CLI и JIT?

Ответ:

IL (Intermediate Language)
– это независимый от процессора частично скомпилированный код. Код IL будет скомпилирован в родной машинный код с использованием текущих свойств среды компилятором Just-In-Time (JIT). JIT-компилятор переводит IL-код в код сборки и использует архитектуру процессора целевой машины для выполнения приложения .NET.

В .NET язык IL называется Common Intermediate Language (CIL), а на первых этапах .NET он назывался Microsoft Intermediate Language (MSIL).

CLI (Common Language Infrastructure) – это открытая спецификация, разработанная компанией Microsoft. Это библиотека скомпилированного кода, используемая для развертывания, создания версий и обеспечения безопасности.

В .NET существует два типа CLI: сборки процессов (EXE) и сборки библиотек (DLL). Сборки CLI содержат код на языке CIL, и, как уже упоминалось, при компиляции языков программирования CLI исходный код транслируется в код CIL, а не в объектный код, специфичный для платформы или процессора.

Подведем итоги:

1. При компиляции исходный код сначала транслируется в IL (в .NET это CIL, а ранее назывался MSIL).
2. Затем CIL собирается в байткод и создается сборка CLI.
3. Перед выполнением кода CLI-код проходит через JIT-компилятор среды выполнения для генерации родного машинного кода.
4. Процессор компьютера выполняет родной машинный код.
Опишите модификатор «protected internal»

Члены с таким модификатором доступны классам, находящимся в той же сборке и унаследованным от данного класса.
Простое и довольно эффективное решение — отсортировать обе коллекции, а затем сравнить их на равенство.
Как в Unity обрабатывается физика на объектах с компонентами Rigidbody в сценах с множественными активными камерами, и как это может повлиять на производительность игры?

В Unity, когда на сцене присутствуют множественные активные камеры, физические расчеты для объектов с компонентами Rigidbody выполняются независимо от количества камер. Физика обрабатывается на уровне движка и не дублируется для каждой камеры. Однако, визуализация сцены с множеством камер может заметно увеличить требования к производительности, поскольку каждая камера требует отдельного рендеринга сцены. Это может привести к снижению частоты кадров, особенно если сцены сложные или содержат большое количество детализированных объектов. Важно оптимизировать использование камер и стараться минимизировать их количество для поддержания оптимальной производительности.