Привет хабр!
Цель этой статьи корыстная, а именно получения инвайта. Но о чём написать, чтобы материал был индивидуальным и не похожим на другие публикации, в которых зачастую слова просто меняются местами. Мне хотелось придумать свою нишу, и вот как-то на собеседовании я получил задание, где спрашивалось, через какой символ перечисляются интерфейсы при наследовании, ”:” или “,”. Конечно искушенные хаброжители с такими примерами даже под кат не зайдут, поэтому я развил эту тему и получились “задачи с подвохом”, которые малы и решаются без 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 и проверить. Спасибо за внимание, надеюсь я смог вас запутать 😉
Ответы:
Задача 2 — b) false
Задача 3 — а) да
Задача 4 — c) true
Задача 5 — b) нет
Задача 6 — b) нет
Задача 7 — а) 0
Задача 8 — а) ошибка компиляции
Задача 9 — а) ошибка компиляции
Задача 10 — 8
ссылка на оригинал статьи http://habrahabr.ru/post/208870/
Добавить комментарий