Skip to content

DamianMorozov/Job-interview-for-junior-developer

Repository files navigation

====================================================================================================
Собеседование на позицию junior/middle developer
====================================================================================================
https://metanit.com/sharp/interview/1.1.php
====================================================================================================

Вопрос 1
--------
Есть следующие объявления классов A и B:
class A
{
    virtual void Foo()
    {
        Console.Write("Class A");
    }
}
class B: A
{
    override void Foo()
    {
        Console.Write("Class B");
    }
}

Что выведут на консоль такие вызовы метода Foo()
------------------------------------------------
B obj1 = new A();
obj1.Foo();
 
B obj2 = new B();
obj2.Foo();
 
A obj3 = new B();
obj3.Foo();

Ответ
-----
1. Ошибка. "A.Foo()": виртуальные и абстрактные члены не могут быть закрытыми.
Ошибка. "B.Foo()": виртуальные и абстрактные члены не могут быть закрытыми.
- Нужен модификатор доступа public.
2. Ошибка. Не удается неявно преобразовать тип "A" в "B". 
Существует явное преобразование (возможно, пропущено приведение типов).
B obj1 = new A(); /* заменить на */ A obj1 = new A();
3. Вывод консоли.
Class A
Class B
Class B
====================================================================================================

Вопрос 2
--------
Есть следующая структура:
public struct S : IDisposable
{
    private bool dispose;
    public void Dispose()
    {
        dispose = true;
    }
    public bool GetDispose()
    {
        return dispose;
    }
}

Что будет выведено в следующем случае
-------------------------------------
var s = new S();
using (s)
{
    Console.WriteLine(s.GetDispose());
}
Console.WriteLine(s.GetDispose());

Варианты ответов
----------------
true, true
true, false
false, true
false, false

Ответ
-----
false, false
====================================================================================================

Вопрос 3
--------
Есть следующий код:
List<Action> actions = new List<Action>();
for(var count=0; count<10; count++)
{
    actions.Add(() => Console.WriteLine(count));
}
foreach(var action in actions)
{
    action();
}

Варианты ответов
----------------
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
10, 10, 10, 10, 10, 10, 10, 10, 10, 10
Код сгенерирует исключение
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

Ответ
-----
10, 10, 10, 10, 10, 10, 10, 10, 10, 10
====================================================================================================

Вопрос 4
--------
Что будет выведено на консоль в результате следующих операций:
int i = 1;
object obj = i;
++i;
Console.WriteLine(i);
Console.WriteLine(obj);
Console.WriteLine((short)obj);

Ответ
-----
2
1
Possible System.InvalidCastException -> Console.WriteLine((short)obj);
====================================================================================================

Вопрос 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
----------------------------------------------------------------------------------------------------

Ответ
-----
true, false, true, true
====================================================================================================

Вопрос 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" бесконечное число раз

Ответ
-----
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
{
    public new void Print2()
    {
        Console.Write("C");
    }
}

К какому результату приведет выполнение следующего кода:
--------------------------------------------------------
var c = new C();
A a = c;
 
a.Print2();
a.Print1();
c.Print2();

Варианты ответов:
-----------------
ABC
CCC
ACC
AAC

Ответ
-----
ABC
====================================================================================================

Вопрос 22.
Вопрос 23.
Вопрос 24.
Вопрос 25.
Вопрос 26.
Вопрос 27.
Вопрос 28.
Вопрос 29.
Классы: наследование и полиморфизм.
Типы данных: значимые и ссылочные.
====================================================================================================

About

Job interview for junior/middle developer position.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages