我最近一直在采访很多.NET程序员,但我还没有遇到过知道IDisposable是什么或者它用于什么的人.期望有4到6年经验的人知道这一点真的不合理吗?
Iga*_*nik 31
不,谢谢.如果他们不知道IDisposable,他们不了解.NET中的对象生命周期,因此可以安全地假设他们不知道如何GC工作.对于声称拥有4  -  6年经验的人来说,他要么是"拖放式"开发人员,要么是骗子.无论哪种方式,没有雇用.
Aar*_*ght 13
期待有人理解并不是没有道理的IDisposable,但我也注意到Stack Overflow上的IDisposable问题 - 主题问题仅次于Linq问题的发生频率.很明显,很少有程序员真正理解他们应该做的一切,而且老实说我不确定为什么; 它不可能是他们都是不合格的,我认为这只是对它的教育太少了.
对于我们这些谁从Delphi或C++来了,不得不做手工资源管理在过去,这是令人眼花缭乱的明显,但对人谁在Java或Python甚至VB了解到,没有这么多.如果忘记Dispose某个对象,你永远不会收到编译器警告; 如果你在.NET编程中自学成才,你可以很容易地多年没有意识到这实际上是一个问题.
因此,考虑到这一点,如果他们不理解其中的含义和正确用法,我不会立即在面试中失败IDisposable,但我认为这是一个红旗,就像许多其他事情一样.它不像(例如)不知道如何遍历树结构或无法编写FizzBuzz那么糟糕.
我认为这是一个很好的问题,如果有人以前从未听说过,我可能会给出一个非常快速的解释,然后提出一个后续问题:".NET垃圾收集器只能管理内存.   IDisposable让你明确免费的其他资源.你能想到任何属于这一类的资源吗?" 如果他们也无法回答这个问题,那么我会担心,因为它不仅表明.NET Framework中的特定接口,而且表示资源管理一般都是无知的.即使你在学校教Java,你也应该明白你需要关闭你打开的文件和连接.
另一个红旗,也许是一个更大的红旗,如果有人说你需要把每一个IDisposable放在一个using区块中但是无法解释为什么或列出规则的任何例外(即工厂方法).这对我来说更糟糕,因为它可能表明了货物崇拜的编程倾向.
所以继续问这个问题,但也许会缓和你的反应.如果有人无法回答,请不要立即结束面试.考虑到.NET程序员实际上从来没有必须学习这个以编写功能(尽管有错误)的软件.
我不这么认为.如果你不明白IDisposable是什么,你怎么能恰当地理解何时使用using声明?  
我的猜测是很多人都知道将某些代码放在使用语句中,但不知道为什么这是相当可怕的.
我希望具有这种经验水平的开发人员能够了解IDisposable.但是,如果您想深入了解所有细节,那么这是一个复杂的主题.几年前乔·达菲写了一篇关于这个主题的相当精细的文章.我不希望所有开发人员能够涵盖该帖子中的所有血腥细节.
| 归档时间: | 
 | 
| 查看次数: | 2450 次 | 
| 最近记录: |