寻找一些好的C#面试问题

时间:2010-04-19 22:58:21

标签: c#

我不想问候选人questions,而是给他们几个问题来解决。这样做的原因是我看到人们对理论非常出色,但是当面对现实世界的c#问题时,却无法破解它。

这些c#问题应该足够简单,解决时间不会超过1-20分钟,但又足够复杂,以至于我可以清除无法编码的候选人。

现在,我通常会要求申请人撤消字符串并从列表中删除重复项。仅此一项就可以清除大量人员。

我可以使用的其他任何例子吗?

编辑:我应该提到这是针对标准的c#gig,他们将编写业务代码而不是找到实现链表的最佳方式。

8 个答案:

答案 0 :(得分:24)

我喜欢挑选一些我实际上必须解决的简单问题;它与工作没有多大关系。

当我使用VBScript时,我会问大学考生如何编写简化版的DateDiff,因为这样做是我在微软工作的第一天。更高级的候选者我会问如何构建一个跟踪32位句柄和相关的64位指针之间关系的设备,这也是我在处理VBScript时必须做的事情。

最近,我倾向于询问有关树操作算法的问题,因为编译器完全是关于树操作的。或者关于如何使用monad对新运算符进行编码,因为这就是LINQ的工作原理。

我的观点并不是你应该在这些领域使用问题,我的观点是,你必须遇到的问题必须在日常工作中解决。向候选人询问这些问题 - 然后你将了解他们如何解决现实问题,并且他们将了解如果他们与你一起工作会遇到什么样的问题。

答案 1 :(得分:19)

不要询问类库的知识或语言的模糊角落(不安全,动态,......);聪明的人可以选择这些或查找它们。

我会要求设计一个类层次结构来表示现实世界(车辆,动物......)。这通常可以冲掉那些没有物体的人。让他们也使用接口。也让他们扭转一个字符串 - 老人没有伤害,但金子

答案 2 :(得分:15)

我同意你的观点,有多少人声称自己有经验,而且你发现他们所做的一切都是在框内阅读,这是令人惊讶的......

我不知道对C#的测试是否像它最初看起来一样有价值...确定你可以让他们描述一个他们何时需要使用继承的例子,或者为什么cast可能有性能问题等等。但是这些很容易学习。在给出他们真实的继承实例时,你会惊讶于有多少受访者使用“汽车”或“颜色”给出了这个例子。猜猜他们在某个地方的书里。

在研究这个问题时,当我将开发经验与学习西班牙语进行比较时,它会对我有所帮助。课堂上很短的时间每个人都在动词并且可以对此进行测试...但是没有人说西班牙语。你想要那个声称会讲西班牙语但实际上可以做到的人。

因此,我希望能够更具体地了解其他技术,这些技术将告诉我他们是否走过了成熟的发展道路。如果他们说他们是ASP.Net开发人员,我会问他们简单的问题,但是那些正在路上的问题

示例:给我一个连接字符串可以存在的示例?如果您需要将ID从一个页面传递到另一个页面,您有什么选择?如果页面需要5分钟加载,请告诉我您将如何进行故障排除。如果我的网页上只有一个按钮,我该如何将该按钮居中?告诉我在视图状态会话状态中存储变量之间的区别?

你不需要知道所有事情,但是80%的高级职位面试人员会得到10%的这类问题。 (在70%的电话采访中,你会听到他们谷歌搜索答案 - 好的是这些不是你可以轻松谷歌的问题类型。)

SQL Server大致相同。他们说他们会在SQL Sever开发中给自己评价8或9,但随后得到10%的问题。问题再次是看你是否已经走在磨损的道路上。

示例:如果您有一个客户表和一个订单表,您如何找到没有订单的客户?什么是聚集索引?如果我有一个开发人员表和一个项目表,我将如何设置它以便项目可以有多个开发人员,开发人员可以在多个项目上?

你如何在SQL Server中开发“年”并没有触及这些概念?很高比例的候选人几乎没有得到这些答案! (我猜SQL Server框没有提供信息。)

所以,如果你说你是一个高级别的人,你可以说“大豆联合软件”(我是软件开发人员),但不能说“他hecho eso antes”(我以前做过) ,我认为你不是你声称的高级人物。

现在这告诉你他们是否已经走在了老路上,但如果他们聪明并且具备良好的解决问题的能力,那就不行了。通过大量这些类型的访谈后,我可以告诉您,到完成流程时,您会对获得足够的信息以对这两个问题有强烈的意见感到满意。你可能也会看到,然后给他们一个问题集来解决是不必要的。

答案 3 :(得分:10)

从您自己的某个项目中向他们展示一小段代码或架构图,并要求他们建议如何重构它。即使您最终没有雇用它们,也可能会获得一些有关改进代码的有趣建议。

答案 4 :(得分:6)

在这里建立Eric's和其他答案,但回答作为一个只有这么远的受访者,我在采访中想要的是一种配对编程'测试',你坐下来一起面对屏幕,并谈论现实世界的问题。

我认为会有很多好处:

  • 对于受访者而言,面对面试者而不是面对面试者,可以更容易地思考问题而不是面试。
  • 对于面试官来说,与受访者在查看代码并询问有关问题空间的问题时,可以更深入地了解受访者的思考方式,他们如何处理问题,以及他们如何与他人沟通和互动。

我希望看到一个候选人思考现实世界问题的边缘,即使他们没有完全解决它,而不是让他们在算法测试中得到十分之十,这更为重要和有趣。

答案 5 :(得分:3)

我被问及随后询问受访者的一个问题是“描述如何将这款手机变成一个应用程序”。让他们描述类,它们的属性,方法,接口等。然后询问他们为什么选择以特定方式实现它们。如果他们了解如何编码,它会为您提供一个好主意,并让您深入了解他们如何处理和解决问题。 此外,如果你提出他们如何以不同的方式实施它的建议,它可能会告诉你他们是否愿意接受新的想法,批评,或者他们是否是团队成员。

答案 6 :(得分:3)

温和的算法。

  1. 编写一个方法,如果字符串是回文,则返回true,否则返回false。
  2. 重新实现String.Substring(int,int)方法。
  3. 关于面向对象设计的一些东西。

    1. 设计一个跳棋游戏(即,定义类和一些方法)。

答案 7 :(得分:2)