小编典典

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

all

我的公司即将招聘 .NET 开发人员 。我们在各种 .NET 平台上工作:ASP.NET、Compact
Framework、Windowsforms、Web 服务。我想编制一份好问题的清单/目录,这是一种最低标准,看看申请人是否有经验。所以,我的问题是:

*您认为优秀的 *.NET 程序员应该能够回答 哪些问题

我也将其视为我自己的 清单 ,以便了解我自己的缺陷在哪里 (有很多......)

替代文字

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


阅读 66

收藏
2022-05-25

共1个答案

小编典典

基本问题包括:

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

  • 在不使用内置类的情况下编写自己的链表类。
  • 在不使用内置类的情况下编写自己的哈希表类。
  • 编写一个表示二叉树的类。编写一个遍历树的所有节点的方法。
  • 编写一个方法以在不使用内置方法的情况下对数组执行二进制搜索。
  • 为博客绘制数据库模式。每个用户只有一个博客,每个博客有很多类别,每个类别有很多帖子,每个帖子可以属于多个类别。要求您的申请人编写查询以提取特定信息。

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

  • (事件处理程序)使用自定义事件处理程序创建一个类,创建另一个挂钩到自定义事件处理程序的类。
  • (XML) 加载一个 XML 文档并选择所有具有 x、y 和 z 属性的节点。
  • (函数式编程)创建一个接受另一个函数作为参数的函数。地图或折叠功能对此非常有用。
  • (反思)编写一个函数来确定一个类是否具有特定属性。
  • (正则表达式)编写一个从 HTML 块中删除所有标签的正则表达式。

对于一个熟练的 C#
程序员来说,这些都不是特别难回答的问题,它们应该让你很好地了解你的申请者的特殊优势。您可能还想处理一些使用特定设计模式的问题/代码示例。

[编辑澄清]

似乎很多人不明白我为什么要问这些类型的问题。让我谈谈一些人的评论(我不是直接引用,而是转述):


问: 最后一次有人使用 volatile 或弱引用是什么时候?

答: 当我进行技术面试时,我会看一个人是否了解 .NET 的高级 低级特性。易失性和弱引用是 .NET
提供的两个低级特性——即使这些特性在实践中不经常使用,这些问题的答案也非常具有启发性:

  • 对 volatile 的良好理解表明,一个人了解编译器优化如何改变代码的正确性,线程如何保留在任何给定时间可能不同步的共享状态的本地副本,并且对多线程代码的某些复杂性知之甚少.

  • 对弱引用的良好理解表明人们了解垃圾收集器的内部细节以及它如何决定何时释放内存。当然,你可以问候选人“垃圾收集器是如何工作的”,但询问弱引用会得到更好、更周到的回答。

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


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

答: 我并不是说 Dictionary 类是劣等的,或者人们应该滚动他们自己的哈希表。这是一个基本问题,它测试一个人是否对数据结构有 最低限度的
了解。这就是这些问题所要测试的:最低限度的理解。

你在数据结构 101 的第一天就了解了这些哈希表和链表。如果有人不能从头开始编写哈希表或链表,那么他们的技术知识就有 很大 的差距。


问: 为什么这些问题如此粗俗?

答: 因为这个帖子的标题是“每个优秀的 .NET 开发人员都应该知道的问题”。每个 .NET 开发人员的职业生涯都是从编写 crud
应用程序开始的,而 90% 的应用程序开发人员都与业务线应用程序有关。

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

2022-05-25