一道令我非常遗憾的问题,抄给所有“三角”试试看。48小时内揭帖

w_rose 2004-08-21 03:19:53
这个简单的问题,我们公司出给二、三十名应聘者,要求5分钟内直接用纸笔解答,竟然无一人写出任意一种正确答案,只有一个人说出了大概思路可是不会其中某个SQL写法。真不知道大家对SQL的理解所处的问题在哪里?

我在这里把它抄出来,请大家看看你能不能立刻回答(不要上机去改去凑)。

请注意:只有“三角”回答。



只有一个简单的表:费用记录。
其中只有三个字段:人员ID(主键)、部门ID、费用金额。
要求:请查询出各个部门中费用最大的都是哪些人,以及他们所在的部门和费用金额。
...全文
572 点赞 收藏 70
写回复
70 条回复
stonepeter 2004年08月22日
我试过,无法在五分钟之内完成。所以我得不了这份工作。
回复 点赞
w_rose 2004年08月22日
如果用薪水高低来衡量是否是“技术骨干”,那么我何必带他们?难道我疯了,重演“农夫与蛇”的故事?
回复 点赞
w_rose 2004年08月22日
上面有人指摘我所说的“技术骨干”用词不当,我其实很不明白,这也是我对众多未见过的高级程序员“同行”的不理解之处——小小的测试不能轻松过了,那么自己是否很对不起所占的这份职位和领到的薪水?

我手下的技术骨干当然应该在30秒钟之内写出清楚地查询方法来。因此,至于我培养不出真正的“骨干”我也许有责任,但我觉得更多的是人们浮躁、不虚心的心理造成的。
回复 点赞
w_rose 2004年08月22日
为什么不能上机去凑呢?

其实原因我说得很清楚。这是对高级程序员和项目经理的要求,而不是对一般刚毕业的学生的要求,这是看是否已经具有解决问题的现成思路、对细节是否能看到,而并不关心最终结果。

好了,结贴了!谢谢大家。
回复 点赞
Banned 2004年08月22日
>>>w_rose (w_rose) :
>>我在这里把它抄出来,请大家看看你能不能立刻回答(不要上机去改去凑)。

为什么不能上机凑?

我们的最终目的是解决问题而不是别的。
回复 点赞
chludlf 2004年08月22日
不用測了, 大家都回答完了.接分
回复 点赞
zheninchangjiang 2004年08月22日
回复人: w_rose(w_rose) ( ) 信誉:104 2004-08-21 17:43:00 得分: 0


我看了上面“十大忠告”,有点启发。不过说实话,还是少了点实在的东西。

好吧,我就再说出点内情为我自己“洗刷”一点:

我手下一个技术骨干,去年9月毕业,11月从内蒙来北京,今年3月我来到这个公司的时候他的工资从五六百涨到两千,我开始带他,现在他走了,他觉得它可以在北京随便找到六千块钱的公司去做了,它可能觉得已经学到头了。我相信他做不出这道题。我希望我的同事能够各个会做事业,而不是目光短浅。但是招聘让我确实很失望。


--学无止境,你也许会低估别人了。既然能称为你手下的技术骨干,我想如果他不行,也是你的错。


回复 点赞
jancyer 2004年08月22日
select 人员ID ,部门ID,费用金额 from yourtable where 费用金额 in(select max(费用金额)from yourtable group by 部门ID)
回复 点赞
a1n1 2004年08月22日
select 人员ID,sum(费用金额) as 费用,部门id from 费用记录
group by 部门id
回复 点赞
ripper 2004年08月22日
“他的工资从五六百涨到两千”

2k在北京就技术骨干了? 从你的口气看,你觉得你们公司技术骨干拿2k算是给高了?

有趣有趣
回复 点赞
stonepeter 2004年08月22日
上面的回答,这一句也不对。
select distinct(a.人员id),a.部门id,a.费用 from 费用记录 a, 费用记录 b where (a.部门id=b.部门 and a.费用>=b.费用)
-------------------------------------------------------------------------
这样的问题是简单,可是做起来却不容易。
5分钟就能写正确一定要有这样的统计经验
如果没有的话我想是不可能做正确的
就算是有这样的经验的话,大部分人都会用SQL生成器,高效地写出了代码,不是从头一个个单词做出来的。
------------------------------------------------------------------------
下面这个是我现在觉得正确(copy楼上的)
select a.* from [费用记录] a join
(select max([费用金额]) from [费用记录] group by [部门ID]) as b
on a.[部门ID]=b.[部门ID] and a.[费用金额]=b.[费用金额]
------------------------------------------------------------------------
楼主的面试题不容易--这是我的结论
回复 点赞
hthunter 2004年08月22日
1、并不是每个程序员都用sql的
2、即使一个经常用sql的程序员,也不能保证一次写出来的sql语句正确无误(否则还要sql查询分析器做什么,本来写程序就是要经常调试的嘛)
3、也有可能去面试的所有人的确基础都不行
4、如果你是需要完全正确的答案的话,我觉得这种题目应该用来机试(在不查帮助的情况下调试成功),而不是用来做笔试。我们公司招人的时候我出的试题有分两种:笔试考基本概念、分析能力和计算机英语等;机试考动手能力(甚至可以查帮助,关键是要能自己做出来)。现在的程序员,如果没有语言工具的帮助、没有网络资源,我真不知道他能做出什么东西出来。没有天生程序员,程序员都是在合理的利用各种资源中成长起来的。从这个角度上来说,我更喜欢会利用资源的程序员,而不是只会死记硬背的程序员。
回复 点赞
hthunter 2004年08月22日
我手下一个技术骨干,去年9月毕业,11月从内蒙来北京,今年3月我来到这个公司的时候他的工资从五六百涨到两千,我开始带他,现在他走了,他觉得它可以在北京随便找到六千块钱的公司去做了,它可能觉得已经学到头了。我相信他做不出这道题。我希望我的同事能够各个会做事业,而不是目光短浅。但是招聘让我确实很失望。
*********************************
哦,原来还有这么一段话, 开始没看到.
刚进去的时候五六百? 招民工啊?! 或者招清洁工什么的?
在北京, 月薪2K的技术骨干? 你叫别人怎么活?
哈哈, 也许这是我在CSDN看到的最黑的北京公司(或者不是黑, 是穷而已)了.
你的招聘起点这么低, 还指望能有多高的高手去应聘? 搞笑搞笑, 哈哈....
我认不住要笑....
回复 点赞
mahongxi 2004年08月22日
一种新写法:
select * from 费用记录 t1 where t1.费用金额 >= all (select t2.费用金额 from 费用记
录 t2 where t2.部门ID = t1.部门ID)
回复 点赞
stonepeter 2004年08月22日
因为无法保证别的部门的人的费用金额不和你们部门最大费用金额不等
这个语句明显不行
select * from 表 A
where 费用金额 in (select max(费用金额) from 表 where 部门ID = A.部门ID )
回复 点赞
stonepeter 2004年08月22日
其实我想到至少有两种办法
第一种:用联接--呵呵,生成一个n*n的大表,再从n个记录中选中合条件的
select distinct(a.人员id),a.部门id,a.费用 from 费用记录 a, 费用记录 b where (a.部门id=b.部门 and a.费用>=b.费用)
第二种:这个好
select person_id, dept_id, max(money) from 费用记录 group by dept_id
回复 点赞
lalakid 2004年08月21日
我靠,为什么测我们“三角”,不会是“种族”歧视吧,你奶奶的……
回复 点赞
lalakid 2004年08月21日
select 人员ID,部门ID,费用
from 表 as 外表
where 费用 = (select max(费用) from 表 where 部门ID = 外表.部门)
回复 点赞
pengda1i 2004年08月21日
这就对了嘛,没必要上纲上线

回复 点赞
capint 2004年08月21日
select person_id, dept_id, max(money) from ... group by dept_id
回复 点赞
发动态
发帖子
应用实例
创建于2007-09-28

1.1w+

社区成员

6.8w+

社区内容

MS-SQL Server 应用实例
社区公告
暂无公告