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

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

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

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

Наши каналы: https://t.iss.one/proglibrary/9197
Download Telegram
Как работает 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
Что такое абстрактный класс? В каком случае вы обязаны объявить класс абстрактным?

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


Библиотека собеса по С#
😁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.

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

Библиотека собеса по С#
Как работает сборка мусора в .NET, и при каких условиях объекты из поколения 2 не будут собраны, даже если система испытывает давление по памяти?

Сборка мусора в .NET делит объекты на поколения 0, 1 и 2. Объекты в поколении 2 собираются только при полной (Gen2) сборке, которая триггерится при сильном давлении на память или по явному вызову GC.Collect(). Однако объекты из поколения 2 не будут собраны, если на них остаются сильные ссылки, включая кэш, события (если делегаты не отписаны), или если они участвуют в ссылочных циклах, не распознаваемых сборщиком из-за GCHandle, static-ссылок или нативных ресурсов без финализатора.

Библиотека собеса по С#
👍1
Можно ли реализовать несколько блоков catch?

Невозможно реализовать несколько блоков catch. После выполнения правильного кода catch управление переходит к блоку final. После этого реализуется код, следующий за final блоком.

Библиотека собеса по С#
🌚9😁5😢3👍2
Что такое Round Trip в ASP.NET?

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

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

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


Библиотека собеса по С#
В чём разница в поведении между lock, Monitor.Enter/Exit и ReaderWriterLockSlim в C#, и когда каждый из них предпочтительнее использовать?

lock — синтаксический сахар над Monitor.Enter/Exit с автоматическим вызовом Exit в случае исключений. Monitor даёт больше контроля: можно использовать TryEnter с таймаутом, Pulse/Wait для координации потоков. ReaderWriterLockSlim позволяет нескольким потокам читать одновременно, но блокирует запись эксклюзивно, что повышает производительность при преобладании чтений. lock — для простых критических секций, Monitor — для сложной синхронизации с сигналами и таймингом, ReaderWriterLockSlim — при частых конкурентных чтениях и редких записях.

Библиотека собеса по С#
👍2
В чем разница между dispose и finalize в C#?

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

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