你应该在什么时候理解参考文献?

Vac*_*ano 14 c# pointers

我在一个入门级程序员的采访中问过这样的问题:

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

instance1.Value = "bye";

Console.WriteLine(instance1.Value);
Console.WriteLine(instance2.Value);
Run Code Online (Sandbox Code Playgroud)

申请人回答"你好","再见"作为输出.

我的一些同事说,"指针"不再重要,或者这个问题不是真正的能力判断.

他们是对的吗?

编辑:有人指出MyObject可能是一个结构.这是一个好点.但是,我没有发布我给受访者的完整问题.完整的问题有一个类,显然是一个类(不是结构).它可以在这里找到.

spe*_*der 18

他们绝对错了.此外,这是一个关于引用的问题,而不是指针.如果你没有得到它,你就不值得写C#的有偿工作.


Eri*_*ert 16

我的一些同事说"指针"不再那么重要了

理解引用语义和值语义之间的区别至关重要.它是语言和类型系统设计的基础.了解引用可以用指针实现与入门级C#程序员并不特别相关; 理解通过引用复制和按值复制之间的区别是非常重要的.

或者这个问题不是真正的能力判断.

那取决于你试图测试的能力.如果能够快速准确地预测琐碎的C#程序的行为与你的工作相关,那么我会说这是一个很好的能力测试.

如果能够确定何时没有足够的信息来解决问题,并提出正确的问题以获取该信息,那么这些能力是相关的,那么是的,这是对相关能力的判断.(一个好的候选者会要求查看myObject类型和成员Value的实现,而不是假设myObject是一个类,而Value是string类型的可变属性.)

我说所有这些能力都是相关的,这对于入门级职位来说是一个合理的第一个问题.


Wil*_*den 10

这是非常基本的东西.问题甚至不是关于指针,它是关于C#中的引用语义,这是该语言最重要的方面之一.任何自称为C#程序员的人都必须明白这一点.


Igb*_*man 5

在你离开大学之前很久你就应该理解指针参考.

我写了上面的内容之前注意到这个问题被标记为C#.

您无需了解有关C#中程序指针的任何信息.也就是说,我坚持一般意义上的专业程序员的原始陈述.

此外,正如其他人所说,这个问题实际上是关于参考.你真的必须理解成为C#程序员的引用.

  • @dtb指针是编程和计算机工作原理的基础,即使您选择的语言缺乏它们.我甚至不会考虑聘请任何不理解指针的人. (5认同)
  • @Matt Greer:如果有人可以完美地解释传值,传递参考值和传递参考之间的区别,那么即使他/她不知道,我也会雇佣他/她什么`1U <<((*(uint*)(&f)>> 23) - 126)`做. (3认同)