我应该拥有哪些C#知识?

Ant*_*ony 28 c#

一个非常开放的问题.在过去的5个月里,我一直在使用C#进行编程,完成我成功完成的小项目.

今天我去接受C#角色的采访.第一个问题是'告诉我关于拳击'.根据我的经验,我不知道这个人是什么意思.毋庸置疑,采访并不顺利.其他问题是"为什么没有推荐使用ArrayListint","告诉我你所知道的关于线程"等

我真的不希望这种情况再发生,所以我打算花一些时间在C#上阅读(和练习).我知道最好的学习方法是通过编码,但编码不会真正帮助我回答有关'拳击'的问题.

我不是要求你回答上述技术问题.事实上,我现在知道了他们的回答,因为我在采访后直接去了谷歌,这就是我如何意识到我的C#知识有限.

我的问题是:在您看来,C#开发人员应该具备哪些知识?理想情况下,如果你能对它进行分类会更好(任何人都应该拥有的基本知识,高级知识,专家知识等).无需详细说明.对你列出的任何内容进行研究对我来说都是一个很好的练习.

Joe*_*orn 12

我希望有人去专业的C#工作了解:

  • 泛型和通用集合
  • 接口(一般)
  • 接口(具体),即 -
    • IDisposable:如何将它集成到语言中以及为什么
    • IEnumerable:包括常见的扩展方法,迭代器块和延迟执行
  • .Net中的序列化概述(可能没有完成它,但了解它是什么,并知道在命名空间heirarchy和文档中的位置)
  • .Net中的Xml概述(与序列化相同)
  • 线程概念概述(与xml /序列化相同).用于理解为什么大多数线程安全的集合不是的加分点.
  • 在至少一个项目中使用过匿名委托/ lambdas,因此也有关于闭包的基本概念.
  • 从winforms,wpf,webforms或MVC中的至少一个中轻松解释一些基本概念
  • 能够回答一些关于.Net BCL中特定公共类的简单问题:即来自System.Data(想想参数化查询!)和System.IO(文件流,路径).
  • 垃圾收集:何时应该调用GC.Collect(提示:几乎从不)以及为什么


And*_*are 10

这是一个很好的列表:伟大的.NET开发人员应该知道什么.

  • 我注意到这是2005年发布的.它仍然相关吗? (4认同)

sch*_*har 8

我很久以前在学校时的亲身经历.

我去看看我父亲在银行工作.那时,他的大部分时间都在处理账目并确保每件事都有效.我看到的是他试图计算/计算大数和计算(基本加法/乘法...).

在注意到他之后,我问他:爸爸,如果你所要做的只是基本的补充和乘法,为什么还要学习直到毕业?

他的回答是:虽然你不必使用你所获得的所有知识,但这些知识可以帮助你做出学问的决定.

提出你的问题:虽然你不必使用整套概念,但知道它们存在会帮助你在编码时做出正确的决定.

我和其他人发布的建议是每天尝试花一些时间在stackoverflow上.

祝好运.


kyo*_*ryu 5

一个好的面试官不打算用琐事烧烤你.这就是我们拥有Google的原因.一个好的面试官会找到你不认识的地方,并在那里问你问题,因为这是找到你面对的事情时最好的地方.

我可以给面试的最好建议是不要太担心技术琐事.相反,在面试中,专注于解决问题的技巧.如果你不知道什么,不要试图隐藏它,只是承认它.如果你认为你知道,可以说"我不确定,但我认为就是这样." 也不要让人感到沮丧 - 在这一点上,通常面试官会给你一个提示.这不仅仅是给你答案,而是测试的另一部分 - 看看,如果在正确的方向上轻推,你可以从那里推断出来.

对于拳击/ ArrayList/int问题,如果我正在采访你并且你不了解拳击,我会给你一个拳击的基本描述.然后我会问你,知道我刚刚告诉你的内容,为什么你会认为在ArrayList中使用int可能是一个坏主意.

在任何访谈中都会有一件事情是关注要求,期望的结果,边界条件或边缘情况.由于大多数编程面试问题属于"编写此方法"类别,请确保您获得以下正确答案:

1)方法的输入2)方法的预期输出3)边界和边缘情况.

这听起来很荒谬,但令人惊讶的是,有多少开发人员,即使是有经验的开发人员,也不会费心思考这些事情.代码解决了一个问题 - 如果您不能正确理解问题,则无法正确解决问题.