...

понедельник, 13 января 2014 г.

[Из песочницы] 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



This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.


Комментариев нет:

Отправить комментарий