Привет!
Цель этой статьи корыстная, а именно получения инвайта. Но о чём написать, чтобы материал был индивидуальным и не похожим на другие публикации, в которых зачастую слова просто меняются местами. Мне хотелось придумать свою нишу, и вот как-то на собеседовании я получил задание, где спрашивалось, через какой символ перечисляются интерфейсы при наследовании, ”:” или “,”. Конечно искушенные хаброжители с такими примерами даже под кат не зайдут, поэтому я развил эту тему и получились “задачи с подвохом”, которые малы и решаются без 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
Автор: Smekalisty