В какой момент вы должны понимать ссылки? - PullRequest
15 голосов
/ 07 мая 2010

Я задал такой вопрос в интервью для программиста начального уровня:

var instance1 = new MyObject{Value = "hello"}
var instance2 = instance1;

instance1.Value = "bye";

Console.WriteLine(instance1.Value);
Console.WriteLine(instance2.Value);

Заявитель ответил «привет», «пока» в качестве вывода.

Некоторые из моих коллег сказали, что «указатели» уже не так важны или что этот вопрос не является реальным судьей способностей.

Они правы?

РЕДАКТИРОВАТЬ: Было отмечено, что MyObject мог быть структура. Это хороший момент. Однако я не опубликовал полный вопрос, который дал респонденту. В полном вопросе был класс, который был явно классом (а не структурой). здесь .

Ответы [ 13 ]

1 голос
/ 07 мая 2010

Честно говоря, я окончил полный курс курсов Microsoft около 2 месяцев назад. По общему признанию, я программировал некоторое время дольше, но я бы сказал, что в C # я работаю около 2 лет.

Я точно знаю, что эти вопросы возникали несколько раз во время моего обучения, и было абсолютно, на 100% критично, чтобы все в классе знали это. На самом деле, я думаю, что в Microsoft Exam даже есть некоторые из них.

С точки зрения студента (хотя и с точки зрения студентов высокого уровня) каждый должен знать это. И если они этого не делают, то они не знают достаточно базового программирования (или логики), чтобы далеко продвинуться в программировании.

Как примечание: во время второго собеседования моя текущая работа прошла небольшой тест. Они заставили меня написать приложение для тестирования простых чисел, факториалов, написать свой собственный LastIndexOf и еще одно, которое я не могу вспомнить до предела.

Я думаю, логика является наиболее важной в программировании. И это больше, чем знание языка C #, это более логичный вопрос.

1 голос
/ 07 мая 2010

Прохождение этого вопроса мало говорит о чьих-либо способностях, но провал говорит о многом нехватки человека . Понимание семантики «ссылка - значение» * фундаментально для понимания того, как программировать.

Если у человека неправильная ментальная модель о том, как программа будет вести себя, в лучшем случае он сможет заниматься «программированием случайно». Когда что-то идет не так, он не может понять, почему что-то пошло не так.

0 голосов
/ 07 мая 2010

У нас есть список технических вопросов, которые задаются всем кандидатам на разработку в процессе собеседования. Из этих вопросов необходимо правильно ответить на определенное число, чтобы кандидат был рассмотрен, и понимание ссылок на C # было бы одним из вопросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...