首页 文章

每个优秀的.NET开发人员应该能够回答的问题? [关闭]

提问于
浏览
246

我的公司即将雇用 .NET developers . 我们在各种.NET平台上工作:ASP.NET,Compact Framework,Windowsforms,Web Services . 我想编制好的问题列表/目录,这是一种最低标准,以确定申请人是否有经验 . 所以,我的问题是:

What questions 你觉得应该好 .NET programmer be able to respond

为了看到自己的赤字在哪里(有很多......),我也会把它视为自己的 checklist .

alt text

*更新:它想明确我们不仅仅测试.NET知识,解决问题的能力和一般编程技能对我们来说更为重要 .

25 回答

  • 3

    这是一些我习惯于过滤程序员申请C#程序员的工作:

    引用类型和值类型之间有什么区别?

    解释IDisposable接口,C#语言构造需要它以及如何实现它 .

    如果将null作为参数传递给具有不允许该参数为空的合约的方法,则会抛出哪个异常?

  • 4

    “哪个ASP:你会在 生产环境 中使用什么控件?为什么?”

    这将告诉你你的主题是否曾经实际构建和维护一个大型项目足够长的时间被DataGrids和LinkButton烧毁,或者他是否还在拖拽/拖放“21天自学”阶段 .

    (答案是asp:Repeater,asp:PlaceHolder,asp:Literal和asp:Content)

  • 10

    什么是线程?

    什么是GC?

  • 66

    了解参考和 Value 类型之间的区别 .

    知道事件存储为硬引用(即记得取消注册事件或应用程序将泄漏内存) .

    字符串是不可变的 .

  • 2

    Martin Fowler prefers design skills over platform knowledge . 另一方面,您可以提出一个问题,它将显示设计模式和.NET平台的知识,如下所示:

    • 您知道的名称设计模式和原则以及如何在.NET Framework中使用它们?
  • 42

    我建议询问他们定期阅读的博客以及他们所做过的个人编程项目,因为这将显示出学习的意愿和对编程的热情 .

  • 2

    基本问题包括:

    我认为通常有助于您的申请人完成一个简单的编码练习,例如:

    • 编写自己的链表类而不使用内置类 .

    • 编写自己的哈希表类而不使用内置类 .

    • 编写一个表示二叉树的类 . 编写一个遍历树的所有节点的方法 .

    • 编写一种方法,在不使用内置方法的情况下对数组执行二进制搜索 .

    • 为博客绘制数据库架构 . 每个用户只有一个博客,每个博客有很多类别,每个类别有很多帖子,每个帖子可以属于多个类别 . 请求您的申请人撰写查询以提取具体信息 .

    接下来,寻找具体的技术诀窍:

    • (事件处理程序)使用自定义事件处理程序创建一个类,创建另一个挂钩到自定义事件处理程序的类 .

    • (XML)加载XML文档并选择具有属性x,y和z的所有节点 .

    • (函数式编程)创建一个接受另一个函数作为参数的函数 . Map 或折叠功能对此非常有用 .

    • (反射)编写一个函数,确定一个类是否具有特定属性 .

    • (Regex)编写一个正则表达式,删除HTML块中的所有标记 .

    对于熟练的C#程序员来说,这些都不是特别困难的问题,他们应该让您对申请人的特殊优势有所了解 . 您可能还想使用一些使用特定设计模式的问题/代码示例 .

    [Edit for clarification]

    似乎很多人不明白为什么我会问这些类型的问题 . 让我谈谈几个民族的评论(我不是直接引用,而是代言):


    Q: 最后一次使用挥发物或弱引用的时间是什么时候?

    A: 当我进行技术访谈时,我会看一个人是否理解.NET的高级和低级功能 . Volatiles和弱引用是.NET提供的两个低级功能 - 即使这些功能在实践中不经常使用,这些问题的答案也极具启发性:

    • 对volatile的一个很好的理解表明,一个人理解编译器优化如何改变代码的正确性,线程如何保持共享状态的本地副本,这些副本在任何给定时间都可能不同步,并且最低限度地意识到多线程的一些复杂性码 .

    • 对弱引用的一个很好的理解表明,一个人知道垃圾收集器的私密细节以及它如何决定何时释放内存 . 当然,你可以问候选人“垃圾收集器是如何工作的”,但询问弱引用会得到更好,更周到的回复 .

    .NET是一种相当抽象的语言,但明星开发人员几乎总是对CLR有深刻的理解以及.NET运行时的低级细节 .


    Q: 为什么有人需要实现自己的哈希表或链表?

    A: 我并不是暗示Dictionary类是劣等的,或者人们应该推出自己的哈希表 . 这是一个基本问题,它测试一个人是否对数据结构的了解最少 . 这就是这些问题所测试的内容:最低限度的理解 .

    您将在数据结构101的第一天了解这些哈希表和链接列表 . 如果有人无法从头开始编写哈希表或链表,那么他们的技术知识就会有很大差距 .


    Q: 为什么这些问题如此严重?

    A: 因为这个帖子的 Headers 是"questions every good .NET developer should know" . 每个.NET开发人员都开始编写crud应用程序的职业生涯,并且90%的所有应用程序开发人员都致力于 生产环境 线应用程序 .

    我认为在大多数情况下测试人员对业务线应用程序知识的问题是合适的,除非您正在寻找具有特定利基的开发人员,例如编译器开发,游戏引擎开发,定理证明,图像处理等 . .

  • 1

    我在Scott Hanselmanblog找到了这些列表:

    以下是我认为这些帖子中最重要的问题分为几类 . 我编辑并重新安排了它们 . 幸运的是,对于大多数这些问题,Stack Overflow已经有了一个很好的答案 . 只需按照链接(我会尽快更新它们) .

    平台无关的.NET问题

    ASP.NET

  • 2

    这可能不是你想听到的,但我建议不要关注狭隘的技术,而应关注一般编程和解决问题的技巧 . 坚实的开发人员可以快速学习您希望他们做的事情 .

    例如,我不是Compact Framework的人,所以如果你走向那个方向,我可能会失败 . 但如果我需要使用它,我可以做一些研究并直接进入 .

    乔尔的书,Smart and Gets Things Done,对招聘开发者有很好的建议,并且有很多有关要问的问题 . 我强烈推荐它 .

  • 0

    我想如果我正在采访有LINQ经验的人,我可能只是要求他们解释LINQ . 如果他们可以解释延迟执行,流式传输,IEnumerable / IEnumerator接口,foreach,迭代器块,表达式树(无论如何),那么他们可以应对其余的 . (不可否认,他们可能是"ok"开发人员,而不是"get" LINQ - 我声称知道足够的LINQ来制作这是一个公平的问题 . )

    在过去,我已经问了几个已经列出的问题,还有一些问题:

    • 参考和值类型之间的差异

    • 按引用传递vs按值传递

    • IDisposable和终结者

    • 字符串,不变性,字符编码

    • 浮点

    • 代表

    • 泛型

    • 可以为空的类型

  • 34

    我和那些正在寻找解决问题能力的人在一起,而不是那些你可以从“101顶级.NET面试Q和As”中查找和记忆的东西 .

    仅仅举个例子,我倾向于“知道”我每天需要使用的东西 . 我倾向于忘记(后来不得不重新查看)我很少使用的东西 .

    如果你想在面试中绊倒我,那将非常容易 .

    尽管如此,我已经构建了大量的基础架构,并为其WinForms和ASP.NET版本使用相同的Business Objects和Data层进行了编码,我们的代码库非常强大且可重用,足以让我们能够以不同的方式支持和开发20配置的网站版本,以及越来越多的(目前为5个)WinForms应用程序......

    ......有两个开发团队 .

    我曾经在一个团队中担任技术主管,我的工作涉及很多招聘和面试 . 我最大的错误就是雇佣了一个比我们所有其他人都更了解我们使用的技术的人,包括我,我认为自己是一名专家 . 他知道一切......

    ...除了如何编写符合要求的代码,或者除了他自己以外的任何人都可以理解的代码 . 当我最终说服总理不续签 Contract 时,他所写的每一件事都必须改写 .

    明智地构建你的面试......

  • 135

    Jon Skeet是谁?

  • 171

    我被问到的好问题是

    • 您认为.NET的优点是什么?

    • 您认为.NET有什么不好?

    看看候选人会想出什么会很有趣,你肯定会学到很多关于他/她如何使用框架的知识 .