Собеседовался на Junior первый раз - C#
Формулировка задачи:
Всем привет.
Задали вопрос (человек из плюсов):
Существует класс
Человек
, от него наследуются (интервьюер не правильно стрелки нарисовал, поправил) классыСпортсмен
,Водитель
,Женщина
. Как мне понять что их родитель классЧеловек
, и при добавлении новых экземпляров уметь использовать их, понимая что они наследуются от него. Я говорю что через рефлексию, которая базируется на типе Type. В голове рисую вроде instance.GetType().BaseType и т.д. А работать с ними через реализацию интерфейсов (контракты). Про возможность апкаста ничего не говорил (приведение к базовому типу, интерфейсу), что бы не накидали вопросов. Мне говорят: "нет, зачем это использовать. Не правильно, надо другим способом." Думал... не знаю, не помню другого. Потом на листке бумаги он написал слово visitor (что является паттерном). И говорит, "я это хотел услышать". Можете разъяснить что имелось ввиду.Думаю что можно спросить у человека на Junior, при том что знаю нюанс - структуры могут быть на куче (хотя многие пишут не правильно даже в мануалах). При создании экземпляра класса на куче создается экземпляр и объект (разные вещи). Невозможно перехватить переполнение стека потока. etc.
Решение задачи: «Собеседовался на Junior первый раз»
textual
Листинг программы
using System; using System.Collections.Generic; namespace ConsoleApplication2 { public class Man { public virtual void Identification() { Console.WriteLine("This is Man"); } } public class Athlete : Man { public override void Identification() { Console.WriteLine("This is Athlete"); } } public class Driver : Man { public override void Identification() { Console.WriteLine("This is Driver"); } } public class Female : Man { public override void Identification() { Console.WriteLine("This is Female"); } } class Program { static void Main(string[] args) { var people = new List<Man> {new Man(), new Athlete(), new Driver(), new Female()}; people.ForEach(x=>x.Identification()); Console.ReadLine(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д