10 простых задач на c# с подвохом

от автора

image

Привет хабр!

Цель этой статьи корыстная, а именно получения инвайта. Но о чём написать, чтобы материал был индивидуальным и не похожим на другие публикации, в которых зачастую слова просто меняются местами. Мне хотелось придумать свою нишу, и вот как-то на собеседовании я получил задание, где спрашивалось, через какой символ перечисляются интерфейсы при наследовании, ”:” или “,”. Конечно искушенные хаброжители с такими примерами даже под кат не зайдут, поэтому я развил эту тему и получились “задачи с подвохом”, которые малы и решаются без IDE. Именно задач по моему мнению, на ресурсе представлено мало, а заданий на синтаксис я вообще не встречал.

Если вы найдёте эти примеры интересными, я готов написать ещё, но они будут объёмнее(10-15 строк), а сейчас я вынужден опубликовать короткие, чтобы читатель не потерял интерес и не соскочил.
Сначала парочку очень простых, а потом посложнее, на подсчитать. Поехали!

Задача 1

Какой результат вернёт метод?

private bool SimpleComparison() {     return new byte() == new byte(); } 

Варианты:
а) true
b) false

Задача 2

Какой результат вернёт другой метод?

private bool AnotherSimpleComparison() {     return new byte[0] == new byte[0]; } 

Варианты:
а) true
b) false

Задача 3

Скомпилируется ли хаброкласс?

public class HabraClass {     public int Id { set; get; } } 

Варианты:
а) да
b) нет

Задача 4

Скомпилируется ли этот метод? Если да, что он вернёт?

private bool Jeez() {     if (null == (object)null != false)     {         return true;     }      return false; } 

Варианты:
а) ошибка компиляции
b) исключение в run time
c) вернёт true
d) вернёт false

Задача 5

Скомпилируется ли этот метод?

private void Hello() {     throw; } 

Варианты:
а) да
b) нет

Задача 6

А этот?

private void SafeHello() {     try     {         throw;     }     catch { } } 

Варианты:
а) да
b) нет

Задача 7

Какое число будет выведено на экран?

private void Do() {     int i = 0;     i += Increment(ref i);      Console.WriteLine(i); }  private int Increment(ref int i) {     return i++; } 

Варианты:
а) 0
b) 1
c) 2

Задача 8

Скомпилируется ли этот метод? Если да, что будет выведено на экран?

private void Do() {     int i = 0;      Action<int> action = ref value =>         {             i = i++;         };      action(ref i);      Console.WriteLine(i); } 

Варианты:
а) ошибка компиляции
b) исключение в run time
c) 0
d) 1

Задача 9

Сработает ли следующий код?

private void Do() {     using (var stream = new MemoryStream())     {         stream = new MemoryStream();     } } 

Варианты:
а) ошибка компиляции
b) исключение в run time
c) выполнится без ошибок

Задача 10

Подсчитайте, чему равно linqCounter?

private void Do() {     int linqCounter = 0;     var source = new List<byte> { 0, 0, 1, 0, 1 };      var bytes = source.Where(x =>     {         linqCounter ++;         return x > 0;     });      if (bytes.First() == bytes.Last())     {         Console.WriteLine(linqCounter--);     }     else     {         Console.WriteLine(linqCounter++);     } } 
Выводы, анализ

Я думаю нет смысла удлинять пост и делать анализ задач, когда их можно скопировать в VS и проверить. Спасибо за внимание, надеюсь я смог вас запутать 😉

Ответы:
Скрытый текст

Задача 1 — а) true
Задача 2 — b) false
Задача 3 — а) да
Задача 4 — c) true
Задача 5 — b) нет
Задача 6 — b) нет
Задача 7 — а) 0
Задача 8 — а) ошибка компиляции
Задача 9 — а) ошибка компиляции
Задача 10 — 8

ссылка на оригинал статьи http://habrahabr.ru/post/208870/


Комментарии

Добавить комментарий

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