Библиотека собеса по C# | вопросы с собеседований
5.48K subscribers
102 photos
48 links
Вопросы с собеседований по C# и ответы на них.

Список наших каналов: https://t.me/proglibrary/9197
Учиться у нас: https://proglib.io/w/4c2f1c3b

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv
Прайс: @proglib_advertising
Download Telegram
Расскажите краткое описание вариантов передачи параметров с помощью методов в C#.

Параметр значения: опция по умолчанию. Параметры, передаваемые в метод, приведут к сохранению новой копии в памяти, и любые изменения в этой копии не будут отражены в исходном параметре значения.
Ссылочный параметр: хранит адрес памяти параметра в аргументе метода, поэтому любые изменения аргумента отражаются на исходном параметре в памяти.
Выходной параметр: используется, если вы хотите, чтобы метод возвращал несколько значений.
Можно ли хранить смешанные типы данных, такие как int, string, float, char, в одном массиве?

Да, это возможно, поскольку массив может иметь тип объекта, который может хранить не только любой тип данных, но и объект класса, как показано на картинке.
Что такое веб-служба .NET?

Ответ: веб-сервисы — это повторно используемые компоненты, которые позволяют разработчикам публиковать функцию приложения через Интернет, чтобы сделать его доступным и напрямую взаимодействовать с другими приложениями и объектами в нем. Веб-службы взаимодействуют с помощью стандартных веб-протоколов и форматов данных, включая HTTP, XML и SOAP, что позволяет им подключаться между различными платформами и языками программирования. ||ASP .NET|| предоставляет простой способ разработки веб-служб. .NET Framework предоставляет встроенные классы для создания и использования веб-служб.
Для чего в C# используются Async и Await?

Если у нас есть программа, требующая запуска методов независимо от основного процесса, нам необходимо использовать асинхронное программирование. Это позволяет нам запускать процессы и, при необходимости, заставлять их ждать, не блокируя остальную часть программы. Для этого мы используем ключевое слово Async для создания асинхронного метода и Await для его запуска без блокировки нашей программы.
Можете ли вы использовать «this» в статическом методе C#?

Нет, потому что «this» возвращает ссылку на текущий экземпляр того же класса, а статические методы не принадлежат какому-либо конкретному экземпляру, поскольку их можно вызывать только по имени класса.

Единственным исключением являются методы расширения, поскольку мы можем использовать «this» с первым параметром метода.
Что такое виртуальный метод в C#?

Метод, который мы можем переопределить в производном классе, а это значит, что он может иметь разные реализации в базовом (исходном) и производном классах. Они используются, когда мы хотим расширить функциональность исходного метода базового класса. Мы используем ключевое слово virtual для создания виртуального метода в базовом классе, который позволяет переопределить функциональность в производном классе. То есть это пример полиморфизма. Вы не можете использовать ключевое слово virtual со статическими, абстрактными или частными методами в базовом классе.
⚡️Proglib запускает канал про ИИ для генерации звука

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

⭐️генерация голоса и музыки
⭐️замена и перевод речи
⭐️распознавание звуков

👉Подписывайтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое делегаты в C#?

Это эквивалент указателя функции C в C#, основное отличие которого состоит в том, что делегаты C# являются типобезопасными. Это ссылочный тип, который можно использовать для обработки других функций, таких как данные. Мы можем передавать функции в качестве параметров и обрабатывать любые связанные функции обратного вызова и эвенты.
В чем разница между «ref» и «out» в C#?

Ключевые слова ref и out позволяют нам передавать аргументы по ссылке на метод. Сделав это, мы можем гарантировать, что любые изменения, которые мы вносим в аргумент в теле метода или функции, будут отражены в исходной переменной и сохранятся за пределами области действия метода.

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

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

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

В первую очередь сериализация используется для сохранения состояния объекта, что позволяет нам восстановить его позже. Чтобы обратить процесс вспять, нам нужно использовать десериализацию. Нам доступны различные типы сериализации.

Двоичный: конвертируйте объект в двоичные байты, что полезно для передачи по сети или локального хранения.
SOAP: преобразование объекта в поток байтов для передачи по сети в различных архитектурах.
XML: преобразование объекта в формат XML, полезный для передачи по сети или локального хранения.
JSON: преобразование объекта в строку JSON, что полезно для обмена данными между приложениями.
Перечислите четыре шага компилирования кода на С#.

✍🏻 Компиляция исходного кода в управляемый модуль
✍🏻 Объединение созданного модуля из шага 1 с ассемблерным кодом
✍🏻 Загрузка CLR (Common Language Runtime)
✍🏻 Выполнение сборки с помощью CLR
Объясните, как Unity обрабатывает и управляет сценами и активами, в частности, расскажите о процессе загрузки и выгрузки сцен, а также о том, как управлять памятью и ресурсами при работе с большим количеством активов и сложными сценами.

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

Каждый объект C# имеет переменные-члены, имеющие определенную область действия. Мы можем использовать статические объявленные переменные, чтобы гарантировать, что каждый экземпляр объекта класса имеет одно и то же значение. Это возможно, поскольку каждый объект класса использует один и тот же экземпляр статической переменной класса.

Имя статических объявленных переменных относится к неизменному значению (ключевое слово static), которое строго типизировано (объявлено), но обычно их называют просто статическими переменными.
Зачем вам реализовывать оператор using в C#?

Для управления и автоматического освобождения ресурсов после завершения обработки объекта. В частности, реализуя оператор using, мы неявно гарантируем, что метод .Dispose() вызывается для автоматического освобождения неиспользуемых ресурсов.
Объясните, как работают асинхронные делегаты в C#, и как они могут быть использованы для улучшения производительности приложений?

Асинхронные делегаты в C# позволяют выполнить метод асинхронно в отдельном потоке. Это делается с помощью методов BeginInvoke и EndInvoke. BeginInvoke запускает метод асинхронно, а EndInvoke ожидает завершения метода и возвращает результат. Асинхронные делегаты полезны для выполнения длительных операций, таких как I/O операции или сложные вычисления, без блокирования основного потока выполнения. Это улучшает отзывчивость приложения, особенно в GUI-приложениях, где важно поддерживать активный пользовательский интерфейс, в то время как выполняются фоновые задачи. Однако, следует управлять ресурсами и обрабатывать исключения при использовании асинхронных делегатов, чтобы избежать утечек памяти и других проблем.
Что такое типы значений и ссылочные типы в C#?

Тип значения: Непосредственно сохраняет значение переменных данных внутри выделенного пространства памяти.

Тип ссылки: переменные данные не сохраняются напрямую в своей ячейке памяти, а вместо этого сохраняется ссылка на другой адрес памяти, который содержит значение переменных данных, поэтому эквивалент указателя.
Опишите тип данных структуры в C#.

Структура — это тип данных типа значения в C#, который наследуется от System.Value. Они используются для хранения структур данных и обычно небольших объемов данных. Структуры могут использовать параметризованные конструкторы, и они объявляются с ключевым словом struct.

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

Намного проще создавать экземпляры классов, массивы и коллекции при помощи специальных инициализаторов.

Приведенный выше пример может быть очень полезным при unit-тестировании, однако в других ситуациях лучше создавать экземпляры при помощи конструкторов.
⚡️Proglib запускает канал про ИИ в сфере видео

Вот несколько топовых постов за последнее время:

⭐️Инструмент, который сам делает короткие вертикальные видео из ваших длинных роликов, например, на ютуб
⭐️Подборка нейро-генераторов видео с пробным периодом
⭐️Анонс ИИ-«нетфликса», который будет штамповать вам мультики по запросам

👉Подписывайтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻📎 27 сайтов с задачками для оттачивания навыков программирования

Программистам без практики никуда. Поэтому время прокачать навыки: решение задач — хороший способ развить навыки разработки.

Вам под силу эти задачи?➡️

🔗 Ссылка на сайты
Please open Telegram to view this post
VIEW IN TELEGRAM