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

в 10:13, , рубрики: .net, Программирование

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

Автор: Smekalisty

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js