我必须非常迅速地对数十名应届生进行快速评估。我与他们每个人都有30分钟的会面时间(两三天内)。我想用大部分时间来讨论非技术方面的问题。因此,我计划使用10分钟来解决技术问题。他们所有人都面临同样的问题。
他们都已经被录用了(他们是学生),我需要知道的是准备培训的平均水平。
理想情况下,must be progressive
为每个级别设置难度。我将平均,并且我也会对每个问题进行平均。
如果您只有10分钟的时间问10个问题,那么您的前10名是什么?
我必须非常迅速地对数十名应届生进行快速评估。我与他们每个人都有30分钟的会面时间(两三天内)。我想用大部分时间来讨论非技术方面的问题。因此,我计划使用10分钟来解决技术问题。他们所有人都面临同样的问题。
他们都已经被录用了(他们是学生),我需要知道的是准备培训的平均水平。
理想情况下,must be progressive
为每个级别设置难度。我将平均,并且我也会对每个问题进行平均。
如果您只有10分钟的时间问10个问题,那么您的前10名是什么?
Answers:
在此处详细阐述埃里克·利珀特答案的三个问题:
问题1:
在1-10的等级中,您如何评价自己(在此处命名技能)?他们回答[n],介于1到10之间的数字。
问题2:
您可以从[n + 1]级的人那里学到什么?
问题3:
[n-1]级的人可以向您学习什么?
您决定中最重要的因素是确定学生(实际)将自己放置在何处,这三个问题将帮助您快速确定。它还有助于识别可能会受到Dunning-Kruger效应(在任一端)折衷的人,但这是另一个主题。
如果有人可以在SO上找到对此方法的引用并编辑此帖子以包含链接,我将非常感激。
无论如何,那应该在十分钟之内。
随意提出替换建议,此列表有很大的改进空间。
我对学生的经历几乎是从零开始的-我发现人们在大学学到的东西和有用的是两个完全不同的集合。
但是当您有机会与他们交谈时,不接受它是很愚蠢的。
我的假设是,他们的背景几乎没有共同点,因此我在回避特定于语言的问题。我对此的一个例外情况是假设他们已经在网络上做过一些事情,但是如果他们是嵌入式专家或其他专业人士,那么这个问题可能会被等同起来。
您已经要求他们进步,这是我尝试过的,但是如果我对没有共性的假设是正确的,那么对/错问题相对棘手,并且他们的很多能力将来自于他们对更一般的答案的良好程度问题是。
无论如何...
1)您接触过哪些语言和技术?您花了50多个小时来进行实际编程(其中不包括讲座,实验时间等,但包括您单独编码的项目和作业)中的多少个(以及哪些)。
2)描述您编写过的最复杂的程序。是什么使它复杂?
3)您在大学期间曾教过什么(与编程有关),您真的认为自己没有正确理解?如果您认为自己了解所有内容(此时检查他们的成绩),那么请谈论一个您不知道如何编写代码以及如何开始考虑它的应用程序或应用程序元素。
4)面向对象编程的基本原则是什么?
5)在1分钟内尽可能多地告诉我有关关系数据库的信息
6)对于Web应用程序,请描述一种用于维护页面之间有关用户的信息的方法。您所描述的机制存在哪些优点和缺点。
7)选择一个计算中常用的功能,并简要地说明它在程序级别(例如加密,压缩)的工作方式。还要说明您必须如何使用要实现它的功能(在这里我要寻找的事实是,尽管您可能知道某些东西是如何工作的,但最好为它获取一个库)。
编辑:重组并添加了几个额外的问题,以使它更加符合最初的要求。
如果这些是学生,并且您希望能够衡量他们在学业中的位置,那么实际上应该没有任何棘手的问题或使他们难以思考的问题。我的建议是只专注于基础知识-让他们解释如果反射还没有完全赶上对象和继承的速度,说明反射是如何工作的,没有什么意义。
以下是一些可以使用的示例问题,您可以从核心知识类别中开始,然后根据它们回答问题的方式来回走,就像自适应测试的工作方式。
基本原理
核心
enum
用于和什么时候使用它的关键字?高级
如果没有对我上面的评论的回答,通常来说这些都是我想到的事情,但是我不确定我会考虑这些技术问题。
我知道您正在尝试根据他们不了解的内容来构建培训,并且您计划为不同组的学生准备几个“培训”。由于只分配了十分钟的时间,所以为什么不列出要考虑的内容,并提出一些具体问题。因此,您计划教他们C#。询问他们是否很了解。询问他们是否使用了任何最近的功能(LINQ,可为空的类型,泛型等)。如果您的培训中有数据库内容,请提出一些有关此问题。最后,您可能会看到您计划的主题是不必要的,因为他们都知道,每个人都需要其他一些主题,依此类推。这比尝试提出与您所要解决的问题都不相关的问题更为实用。
向他们询问FizzBuzz问题
他们知道如何编码吗?他们使用什么语言?他们为什么要像以前那样编码?他们使用递归了吗?循环?其他方法/功能?指针?
您还可以将该问题用作其他问题的基础(即,为什么/不使用递归?如何使用指针编写此内容?)
它不包含所有内容,但可能会让您了解他们的编码技能
十个问题:
显示一个对数组值求和的for循环。然后问这段代码是做什么的。[他们可以阅读基本循环吗?]
让他们写一个for循环,打印出数字1到10,并用逗号分隔。[除了“他们可以这样做吗?” 您可以判断他们的代码有多重复。]
显示一段包含两个引用的代码,a
并b
指向两个不同的对象,它们的整数字段x
设置为,例如7
和5
。然后重新分配:a = b;
,,b.z = 9;
然后询问的值a.z
。[他们了解参考文献吗?]
显示两个嵌套的for循环(使用index i
和j
),从某个表达式累加值。在最里面的循环中,有两个计算:double x = Math.pow(2.0, i)
和double y = x * j
。要求他们提高代码效率。[他们知道简单的循环依赖吗?]
询问他们代码示例A中有什么问题。(请参阅下文。)[他们可以从逻辑上思考吗?]
询问他们代码示例B中有什么问题。(请参阅下文。)[还有逻辑思维。]
要求他们反转这种情况:(s != null && s.Length != 0)
不使用!
。[他们知道德摩根定律吗?]
在杂志上显示一段类似于旧Lint广告的代码:要求他们查找错误。例如,重载equals
而不是覆盖它。[他们是优秀的语言律师吗?这些问题主要是为了检验经验:您以前看过这个问题吗?]
他们可以描述如何通过排序数组执行二进制搜索吗?
他们能否描述排序方法的实现方式?
这些似乎“太短了”,但是我相信,对于评估学生,您可能会发现十分钟很紧。您确实希望看到他们进行一些编码。(根据一条评论,听起来您将执行FizzBuzz。)
如果您可以假设自己是一名更坚强的学生,那么您还想问一些经典,例如递归,反向链接列表,也许还可以使用高级通配符,例如解释XOR列表,或者他们可能有什么直觉为什么排序一组数字比未排序更容易压缩。
代码示例A:
if (m != null)
a = m;
else
a = null;
代码示例B:
if (x != 0 || x != 1) {
...
}
当然,您会以错误的方式进行操作。确定要放置每个学生的分组
例如
No previous programming experience
Familiar with procedural constructs like variables, loops, branching
familiar with basic object orientated constructs like classes, interfaces, events, inheritance
familiar with using Generics/Templates
familiar with creating Generics/Templates
等等。当您确定了取决于课程材料的合适分组时,找出要问的问题将是微不足道的。
创建5个简单的流程图构造和单独的答案列表。要求他们将图片与短语匹配。
画出以下内容:
让他们解释1和2之间的差异。
让他们解释3和4之间的差异。
请他们提供一个案例声明构造何时适用的示例。
我不确定是否可以在10分钟内完成10个问题。也许给他们5分钟时间,告诉您他们对.net的了解。然后准备一份可能包含20个主题的清单,从他们提到的内容中选择2或3个,从他们没有提及的内容中选择2或3个。
例如,您可以开始:
简短地告诉我(您有5分钟的时间),从创建到运行,如何在Visual Studio中生成一个简单的C#项目。
然后在那之后:
好的,请告诉我更多有关以下内容的信息。这将是快速解决方案,每个答案1分钟,所以不要尝试太详细,我只想对您熟悉的事物有所了解。
然后从后续问题中提出5个问题:
简要说明.Net中垃圾回收的工作原理
....
如果遇到问题,如何调试?
我相信“自我评估”!如果您向某人解释确切的情况,例如,他会发现自己:“您将必须使用带有100多个表和500K多个记录的数据库编写SQL ...,这些数据库必须在4秒钟内运行...”。如果您问他:“您认为可以做到吗?” -您会得到正确的答案。
我将针对学生的期望花5个问题,并对5个技术性更高的问题进行回答:
比您可以解决一些技术问题,例如(应根据主题)。以OOP为例:
我正在寻找解决问题,强烈的学习习惯,专业发展和广泛的方法知识。
chicken
为对象?它与其他有birds
什么关系?如何mammals
与animals
?我希望开发人员能够:
Bloom的分类法在这里很有用。您想要了解各种知识水平,从死记硬背到分析。这使您有机会了解他们的技能水平。由于OP一直在寻找要问学生的问题,因此以下列表所假设的知识并不比3年级或4年级学生(我希望)多。
由于他们已经被录用,为了快速评估,我认为应该(连同编程问题)一起询问他们
这些问题只是为了了解他们对编程时使用的系统的了解,
从软件堆栈的最低级别开始,然后向上。