Найти тему

Объяснение тестов C# Ч. 1

Всем привет! Сейчас я объясню вам несколько тестов с которыми вы можете столкнуться на собеседование на C# разработчика.

Что выведется в консоль?

Объясняю: в данном случае выведется «Hello_world». В программе у нас определён один тип делегата (MethodDelegate) он позволяет хранить ссылку на функцию с подходящей сигнатурой (не всегда, смотрите тему вариантности делегатов). Также в программе есть 3 метода, 2 метода экземпляра (GetMeth и PrivateMethod) а также статический метод aka точка входа — Main.

Интерес в данной задаче представляет метод GetMeth, который с помощью модификатора параметра out, ссылается на некоторую переданную ему переменную. По сути он в некую внешнюю переменную помещает ссылку на метод PrivateMeth. Заметьте что там нет оператора вызова (круглых скобок) а только указывается идентификатор метода PrivateMeth.

В методе Main мы создаём переменную с типом делегата MethodDelegate. И передаём её в метод, который помещает в эту переменную ссылку на метод PrivateMeth. Потом происходит его вызов через делегат (строка: myMethod('Hello')). Это строка вызывает метод PrivateMethod который выводит эту строку в консоль. Потом мы обычный Console.WriteLine выводит остаток строки.

P.S: Чаще всего автор задач лично я, но эту я взял из открытого источника. Замечу что не стоит так вольно называть методы. В одном он используется сокращение слова Method, а в другом нет. В итоге получилась ситуация когда в одном классе есть метод GetMeth и PrivateMethod.

Что это за алгоритм сортировки?

-2

Объясняю: Это алгоритм сортировки вставками. Сложность — O(n²)

Что выведется в консоль?

-3

Объясняю: эта задача на статический конструктор. По сути если знать, что статический конструктор вызывается один раз перед обращение к любому члену класса. То становится очевидно, что в консоли мы увидим:

→ Hello World

→Static ctor

→ctor

→10

Обращение к конструктору экземпляра класса также приводит к вызову статического конструктора