高级SQL开发人员面试问题 - 太难了?

时间:2011-08-04 14:07:49

标签: sql sql-server tsql

警告,这是一篇很长的帖子。 TL / DR:我的面试问题是否过于苛刻?

好的,在申请人总共失去了约9个月之后,我想确保我们对高级开发人员申请人的期望不高。

背景

我们是一家商业智能商店。但是,我们不希望候选人获得BI知识。如果你有一个坚实的T-SQL背景,那就是我们所需要的。关于Analysis Services,Dimensional Modeling等,我们将为您提供其余的方法。因此,我们所有测试的都是T-SQL技能。一切都发生在SSMS内。

如果考生通过电话筛选,我们会带他们参加编码面试,我们会给他们7个问题和90分钟的慷慨。我在编码过程中出现了各种各样的东西,比如他们如何浏览工具,他们研究的内容等等。应该注意的是,我们非常清楚地知道他们可以使用任何资源,包括互联网,BOL,等

问题

以下是缩写形式的问题,试图不给予太多的答案(因为他们可能谷歌这个问题:P)

  1. Fizzbuzz - 我想看看他们如何生成行集。如果他们使用变量/循环,我就死在里面
  2. 聚合 - 问题基本上迫使候选人使用select语句的全部范围(select,from,where,group by,having)
  3. NULL如何工作 - 我给出一个“棘手”的问题,其中IN子查询由于子查询表中的NULL值而不返回任何内容。我要求解决方法使查询工作,然后解释为什么它不首先。我想知道他们理解NULL值是什么/意味着什么以及SQL如何评估它们。
  4. 索引 - 没有索引的简单2连接查询。我要求候选人将整个查询子树的成本提高20%。我很快就发现他们之前是否已编入索引。我告诉他们“阅读问题。给我一些我要求的东西”。遗憾的是,我认为单个申请人甚至没有注意到子树成本的开始或结束。
  5. 运行总计 - 我给出一个带有PK /日期/数值的表,并要求他们更新每个PK的运行总计的另一列。这并不容易,这是一项奇怪的任务。如果他们没有及时完成我真的不在乎,但我想看看他们没有做过研究还是一次体面的尝试(即使它效率低下,至少开始编写一些相关的子查询)。
  6. XML - 我要求他们从XML类型的列中检索值。我不希望候选人知道如何做到这一点,我告诉他们。这一点的目的是观察他们做研究等,就像他们在工作中遇到新问题并需要解决它一样。
  7. CTE - 我只是要求他们写一个CTE。而已。如果它有创意/有趣的话,可以获得奖励。
  8. 就是这样。所以,我的问题是这些问题有多公平?我们正在寻找有实际经验的人。对我来说不可思议的是,拥有10年SQL经验的人甚至无法得到其中的1或2个问题。我太苛刻了吗?我应该添加/删除内容吗?

1 个答案:

答案 0 :(得分:2)

kewl问题。他们只有你的通过/失败标准一样公平。测试越难,一个候选人的能力就越好......所以我认为这套问题没问题,只要你不这样做期望正确答案的特定等级或百分比...

如果你担心考生对考试的公平程度的看法,那么请事先告诉他们,考试就是这样,只需要观察/衡量他们解决问题的能力。并且有能力站起来......