我在一个入门级程序员的采访中问过这样的问题:
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可能是一个结构.这是一个好点.但是,我没有发布我给受访者的完整问题.完整的问题有一个类,显然是一个类(不是结构).它可以在这里找到.
Eri*_*ert 16
我的一些同事说"指针"不再那么重要了
理解引用语义和值语义之间的区别至关重要.它是语言和类型系统设计的基础.了解引用可以用指针实现与入门级C#程序员并不特别相关; 理解通过引用复制和按值复制之间的区别是非常重要的.
或者这个问题不是真正的能力判断.
那取决于你试图测试的能力.如果能够快速准确地预测琐碎的C#程序的行为与你的工作相关,那么我会说这是一个很好的能力测试.
如果能够确定何时没有足够的信息来解决问题,并提出正确的问题以获取该信息,那么这些能力是相关的,那么是的,这是对相关能力的判断.(一个好的候选者会要求查看myObject类型和成员Value的实现,而不是假设myObject是一个类,而Value是string类型的可变属性.)
我说所有这些能力都是相关的,这对于入门级职位来说是一个合理的第一个问题.
在你离开大学之前很久你就应该理解指针和参考.
我写了上面的内容之前注意到这个问题被标记为C#.
您无需了解有关C#中程序指针的任何信息.也就是说,我坚持一般意义上的专业程序员的原始陈述.
此外,正如其他人所说,这个问题实际上是关于参考.你真的必须理解成为C#程序员的引用.