作者 内容
 babituo  我曾经用过的一道招聘考题
 

给出以下这个纯粹的计算问题的解决方案:
你在10个银行分别有10个帐号,比如,现在你在一个帐号上取走10元。假设这10个银行的柜员机是联网的,问题是你如何在柜员机上得知你总共还有多少存款的信息?如果限制你有SQL来解,会是什么结果?

 03/04/16 17:19 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 oracle10i  回复: 我曾经用过的一道招聘考题
 

问题太笼统了

 03/04/16 19:18 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 killcamel  那么我是没有指望及格了
 
 03/04/16 21:09 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 zwlpower   回复: 我曾经用过的一道招聘考题
 

把所有钱转到一个帐号上就可以了吗,让系统计算去吧。

 03/04/17 00:47 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 sealw  杀骆驼老兄近来可好啊
 

我也不太理解那道题究竟期望什么答案。

 03/04/17 08:35 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 babituo  一个算术计算问题而已
 
 03/04/17 09:16 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 decapli   什么都能拿来问?
 

看来出题的人是有优势的。
至少在心理上。

因为只要愿意,什么都能拿来问?

 03/04/17 09:33 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 babituo  我在征求一个最优的SQL解
 

也许你写一句SQL就行了!

 03/04/17 09:33 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 zwlpower   回复: 我在征求一个最优的SQL解
 

问题是你如何在柜员机上得知你总共还有多少存款的信息?
我还没见过柜员机上可执行SQL的,你这问题是不是有病的????

 03/04/17 09:37 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 babituo  你是Oracle的人,请你给出一个SQL解,好吗?
 
 03/04/17 09:37 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 babituo  哦,对不起,我忘了告诉你,柜员机和服务器是相连的,而且,我只要一个逻辑解.抱歉!
 
 03/04/17 09:39 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 babituo  我面临考试的时候也总是会精神紧张,影响发挥.我又不是考你们,而且我早就不负责招人了.拿来当味精而已.
 
 03/04/17 09:44 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 zwlpower   回复: 哦,对不起,我忘了告诉你,柜员机和服务器是相连的,而且,我只要一个逻辑解.抱歉!
 

我对柜员机系统结构不了解,但我想柜员机与服务器之间是通过中间层的访问获得数据的吧。因此,SQL的执行环境是如何,在问题中是模糊不清。

 03/04/17 09:49 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 babituo  你随便假设好了,我当时要考的一点就是应试者能假设出什么样的环境,并给出与他自己假设相一致的答案.
 

当时连SQL的限制都没有给出,我现在只是想来调侃调侃SQL.

 03/04/17 09:53 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 瘦驼   回复: 杀骆驼老兄近来可好啊
 

Up

我叫瘦驼,哪位老大要杀驼?

哈哈,纯属关税

 03/04/17 10:54 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 言希  回复: 什么都能拿来问?
 

1、假设柜员机是可以访问数据库服务器的。
2、假设数据库服务器都使用Oracle。
3、假设在某数据库中创建了连接到其它数据库的连接。
4、用户的存款信息保存在Money_Info中。并为它们分别建立别名Money_Info1..
5、用户的帐户信息保存在Login_Info中。并分别建立别名Login_Info1....
6、用户有直接访问数据库的权限。
7、从柜员机取款后,取款信息同时更新存款表中的用户余额:RestMoney。
8、用户帐户中有一个字段身份证号码:IDCardNo。这个号码与用户是一一对应的。
然后可以回答:
。。。。。。。。。。。。。
这些假设好恐怖。

 03/04/17 11:49 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 smilemac  我以前服务过的一家公司据说招人的题目是这样的。。。
 

闭着眼睛原地转三个圈,然后说出哪边是东。

呵呵,即考了智商,也考了情商,还考了身体条件。

 03/04/17 12:21 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 babituo  逻辑解
 
 03/04/17 14:04 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 言希  回复: 逻辑解
 

逻辑解是什么意思?能否给出一个样板?

 03/04/17 14:09 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 killcamel  好,好。承蒙挂念。最近
 

在写详细设计书,结果有些地方比基本设计书还简单,因为日本人也厌倦了需求一修改,就要改文档,因此要求详细设计书详细到在需求或处理细节变化的时候,详细设计书可以不用修改。呵呵。

 03/04/17 20:24 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 killcamel  呵呵,我也是骆驼。同驼同驼。
 

想用的名字被人占了,我就只好自杀了。苦啊。

 03/04/17 20:26 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 killcamel  和紧张无关。如果您老问
 

如何在10个表里累加某个字段的数据,SQL还是写得来的。至少对于oracle如此

但是既然提到了银行背景,问题就大了。登陆了一个账户,如何知道别的银行账户的信息?是一个人在所有银行都有相同的账户名,还是另有一个银行的银行替人管理银行账户间的关联?如果是账户名相同,那么如果有15家银行联网,是不是我就必须要有15家银行的账号不可?否则,在10家外的银行的数据也有可能因为账号名相同被算成我的钱了。让我空欢喜一场。如果有一个中央机构管理所有银行的账户关联,是我必须在银行开户时提供我同时所有的银行信息,还是根据名字或身份证号码自动查询?如果是名字,同名同姓可不少见。身份证号码,根据现在题目的一次登陆,全账号通用的做法,如果我遗失了证件,任何人都可以用它开个账号,然后把我其他原有账号中的钱全提走了。既然看上去都不象,我就不知道用什么来查询了。
都说时髦的契约编程,这个问题里少了多少个契约?我不知道该从银号账户,还是名字,还是开户资料,还是其他不明因素确定各银行数据间的关联关系,这个问题我再放松也不会及格吧

 03/04/17 20:43 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 killcamel  怎一个牛字了得
 
 03/04/17 20:47 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 sealw  有点意思啊
 
 03/04/17 21:05 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 babituo  对不起,又忘记了一条重要信息:总分100分,这题只有5分.
 

我期待的答案是:TT=TT+DT;
现在,我想知道SQL解会是什么?

 03/04/18 13:40 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 babituo  我期待的答案是:TT=TT+DT,现在,我想知道SQL解会是什么? ;
 
 03/04/18 13:41 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 言希  回复: 我不明白TT=TT+DT是指什么,不过,如果有了那么多的假设以后,SQL语句是不成问题了
 
 03/04/21 09:51 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 babituo  TT=TT+DT是当时的一个应聘者的解答,意思是:总数=总数+变化数.
 

请给出你的SQL解.

 03/04/21 13:46 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 言希  回复: 是数据库中有一个表用于存放总金额,而另一个表存放存取情况了?如果是这样的话可以:
 

select (TT + nvl(DT, 0) ) CurMoney from
(select Money TT from TotalTable where CustID = SID) TTable,
(select sum(Money) DT from DynamicTable
where CustID =SID) DTable
where TTable.SID = DTable.SID(+)
 

 03/04/21 14:32 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 babituo  谢谢言稀,我就是需要一个可以用来讨论的SQL解.
 

我问一句,你提供的SQL解是否执行了以下逻辑:

假设Dxyk(x=1...10,y=1...Nx)是在第x个银行第y个帐号上进行的第k笔交易(出或入一笔帐);

假设Txy(x=1...10)是在某个银行某帐号上的余额总额;
假设Tx(x=1...10)是在某个银行所有帐号上的余额总额;
Txy和Tx是汇总得到的,并继续汇总:
T1 = sum(T1i) (i=1..10,是在第1个银行10个帐号上的余额)
T2 = sum(T2i) (i=1..10,是在第2个银行10个帐号上的余额)
T3 = sum(T3i) (i=1..10,是在第3个银行10个帐号上的余额)
...
T10 = sum(T10i) (i=1..10,10,是在第10个银行10个帐号上的余额)
最后得到答案:
TT = T1+T2+T3+...+T10

而且,数据库在执行这条SQL时,真正的执行过程也是这样的,是吗?
有没有更好的解?

 03/04/21 14:57 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 言希  我想,我们的理解有出入
 

我给出来的SQL有两个条件:
1、系统中有一个用于记录用户在所有银行的所有帐户中的存款的总余额的表TT。
2、另一个表保存了某人的存取信息DT。用户取款时,取款信息保存到这个表中,并更新用户在各银行的存款信息。系统稍后再更新该用户的总存款余额表。
在查询。
这时,查询某用户的各帐户的总余额时就不再需要遍历各银行的各帐户。

 03/04/21 15:22 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 babituo  哦,你是在模拟TT=TT+DT算式,对吧?
 

一般人设计数据库时会根据计算式的要求来设计吗?
这是否违反了数据库设计的范式?

 03/04/23 11:53 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 言希  回复: 哦,你是在模拟TT=TT+DT算式,对吧?
 

算法与范式应该是两个不同范畴的概念吧。在数据库设计中,一般不根据算法来设计数据库,但是,如果为了特别的原因:如改善性能,也可以为了支持特定的算法而对数据库架构做相应修改也是可以的,而且,实际设计中也有许多类似的数据库设计,这样能提高数据库的处理能力。

 03/04/23 15:47 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 babituo  我在这里出此题的真实用意
 

同意你的以下说法:
"算法与范式应该是两个不同范畴的概念吧。在数据库设计中,一般不根据算法来设计数据库,但是,如果为了特别的原因:如改善性能,也可以为了支持特定的算法而对数据库架构做相应修改也是可以的,而且,实际设计中也有许多类似的数据库设计,这样能提高数据库的处理能力。 "
这正是我提出本问题的用意.
数据库技术的本意并非满足算法的要求(那么是什么?),可是,实际应用中却面临大量需要"提高数据库处理能力"的境地,这是否有"用己之短,攻敌之长"的嫌疑?

 03/04/24 11:07 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 言希  回复: 我想向你请教一个问题:在Oracle还没有实体化视图支持的时候,你如何提高对大数据集的查询统计效率?
 
 03/04/24 11:45 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首