Библиотека собеса по C# | вопросы с собеседований
Open in Telegram
Вопросы с собеседований по C# и ответы на них. По рекламе: @tproger_sales_bot Учиться у нас: https://clc.to/QRJIVw Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197
Show more5 629
Subscribers
No data24 hours
-97 days
-2230 days
Posts Archive
Как можно сравнить строки в C#?
Ответ на картинке.
Какая из операций linq исключает дублирование одинаковых элементов в выходной последовательности?
Операция Distinct удаляет дублированные элементы из входной последовательности.
Чем отличается event от delegate?
Отличаются так же, как отличаются свойства от полей.
Событие может быть только членом класса и может быть запущено только в классе, в котором объявлено. Кроме того, подписчик события не может отписать других подписчиков.
Событие реализуется компилятором в виде приватного поля-делегата и двух публичных методов подписки/отписки на событие.
Какие реализации DI контейнеров вы знаете на C#. Какой DI контейнер является лучшим?
Castle Windsor, Autofac, Ninject, Unity... и так далее, на самом деле их очень много. Насчет того, какой из них лучший — не совсем корректный вопрос. Все зависит от конкретной реализации.
Что такое assembly manifest (манифест сборки)?
Манифест сборки содержит следующую информацию (первые чертыре составляют удостоверение сборки):
Имя сборки
✍🏻 Номер версии: основной и дополнительный номера. Используется для управления версиями
✍🏻 Язык и региональные параметры: информация о языке и региональных параметрах, которые поддерживает сборка
✍🏻 Информация о строгом имени: открытый ключ издателя
✍🏻 Список всех файлов сборки: хэш и имя каждого из входящих в сборку файлов
✍🏻 Список ссылок на другие сборки, которые использует текущая сборка
✍🏻 Список ссылок на типы, используемые сборкой
⚡️Proglib запускает каналы про нейросети
По каждому направлению отдельно! А именно:
⭐Библиотека нейрозвука — здесь все, связанное с транскрибацией, синтезом речи, ИИ-музыкой
⭐Библиотека нейротекста — классические ИИ-помощники вроде ChatGPT, Gemini, Bing
⭐Библиотека нейровидео — здесь пишем про нашумевшую Sora AI, а также про Runway ML, дипфейки и другие видеотехнологии
⭐Библиотека нейрокартинок — генерируем изображения и рассказываем про Midjourney, DALL-E, Stable Diffusion
⭐️Библиотека робототехники и беспилотников — наконец, тут мы рассказываем не столько про ИИ, сколько про роботов, беспилотные технологии и интернет вещей
И все это — максимально подробно: с пошаговыми инструкциями, промтами, инструментами и лайфхаками.
Подписывайтесь!
Назовите отличия между интерфейсом и абстрактным классом?
Интерфейс — это абстрактный класс, у которого ни один метод не реализован, все они публичные и нет переменных класса.
Абстрактные классы и интерфейсы используются в наследовании, при этом разрешено наследование нескольких интерфейсов, но только одного класса.
Dynamic hair
Хотите сделать вашего персонажа в Unity интереснее? Тогда для вас этот видеоурок о том, как добавить физику и движение его волосам.
Смотреть видео
Смена регистра
Для приведения строки к верхнему и нижнему регистру используются соответственно функции ToUpper() и ToLower().
В чем разница инкапсуляции и сокрытия?
Инкапсуляция — одна из парадигм ООП. Она представляет собой способность языка упаковывать определённые участки кода в контейнеры, исключая возможность внешнего мира нарушения целостности данного кода. Основной единицей инкапсуляции в C# является класс. Инкапсуляция позволяет структурировать код и помогает обезопасить его от многих возможных проблем, относительно защиты данных и информации.
Сокрытие же скрывает детали о процессе. Для определения прав доступа к данным в классе и к классу непосредственно используются модификаторы доступа. Получается, что использование этих модификаторов и есть то самое сокрытие. Но сам термин «сокрытие» лучше употреблять в контексте методов. Сокрытие метода представляет собой реализация тела метода в дочернем классе, сигнатура которого соответствует сигнатуре метода в родительском классе. Для сокрытия применяется ключевое слово «new».
Repost from Библиотека задач по C# | тесты, код, задания
Prizes of the draw
3 Telegram Premium subscriptions for 3 months
Completion date
Можно ли запретить наследование от своего собственного класса?
Для того, чтобы запретить наследоваться от класса необходимо объявить его с модификатором sealed.
Локальные функции
Один из интересных трюков в C# связан с использованием локальных функций для создания чистых и компактных методов. Локальные функции позволяют определять методы внутри других методов, что улучшает читаемость и организацию кода, особенно когда некоторые действия нужно повторять внутри одного метода.
В этом примере, метод Add определен внутри SomeMethod. Это не только помогает сгруппировать связанный функционал, но и ограничивает область видимости Add, делая код более безопасным и управляемым.
Что выведет на экран следующий код?
Выведет 4. Оператор ~ производит побитовую реверсию.
Console.WriteLine(«{0:x8}, {1:x8}», -5, ~(-5));
// выведет fffffffb, 00000004
Причем для значения 5 выведет -6.
Получение всех дат между двумя DateTime в C#
Вы можете использовать DateTime объекты непосредственно в цикле. DateTime.AddDays правильно обрабатывает окончание месяца.
Может ли класс реализовать два интерфейса, у которых объявлены одинаковые методы? Если да, то каким образом?
Может. Общие методы при этом надо реализовывать один раз неявно или два раза явно (с указанием имени интерфейса). При явной реализации метод нельзя будет вызывать без приведения экземпляра класса к интерфейсу (если только не будет третьей реализации метода в классе).
Если два метода интерфейса выполняют разные действия, то неявная реализация интерфейсов может быть некорректной.
Изменение порядка элементов массива
Например, изменим порядок элементов с помощью следующего кода.
В чем разница между абстрактными и виртуальными классами? Между виртуальными и абстрактными методами?
Абстрактные классы это класс помеченный ключевым словом abstract. В абстрактном классе содержатся абстрактные члены (методы, свойства, индексаторы, события) они не имеют внутренней реализации и выступают в роли интерфейса. Они так же обязаны быть помечены ключевыми словом abstract. При наследовании от абстрактного класса, класс наследник получает все свойства своего класса родителя, а если в родительском классе есть еще и абстрактные члены, то в классе наследнике обязательно их нужно переопределять.
Виртуальный класс, это просто класс в котором есть виртуальные члены (методы, свойства...) Виртуальные члены помечаются модификатором virtual и имеют внутреннюю реализацию, которая может быть переопределена в классе наследнике.
Что такое интеграционные тесты и unit-тесты?
Модульное тестирование: проверка отдельного модуля (класса, библиотеки) приложения независимо от другого модуля. Позволяет провести регресионное тестирование (при внесении изменений в модуль, убедиться, что он по прежнему работает).
Интеграционное тестирование: программные модули объединяются и тестируются в группе. Эти тесты проверяют правильность взаимодействия нескольких подсистем (например, двух классов). Проводится после модульного тестирования.
Системное тестирование: проверяется все приложение в целом на соответсвие требованиям по принципу черного ящика (без учета внутреннего строения приложения).
Какая разница между классами System.String и System.Text.StringBuilder?
Данные, хранящиеся в классе System.String и есть неизменяемые (immutable). Класс System.StringBuilder разрабатывался так, чтобы над изменяемой строкой можно было проделать множество операций. То есть при каждой операции над объектом класса System.String происходит перенос данных в новую область памяти, что влияет на производительность программы.
