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

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

Вопрос 9

Является ли тип List потокбезопасной (thread-safe) коллекцией?

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

  1. Только при операциях чтения

  2. Не является ни в каком случае

  3. Только при операциях записи

  4. Является во всех случаях

Вопрос 10

В чем различие между операцией cast (приведения типов) и оператором as?

  1. Оператор "as" - это просто синтаксический сахар для "cast"

  2. Cast изменяет диначеский тип, в то время как as изменяет статический тип

  3. В случае ошибки cast выбрасывает исключение InvalidCastException, а оператор as возвращает null

  4. В случае ошибки cast возвращает null, а оператор as выбрасывает исключение InvalidCastException

Вопрос 11

Какова алгоритмическая сложность для операций чтения и записи для коллекции Dictionary?

  1. Чтение - О(1), запись - О(1)

  2. Чтение - О(n), запись - О(1)

  3. Чтение - О(n), запись - О(n)

  4. Чтение - О(1), запись - О(n)

Вопрос 12

В чем различие между ключевыми словами "ref" и "out"?

  1. Параметр с ключевым слово ref может быть не инициализирован, а параметр с ключевым словом out обязательно должен быть инииализирован до вызова метода, который использует эти параметры

  2. Параметр с ключевым слово out может быть не инициализирован, а параметр с ключевым словом ref обязательно должен быть инииализирован до вызова метода, который использует эти параметры

  3. Нет различий

  4. Ключевым слово ref может использоваться только со значимыми типами (value types), а out может использоваться как со значимыми, так и с ссылочными типами.

Вопрос 13

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

static void Main(string[] args)
{
    object sync = new object();
    var thread = new Thread(()=>
    {
        try
        {
            Work();
        }
        finally
        {
            lock (sync)
            {
                Monitor.PulseAll(sync);
            }
        }
    });
    thread.Start();
    lock (sync)
    {
        Monitor.Wait(sync);
    }
    Console.WriteLine("test");
}
private static void Work()
{
    Thread.Sleep(1000);
}

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

  1. Будет выброшено SynchronizationLockException

  2. Слово "test" не будет напечатано, так как произойдет взаимоблокировка (deadlock)

  3. В одних случаях может быть напечатано слово "test", а в других может произойти взаимоблокировка

  4. Всегда будет напечатано слово "test"

Вопрос 14

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

class MyCustomException : DivideByZeroException
{

}
static void Main(string[] args)
{
    try
    {
        Calc();
    }
    catch (MyCustomException e)
    {
        Console.WriteLine("Catch MyCustomException");
        throw;
    }
    catch (DivideByZeroException e)
    {
        Console.WriteLine("Catch Exception");
    }
    Console.ReadLine();
}

private static void Calc()
{
    int result = 0;
    var x = 5;
	int y = 0;
    try
    {
        result = x / y;
    }
    catch (MyCustomException e)
    {
        Console.WriteLine("Catch DivideByZeroException");
        throw;
    }
    catch (Exception e)
    {
        Console.WriteLine("Catch Exception");
    }
    finally
    {
        throw new MyCustomException();
    }
}

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

  1. Catch DivideByZeroException, Catch MyCustomException

  2. Catch Exception, Catch MyCustomException

  3. Catch DivideByZeroException, Catch DivideByZeroException

  4. Catch Exception, Catch DivideByZeroException

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850