Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 面试问题:IDisposable很难理解吗?_.net - Fatal编程技术网

.net 面试问题:IDisposable很难理解吗?

.net 面试问题:IDisposable很难理解吗?,.net,.net,最近我采访了很多.NET程序员,但我没有遇到一个知道IDisposable是什么或它的用途的人。期望有4-6年工作经验的人知道这一点真的不合理吗 我不这么认为。如果您不了解IDisposable是什么,那么如何正确理解何时使用using语句 我的猜测是,很多人知道在使用语句时使用特定的代码,但不知道为什么这很可怕 我很惊讶IDisposable的知识太少了。每当您有一个必须关闭的资源,并且您没有使用using语句时,您就必须使用IDisposable。不,对不起。如果他们不知道IDisposab

最近我采访了很多.NET程序员,但我没有遇到一个知道IDisposable是什么或它的用途的人。期望有4-6年工作经验的人知道这一点真的不合理吗

我不这么认为。如果您不了解IDisposable是什么,那么如何正确理解何时使用
using
语句


我的猜测是,很多人知道在使用语句时使用特定的代码,但不知道为什么这很可怕

我很惊讶IDisposable的知识太少了。每当您有一个必须关闭的资源,并且您没有使用using语句时,您就必须使用IDisposable。

不,对不起。如果他们不知道
IDisposable
,他们就不了解.NET中的对象生存期,因此可以安全地假设他们不知道
GC
是如何工作的。对于声称拥有4-6年经验的人来说,他要么是一个“拖放式”开发人员,要么是一个骗子。不管怎样,都没有人雇用。

今天刚参加了一次工作面试,我真希望有人问我这样的问题!所有程序员都应该知道IDisposable。由于
使用
语句,它可以说是需要理解的最重要的接口


我觉得一个有4-6年经验的程序员不知道这一点是不可想象的。

我希望有这种经验的开发人员知道IDisposable。然而,如果你想深入了解所有细节,这是一个复杂的问题。我不希望所有的开发者都能在那篇文章中涵盖所有血淋淋的细节

是的,这是不合理的。大学年龄+3到5岁的程序员(总是首选)很少编写纯Win32代码来了解“非托管资源”是什么样子的。Java在他们的大学生活中从未出现过,Java是当今的教学语言,一种没有相同模式的语言

有许多.NET程序员多年来一直在编写.NET代码,并且在发布生产代码时从未处理过任何东西。我推荐其他面试问题:

  • 为什么Java不需要IDisposable模式
  • 为什么.NET程序员从来没有处理过任何东西
它测试的是洞察力,而不是死记硬背的编程。也许更适合第二次面试?

期望有人理解
IDisposable
,这并不是不合理的,但我也注意到,在堆栈溢出中,
IDisposable
主题问题在出现频率上仅次于Linq问题。很明显,真正理解这一点的程序员太少了,我真的不知道为什么;这不可能是因为他们都不合格,我认为这只是因为教育太少了

对于那些来自德尔福或C++的人,过去不得不做手工资源管理,这是显而易见的,但是对于那些在java或Python甚至VB学习的人来说,不是那么多。如果您忘记
Dispose
对象,您将永远不会收到编译器警告;如果你像.NET编程那样自学成才,那么你可能会很容易地坚持多年而没有意识到这实际上是一个问题

因此,如果他们不理解“代码> IDISPABLE E/CODE”的含义和正确用法,我就不会立即在面试中失败,但我会认为它是一个红旗,就像其他很多东西一样。这并不像(例如)不知道如何遍历树结构或无法编写FizzBuzz那么糟糕

我认为这是一个很好的问题,如果有人以前从未听说过,我可能会给出一个非常快速的解释,然后问一个后续问题:“.NET垃圾收集器只能管理内存
IDisposable
允许您显式释放其他类型的资源。你能想到属于这一类的资源吗?“如果他们也不能回答这个问题,那我就担心了,因为这不仅意味着对.NET框架中特定接口的无知,而且意味着对资源管理的无知。”。即使你在学校里学过Java,你也应该明白你需要关闭你打开的文件和连接

另一个危险信号,可能更大,是如果有人说您需要使用块将每个
IDisposable
放在
中,但无法解释原因或列出规则的任何异常(即工厂方法)。这对我来说更糟,因为这可能是一个货物崇拜编程倾向的迹象


所以,继续问这个问题,但也许可以缓和你的回答。如果有人不能回答,不要立即结束面试。考虑到.NET程序员从不需要学习这一点来编写功能(尽管是BUGGY)软件。

货物崇拜编程无处不在。我们真的不应该对.NET的出现感到惊讶。哦,别误会,我对它一点也不感到惊讶。有时候,当你看着代码,不得不问自己“他们真的想这么做吗,还是这么做了,因为他们不知道不这么做?”@Oded,我不得不大笑-没有很多人知道什么是货物崇拜…+1:我认识一个不知道IDisposable的开发人员,但他的代码中到处都是语句。当我问他为什么他只是说“如果我不把它放在那里,CodeRush会产生扭曲”。实际上,你必须使用一个实现IDisposable的类。由于我所见过或使用过的大多数一次性软件都是在其终结器中自行处理的,所以有可能忘记对其进行处理(),永远不会注意到,也不会有任何问题。我承认,一个主要经验来自其他语言的开发人员可能没有遇到过IDisposable,但这也意味着他们(还)不是一个称职的.NET开发人员