en
Feedback
Библиотека собеса по C# | вопросы с собеседований

Библиотека собеса по C# | вопросы с собеседований

Open in Telegram

Вопросы с собеседований по C# и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/4c2f1c3b Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197

Show more
5 662
Subscribers
+324 hours
+57 days
+4930 days
Posts Archive
Какие модификаторы доступа существуют в C#? В C# применяются следующие модификаторы доступа: public: публичный, общедоступный класс или член класса. Такой член класса доступен из любого места в коде, а также из других программ и сборок. private: закрытый класс или член класса. Представляет полную противоположность модификатору public. Такой закрытый класс или член класса доступен только из кода в том же классе или контексте. protected: такой член класса доступен из любого места в текущем классе или в производных классах. При этом производные классы могут располагаться в других сборках. internal: класс и члены класса с подобным модификатором доступны из любого места кода в той же сборке, однако он недоступен для других программ и сборок (как в случае с модификатором public). protected internal: совмещает функционал двух модификаторов. Классы и члены класса с таким модификатором доступны из текущей сборки и из производных классов. private protected: такой член класса доступен из любого места в текущем классе или в производных классах, которые определены в той же сборке.

Thread, task, примеры использования? Класс Thread создает и контролирует поток. На входе указывается метод, который будет вып
Thread, task, примеры использования? Класс Thread создает и контролирует поток. На входе указывается метод, который будет выполняться в потоке. Класс Task позволяет запускать отдельную продолжительную задачу. Она запускается асинхронно в одном из потоков из пула потоков, но ее можно запускать и синхронно.

LINQ lazy loading, eager loading в чем разница? В случае lazy loading (ленивая загрузка), зависимые таблицы (дочерние объекты) не загружаются автоматически с родительскими, а загрузятся в тот момент, когда они понадобятся. В LINQ по умолчанию используется lazy loading. В случае eager loading (жадной загрузки), зависимые объекты загружаются автоматически с родительской таблицей. Для того, чтобы использовать eager loading, нужно применить метод Include().

Что такое GAC? Возможно ли поместить два файла с одинаковым именем в Global Assembly Cache? GAC (Global Assembly Cache) — глобальный кэш сборок, место где хранятся разделяемые сборки. В GAC нельзя помещать полностью одинаковые сборки (сборки с полностью совпадающим сложным именем). Сложное имя сборки состоит из нескольких частей: ✍🏻 Имя сборки без расширения ✍🏻 Номер версии. Благодаря разграничению по версии можно хранить разные версии одной и ой же сборки ✍🏻 Открытый ключ ✍🏻 Необязательное значение для культуры (при локализации сборки) ✍🏻 Цифровая подпись, которая создается с помощью хэш-значения содержимого сборки и значения секретного ключа. Секретный ключ представляет собой файл с расширением *.snk. Если совпадают у двух сборок только имена сборки, а все остальное отличается, то их можно помещать в GAC вместе.

Чем управляемый код (managed code) отличается от неуправляемого (unmanaged code)? Управля́емый код (managed code) — термин, введённый фирмой Microsoft, для обозначения кода программы, исполняемой под «управлением» виртуальной машины .NET — Common Language Runtime или Mono. При этом машинный код называется неуправля́емым кодом (unmanaged code). Слово «управляемый» относится к методу обмена информацией между программой и исполняющей средой. Оно означает, что в любой точке исполнения управляющая среда может приостановить исполнение и получить информацию, специфичную для текущего состояния. Необходимая для этого информация представлена в управляемом коде на языке Intermediate Language и в связанных с этим кодом метаданных.

Какой уровень доступа имеют поля класса, если модификатор доступа не указан? Если не указывать модификатор доступа для поля класса, то по умолчанию они объявляются с модификатором private. Для всех модификаторов доступа действует правило: если не указан модификатор, то устанавливается максимально строгий, при котором код будет компилироваться.

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

Как можно сравнить строки в C#? Ответ на картинке.
Как можно сравнить строки в C#? Ответ на картинке.

Какая из операций linq исключает дублирование одинаковых элементов в выходной последовательности? Операция Distinct удаляет дублированные элементы из входной последовательности.

Чем отличается event от delegate? Отличаются так же, как отличаются свойства от полей. Событие может быть только членом класса и может быть запущено только в классе, в котором объявлено. Кроме того, подписчик события не может отписать других подписчиков. Событие реализуется компилятором в виде приватного поля-делегата и двух публичных методов подписки/отписки на событие.

Какие реализации DI контейнеров вы знаете на C#. Какой DI контейнер является лучшим? Castle Windsor, Autofac, Ninject, Unity... и так далее, на самом деле их очень много. Насчет того, какой из них лучший — не совсем корректный вопрос. Все зависит от конкретной реализации.

Что такое assembly manifest (манифест сборки)? Манифест сборки содержит следующую информацию (первые чертыре составляют удостоверение сборки): Имя сборки ✍🏻 Номер версии: основной и дополнительный номера. Используется для управления версиями ✍🏻 Язык и региональные параметры: информация о языке и региональных параметрах, которые поддерживает сборка ✍🏻 Информация о строгом имени: открытый ключ издателя ✍🏻 Список всех файлов сборки: хэш и имя каждого из входящих в сборку файлов ✍🏻 Список ссылок на другие сборки, которые использует текущая сборка ✍🏻 Список ссылок на типы, используемые сборкой

⚡️Proglib запускает каналы про нейросети По каждому направлению отдельно! А именно: ⭐Библиотека нейрозвука — здесь все, связа
⚡️Proglib запускает каналы про нейросети По каждому направлению отдельно! А именно: ⭐Библиотека нейрозвука — здесь все, связанное с транскрибацией, синтезом речи, ИИ-музыкой ⭐Библиотека нейротекста — классические ИИ-помощники вроде ChatGPT, Gemini, Bing ⭐Библиотека нейровидео — здесь пишем про нашумевшую Sora AI, а также про Runway ML, дипфейки и другие видеотехнологии ⭐Библиотека нейрокартинок — генерируем изображения и рассказываем про Midjourney, DALL-E, Stable Diffusion ⭐️Библиотека робототехники и беспилотников — наконец, тут мы рассказываем не столько про ИИ, сколько про роботов, беспилотные технологии и интернет вещей И все это — максимально подробно: с пошаговыми инструкциями, промтами, инструментами и лайфхаками. Подписывайтесь!

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

Dynamic hair Хотите сделать вашего персонажа в Unity интереснее? Тогда для вас этот видеоурок о том, как добавить физику и дв
Dynamic hair Хотите сделать вашего персонажа в Unity интереснее? Тогда для вас этот видеоурок о том, как добавить физику и движение его волосам. Смотреть видео

Смена регистра Для приведения строки к верхнему и нижнему регистру используются соответственно функции ToUpper() и ToLower().
Смена регистра Для приведения строки к верхнему и нижнему регистру используются соответственно функции ToUpper() и ToLower().

В чем разница инкапсуляции и сокрытия? Инкапсуляция — одна из парадигм ООП. Она представляет собой способность языка упаковывать определённые участки кода в контейнеры, исключая возможность внешнего мира нарушения целостности данного кода. Основной единицей инкапсуляции в C# является класс. Инкапсуляция позволяет структурировать код и помогает обезопасить его от многих возможных проблем, относительно защиты данных и информации. Сокрытие же скрывает детали о процессе. Для определения прав доступа к данным в классе и к классу непосредственно используются модификаторы доступа. Получается, что использование этих модификаторов и есть то самое сокрытие. Но сам термин «сокрытие» лучше употреблять в контексте методов. Сокрытие метода представляет собой реализация тела метода в дочернем классе, сигнатура которого соответствует сигнатуре метода в родительском классе. Для сокрытия применяется ключевое слово «new».

Gift
x3

Prizes of the draw

3 Telegram Premium subscriptions for 3 months

Completion date

Можно ли запретить наследование от своего собственного класса? Для того, чтобы запретить наследоваться от класса необходимо объявить его с модификатором sealed.

Локальные функции Один из интересных трюков в C# связан с использованием локальных функций для создания чистых и компактных м
Локальные функции Один из интересных трюков в C# связан с использованием локальных функций для создания чистых и компактных методов. Локальные функции позволяют определять методы внутри других методов, что улучшает читаемость и организацию кода, особенно когда некоторые действия нужно повторять внутри одного метода. В этом примере, метод Add определен внутри SomeMethod. Это не только помогает сгруппировать связанный функционал, но и ограничивает область видимости Add, делая код более безопасным и управляемым.