针对Web或SQL开发人员的FizzBu​​zz类型的问题是什么?[关闭]


10

一段时间后,我们再次招聘,我正在审查针对程序员的测试;其中一些有些过时了。针对Web开发人员和SQL 的FizzBu​​zz类型的问题是什么?那不是太琐碎,但是在没有Google的情况下,可以用笔和纸在五到十分钟内解决吗?

我通常会根据简历剔除大约三分之二或更多的候选人,然后在一个小时的面试中(可能是通过电话)剔除除少数几个非常好的候选人之外的所有候选人。此时,候选人正在编写个性测试,并且有机会编写一些类似于FizzBu​​zz的代码。因此,我并不是要消除大量候选人,而是要验证我的初步评估,认为该候选人是可雇用的并且能够编码。


2
您在网络开发人员中需要什么技能?
奥德

我想我正在寻找对HTML / CSS / JSON / HTTP的理解;正如Rachel所说,FizzBu​​zz非常适合测试Javascript / PHP / etc。
Domchi

Answers:


12

我将FizzBu​​zz视为一种测试,以查看人们是否真正了解自己在简历中声称的知识。除了要问清楚不知道他们在说什么的候选人以外,我不会将其用作问题。

一个合适的SQL替换方法是只要求应聘者写一条SQL语句,例如选择两个以A开头的联接表的Name字段。这很简单,它表明应聘者确实具有一些SQL知识。

SELECT Table1.Name, Table2.Name
FROM Table1 
INNER JOIN Table2 ON Table1.Id = Table2.Id
WHERE Table1.Name LIKE 'A%' OR Table2.Name LIKE 'A%'

对于Web开发人员,我只想问他们FizzBu​​zz。仅仅因为您正在为网络编程并不意味着您应该缺乏执行基本编程逻辑的能力

如果您正在寻找实际的面试问题,可以通过快速搜索找到很多在线的好问题。我花了10秒钟时间在Google上找到了比我想列出的更多的东西。


2
联接是将新手与更高级的SQL程序员分开的好方法,因为在SQL编程中,通常需要与服务器端编程不同的思维方式,这通常是必须的。直到我开始从集合角度考虑SQL语句之前,联接和子查询一直使我感到困惑。
克里斯C

@CCRicers我同意。而且,如果您正在面试高级SQL开发人员,那么我实际上还要添加一个GROUP要求,因为我在完全理解组的含义和工作方式之前就已经使用了SQL了很多时间
Rachel

考虑要求自我加入:“创建表雇员(ID号,名称文本,MANAGER_ID NUMBER)”,然后“如何列出员工及其经理?”
凯文·克莱恩

根据您要招聘的数据库/ SQL职位类型(以及开发人员背景/您的环境),您可以要求提供实际的 “ FizzBu​​zz”答案。
Clockwork-Muse

而且它的另一个优点是规格不佳,因此可以在编写代码之前测试应聘者是否明确要求。
彼得·泰勒

4

这里是一个答案我给一个已关闭很相似(可能是重复的)问题上这个网站。

极其简单的级别: 给一个雇员表,其中包含EmpID,FirstName,Lastname,HireDate和TerminationDate列:编写查询以返回所有仍在该公司工作的雇员,其姓氏以“ Smith”开头,按姓氏和名字排序。

轻松级别 给定上面的Employee表,再加上带有EmpID列的新表“ AnnualReviews”和ReviewDate:编写查询以返回从未进行过按HireDate排序的所有员工的查询。

中级
给定上面的雇员表,写一个查询来计算仍在公司工作的最老员工和最老员工的差额(天)?

困难级别 给定上面的雇员表,编写查询以计算公司没有雇用或解雇任何人所经历的最长期限(以天为单位)。

更难的级别
再次使用相同的表,编写一个查询,该查询返回每个员工,并且每行/每个雇员都包括在任职期间和达到最大值的第一个日期为公司工作的最大雇员数。不使用游标的加分。


1
有趣的问题。但是,“硬” /“难”级别对我来说真的很难。即使具有良好的SQL经验,我相信在面试情况下也可能很难解决。也许如果您让候选人独自待半个小时左右。
sleske 2011年

当我意识到自己甚至根本不知道游标是什么时,我可以说“更难”的问题很难解决,而且我每天都使用MySQL!:-/
thesunneversets

@Johnfx请为我日后面试的问题找到这些答案,docs.google.com
document / d /…

你为什么需要我看看。您可以自己进行测试,看看是否获得正确的答案。
JohnFx

3

Fizzbuzz本身如何?这是Oracle版本:

select case when mod(level,35) = 0 then 'fizzbuzz'
            when mod(level,7) = 0 then 'buzz'
            when mod(level,5) = 0 then 'fizz'
            else to_char(level) end fizzbuzz
from dual connect by level <= 100

1
+1令人赞叹,但我认为虚拟数字表的出现频率不足以容纳每个人的SQL工具箱。你得找出他们
康拉德Frix

0

我发现人们出于某种原因往往会在与时间打交道时遇到很多麻烦,因此这可能是进行小型测试的好地方。

像这样:

第1部分:创建一个函数,该函数将计算给定月份中的第N个或最后一个工作日- 第一,第三,下个月的最后一个星期二。

第2部分(如果需要):设计表,以保存重复计划的时间表达式。时间表可以是“一个或多个月的第N个工作日”或“一个或多个月的第N天”或“自日期起每隔N天”中的任何一个。

例如,从2008年12月2日起,每月15号,每年3月的最后一个星期三,每月的最后一天,每17天等。


2
-1:努力工作并正确完成工作确实很困难。猜猜为什么存在像JodaTime这样的库,而不仅仅是一些琐碎的软件。
sebastiangeiger

@sebastiangeiger我同意。我几乎每天都在使用SQL,尽管我可以高效地使用SQL的日期函数,但是如果没有Google的帮助,我将无法快速或轻松地执行此类操作。实际上,几个月前我需要这样做,经过几分钟尝试在SQL中弄清楚之后,我才用Google对其进行搜索,并获得了一些脚本,并对其进行了一些修改以适应我的需要。
雷切尔

我不是在寻找麻烦的地方;我正在寻找任何普通开发人员每天都在使用的东西,并且可以在不熟悉的环境(没有可用的计算机)中回忆起任何问题。尽管您的示例并不难,但我会给一个在我前面编码的人看看他在想什么的问题。
Domchi

1
@Eli我认为FizzBu​​zz有望得到相应的解决/编码。
亚伦·麦克弗

1
我认为第2部分不是一个好问题。实际上,该主题有一个奇怪的解决方案,几乎在业务中的任何其他数据库设计问题中都不会发生。不知道答案并不表示SQL知识不足。
NoChance 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.