DamianMorozov/Job-interview-for-junior-developer
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
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 0
No packages published