C#. Вопросы и ответы к собеседованию. Часть 1

Источник

Вопрос 1

Есть следующие объявления классов A и B:

Что выведут на консоль такие вызовы метода Foo():

Ответ

Ошибка компиляции.  Методы Foo надо сделать с модификатором public. Причем оба метода с одинаковым модификатором.

Теперь изменим немного код.  Добавим модификатор public методам Foo

Попробуем завести программу

В данном случае мы потомку пытались присвоить экземпляр предка. Ошибка конвертации типов.

И даже, если мы сделаем так

Мы все равно не приведем типы. Получим

 

Итого на консоли у нас получится, если закомментируем первый случай


Вопрос 2

Есть следующая структура:

Что будет выведено в следующем случае:

Ответ

Интересный пример.  Using работает так, что если объект поддерживает интерфейс IDisposable, то по завершении использования автоматически включается имплементация IDisposable.

Эквивалентом было бы

Но using короче и элегантнее

Вернемся к нашему случаю. По идее, у нас должно было произойти переключение с false на true в момент окончания инструкции using. И это происходит. То есть мы попадаем в имплементацию интерфейса IDisposable. На консоли у нас следующее

Но!

Ключевым моментом здесь является то, что мы используем структуру, а не класс.  Получается у нас 2 объекта. И Dispose вызывается для одного из них.

Вопрос 3

Есть код

Что будет выведено на консоль? Варианты ответов:

  1. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  2. 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
  3. Код сгенерирует исключение
  4. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

Ответ
10, 10, 10, 10, 10, 10, 10, 10, 10, 10
Подробный разбор ответа на хабре

Вопрос 4

Что будет в консоли?

This entry was posted in C#. Bookmark the permalink.