Собеседование по C#. Часть 2

Последнее обновление: 08.03.2017

Вопрос 5

Что выведет на консоль следующий код:

var s1 = string.Format("{0}{1}", "abc", "cba");
var s2 = "abc" + "cba";
var s3 = "abccba";

Console.WriteLine(s1 == s2);
Console.WriteLine((object)s1==(object)s2);
Console.WriteLine(s2==s3);
Console.WriteLine((object)s2==(object)s3);

Варианты ответов:

  1. true, false, true, true

  2. true, true, true, true

  3. true, false, true, false

  4. true, false, false, false

Вопрос 6

Какие результаты выведет следующий код:

internal class Program
{
    private static Object syncObject = new Object();
    private static void Write()
    {
        lock (syncObject)
        {
            Console.WriteLine("test");
        }
    }
    static void Main(string[] args)
    {
        lock (syncObject)
        {
            Write();
        }
    }
}

Варианты ответов:

  1. Выбросит исключение

  2. Напечатает слово "test"

  3. Произойдет взаимоблокировка (deadlock)

  4. Напечатает слово "test" бесконечное число раз

Вопрос 7

Даны следующие классы:

public class A
{
    public virtual void Print1()
    {
        Console.Write("A");
    }
    public void Print2()
    {
        Console.Write("A");
    }
}
public class B: A
{
    public override void Print1()
    {
        Console.Write("B");
    }
}
public class C : B
{
    new public void Print2()
    {
        Console.Write("C");
    }
}

К какому результату приведет выполнение следующего кода:

var c = new C();
A a = c;

a.Print2();
a.Print1();
c.Print2();

Варианты ответов:

  1. ABC

  2. CCC

  3. ACC

  4. AAC

Вопрос 8

Что будет выведено на консоль в результате выполнения следующего кода:

static IEnumerable<int> Square(IEnumerable<int> a)
{
    foreach(var r in a)
    {
        Console.WriteLine(r * r);
        yield return r * r;
    }
}
class Wrap
{
    private static int init = 0;
    public int Value
    {
        get { return ++init; }
    }
}
static void Main(string[] args)
{
    var w = new Wrap();
    var wraps = new Wrap[3];
    for(int i=0; i<wraps.Length; i++)
    {
        wraps[i] = w;
    }

    var values = wraps.Select(x => x.Value);
    var results = Square(values);
    int sum = 0;
    int count = 0;
    foreach(var r in results)
    {
        count++;
        sum += r;
    }
    Console.WriteLine("Count {0}", count);
    Console.WriteLine("Sum {0}", sum);

    Console.WriteLine("Count {0}", results.Count());
    Console.WriteLine("Sum {0}", results.Sum());
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850