一次面试的试题(部分)——我不会做的,大家帮忙看看

努力学飞的鸟 2010-07-30 03:11:46
1、当表中A、B、C三列,用sql语句实现:当A列大于B列时,请选择A,否则选择B,当B列大于C列时,选择B列,否则选择C列。



2、你让工人为你工作7天,回报是一根金条,这个金条上有刻度标识,你必须在每天结束的时候给他们一段金条,如果只允许你两次把金条弄断,你如何给你的工人付费?



3、给定字符串“ABCD”输出其中所有的两两组合(“AB”“AC”“AD”“BC”“BD”“CD”),请写出算法,并输出字符串“ABCDEFGH”所有的两两组合。



4、假设你有8个球,其中一个略微重一些,但是找出这个球的唯一方法是将两个球放在一个天平上对比,最少要称多少次才能找出这个比较重的球?



...全文
150 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
努力学飞的鸟 2010-08-03
  • 打赏
  • 举报
回复
我和15楼的想法一样,所以当时我写就是一次。
aptsoft 2010-08-03
  • 打赏
  • 举报
回复
8楼的答案我也注意到了,但我不认为切题,因为题目是说‘最少’几次,而不是‘最多’几次。根据题目的问句,应该理解为‘最少的可能’,当然存在一次就抓出来的情况。我认为该题就是脑筋急转弯类型,所以,我不认为8楼的答案准确。

不同意见可探讨。
努力学飞的鸟 2010-08-02
  • 打赏
  • 举报
回复
非常感谢大家的帮助!
wilensky 2010-08-02
  • 打赏
  • 举报
回复
第一题用 case when 来做。自己查下sql 帮助就知道了。类似分金条这样的题目,网上太多了,我觉得毫无意义。而有的公司往往用这些来评判面试者的能力,真是可笑。
andy_liucj 2010-08-02
  • 打赏
  • 举报
回复
第一题
select case when A>B then A else B end, case when B>C then B else C from tb

第二题,以前看到过,分成1/7,2/7 和 4/7
第三题,6楼写了
第四题,我也认为是2次,第一次两边各3个,第2次就简单了。不过9楼的你也可以看下
andy_liucj 2010-08-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 aptsoft 的回复:]

题目4的关键是:唯一方法是将‘两个’球放在一个天平上对比。也就是说,一次只能放2个球。所以,可以将8个球分成4组,最少一次,最多4次。
[/Quote]这样就变成脑筋急转弯了,不过我倒也是注意到“两个球”
aptsoft 2010-07-30
  • 打赏
  • 举报
回复
题目4的关键是:唯一方法是将‘两个’球放在一个天平上对比。也就是说,一次只能放2个球。所以,可以将8个球分成4组,最少一次,最多4次。
yixianggao 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 ganqiyin 的回复:]
4、假设你有8个球,其中一个略微重一些,但是找出这个球的唯一方法是将两个球放在一个天平上对比,最少要称多少次才能找出这个比较重的球?
[/Quote]
两次足以!

第一次,3:3 若不平,从重的里任选两个放在天平上(第二次);若不平,找到重球,若平,没上称的那个就是。
第一次,3:3 若平;剩下的两个球 1:1 放在天平上(第二次),找到重球。

如果是不知轻重的情况,就要复杂一些了!
努力学飞的鸟 2010-07-30
  • 打赏
  • 举报
回复
非常感谢!
yixianggao 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 ganqiyin 的回复:]
3、给定字符串“ABCD”输出其中所有的两两组合(“AB”“AC”“AD”“BC”“BD”“CD”),请写出算法,并输出字符串“ABCDEFGH”所有的两两组合。
……
[/Quote]

            string[] charList = new string[8] { "A", "B", "C", "D", "E", "F", "G", "H" };
for (int i = 0; i < charList.Length; i++)
{
for (int j = i+1; j < charList.Length; j++)
{
Console.Write(charList[i] + charList[j] + ", ");
}
}
Console.Read();

// Output:
// AB, AC, AD, AE, AF, AG, AH, BC, BD, BE, BF, BG, BH, CD, CE, CF, CG, CH, DE, DF, DG, DH, EF, EG, EH, FG, FH, GH,
yixianggao 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 ganqiyin 的回复:]
1、当表中A、B、C三列,用sql语句实现:当A列大于B列时,请选择A,否则选择B,当B列大于C列时,选择B列,否则选择C列。……
[/Quote]
SQL 里有类似 IF 判断的语句,好久不用 SQL 了,要查手册才行!

通常业务规则都放到业务对象中处理,而不是通过 SQL 查询完成的!
yixianggao 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 ganqiyin 的回复:]
2、你让工人为你工作7天,回报是一根金条,这个金条上有刻度标识,你必须在每天结束的时候给他们一段金条,如果只允许你两次把金条弄断,你如何给你的工人付费?……
[/Quote]
虽然无聊,做了一提:

7 = 1 + 2 + 4; 两次分割完毕

1 day: worker 1; you 2+4
2 day: worker 2; you 1+4
3 day: worker 1+2; you 4
4 day: worker 4; you 1+2
5 day: worker 1+4; you 2
6 day: worker 2+4; you 1
7 day: worker 1+2+4; you 0

但是,必须假设工人在 7 天不能花掉金子,否则的话解法就不成立了,哈哈
努力学飞的鸟 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yixianggao 的回复:]
不如直接搞几道奥数题面试算了,这种题对软件开发而言毫无意义!
[/Quote]

呵呵,但是我们刚刚出来的菜鸟,面试的都是这样子的题目了。
可是我还是不会做。哎!
yixianggao 2010-07-30
  • 打赏
  • 举报
回复
不如直接搞几道奥数题面试算了,这种题对软件开发而言毫无意义!
q107770540 2010-07-30
  • 打赏
  • 举报
回复
有意思,mark一下

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧