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

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

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

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

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

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

我喜欢挑选我在某些时候必须解决的简单问题; 它与工作没有多大关系。

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

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

我的观点并不是你应该在这些方面使用问题,我的观点是,你必须遇到的问题必须在日常工作中解决。 向候选人询问这些问题 – 然后你将了解他们如何解决一个现实问题,并且他们将了解如果他们来与你合作会解决他们将要解决的问题。

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

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

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

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

当我看到这个问题时,我将开发经验与学习西class牙语相比较有帮助。 课堂上很短的时间每个人都在动词并且可以对此进行测试…但是没有人说西class牙语。 你想要那个声称会讲西class牙语并且能够真正做到这一点的人。

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

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

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

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

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

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

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

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

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

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

我认为会有很多好处:

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

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

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

一些温和的算法。

  1. 编写一个方法,如果字符串是回文,则返回true,否则返回false。
  2. 重新实现String.Substring(int,int)方法。

关于面向对象设计的一些东西。

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

Fizz Buzz