了解更多关于.NET如何工作的信息。

18

我刚接完一个快速的电话面试,面试官问了我几个问题,例如:

  • C#是如何工作的?
  • CLR是什么以及它有什么作用?
  • C#代码会转化成什么?

除了CLR问题(我回答得非常模糊),我不知道其他问题的答案。还有一些与.NET相关的问题,但我也不记得答案了。

我承认我的知识更多是高层次的,但我感觉我对.NET的工作原理有了基本的了解。无论如何,我通过了第二次面试,但他说我“需要在下一次面试前复习一下.NET的工作原理”。

那么……我不太确定该怎么做……有什么建议吗?

我想我还应该提一下,我已经毕业有两年了,并且自那以后一直在专业地构建ASP.NET Web应用程序。在那之前,我没有任何.NET经验。


1
如果你已经有两年的实际项目工作经验,但你的雇主因为你不能背诵理论而犹豫不决,那么他显然是个白痴。 - Sergio Tapia
2
这是一个面试问题。你还有什么其他方法(快速)筛选出不合适的人选?我不同意“在实际项目上工作了两年”就自动符合职位要求的说法。 - Kirk Woll
6
我宁愿选择经验胜过理论。 - Anton
1
@Kirk:当然不是,因为一个专业人士无法记住CLR的哪个版本在哪个子文件夹下导出特定文件而自动拒绝他是愚蠢的。但是,如果开发人员不能说出.NET的作用...那就像C++程序员不知道头文件是什么一样。 - Sergio Tapia
1
@Steven:关于回答那个问题的帮助,请参考以下链接:http://en.wikipedia.org/wiki/Big_O_notation,http://en.wikipedia.org/wiki/Sorting_algorithm。 - Merlyn Morgan-Graham
显示剩余4条评论
6个回答

33
这篇维基百科文章可以帮助您了解这三个问题:.NET Framework

alt text


3
感谢您花时间发布图表,而不是通常的答案。+1 - Dalbir Singh

10

我推荐CLR via C#这本书,它是一本很棒的书籍,可以准确地展示C#代码在“引擎盖下”是如何工作的。


1
我赞同这个建议。作为一名优秀的开发人员,你不必理解CLR内部发生的事情,但这是有趣的内容,如果你开始处理更棘手的问题并想知道为什么事情会表现出某种行为,那么这些知识会派上用场。我的猜测是面试官试图衡量被面试者自我导向兴趣的水平,并(考虑到下一次面试的后续建议)评估他能多快地学习新东西。 - Dan Bryant
@Dan Bryant:请阅读此文:http://www.joelonsoftware.com/articles/LeakyAbstractions.html - Jeroen
1
@Jeroen,一篇经典的文章。:) 事实是,我们都在某个抽象层次上工作,只有在感兴趣或被迫为了诊断某些特别棘手的问题而深入挖掘。有无数的层次,但没有足够的时间去理解它们。当然,现在如果有一个超出你理解范围的棘手问题,你总可以在SO上发布问题,肯定会有人已经穿过必要的黑暗隧道找到答案。只要你知道足够描述问题的信息。 - Dan Bryant
在我看来,你永远不可能对自己使用的技术了解得足够多。因此,我总是想要深入挖掘。 - Jeroen

6

逐个回答这些问题...

C#是如何工作的?

我会问面试官他具体指的是什么 - 他想要了解C#的特性,例如属性事件委托吗?他想知道人们如何为C#开发?他想与C/C++进行比较吗?这是一个含糊的问题,有许多可能的答案。

CLR是什么,它的作用是什么?

公共语言运行库是负责执行.NET字节码(在CIL中)的虚拟机。它是.NET版本的Java虚拟机(JVM)。

C#代码转换成什么?

C#被编译成公共中间语言,以前被称为MSIL。它是一种字节码类型。为了能够查看它并将其转换回.NET语言,您可以使用像.NET反编译器这样的工具来查看CIL代码以及它在C#、VB.NET等中的样子。


1
@Aristos 我不同意,如果问题不清楚,就要求更多信息。 - Forrest Marvez

2
我的最爱比喻/比拟就像开车一样,你不需要知道引擎是如何工作的(水泵、汽缸、火花塞)...为了驾驶汽车,但如果你确实知道这些额外的细节,它会帮助你更好地驾驶汽车,并能够真正理解/诊断您可能遇到的一些问题...
编写asp.net网站时,您不需要了解CLR的许多知识,但是如果您深入了解CLR,您可能会改变编写某些代码的方式,以使其运行更快。

-1

-1

测试的初衷是好的,但如果没有实际经验来支持知识,它们几乎没有任何用处。这就像阅读如何骑自行车一样。除非你真正尝试骑自行车,否则阅读如何骑自行车其实没有什么价值。当然,除非你被要求在如何骑自行车的知识上进行测试。 - Chuck Conway
我不同意,证书只是API测试,经验是你的老板需要完成的任务,这在很大程度上是特定于他的应用程序,并且在下一次面试中没有用处。 - GenEric35
我不同意你的观点@GenEric...除非你只是一个理论人,只是为了教学而阅读,而不是在实际项目中工作。 - Nick Kahn
@Nisar,目标是充分利用API,即.Net框架,并按照其预期使用。否则,根据我的经验,真实世界的项目往往由迷失在框架中的菜鸟编写,制造各种装置来替换已经存在的成员资格、全球化、日志记录、缓存、单元测试、部署最佳实践等。真实世界经验相关的情况是如果您在一个非常普遍的领域(电子商务)工作,并且知识都从一份工作中重复使用到另一份工作,否则了解API可以让您更快地适应。 - GenEric35

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接