由IBM的面试题目“一个人花8块钱买了一只鸡”看软件设计

IBM面试时的题目:一个人花8块钱买了一只鸡 
一个人花8块钱买了一只鸡,9块钱卖掉了,然后他觉得不划算,花10块钱又买回来了, 11块钱卖给另外一个人,问他赚了多少钱?


问题:通过这类题目能考出什么呢!为什么考这种题目?

答案:考的是软件设计的思想。设计的王道——解耦合

 

对于此题目有两个变量:

1,鸡的进价是变量

2,买的次数是变量(对于此题只买了两次但是考虑问题时应该假定不知道他要买多少此)

 

找到变化点后问题就容易解决了

解:把买进的同一只鸡拷贝成两个分别买进。

他分别进了两只鸡
一只8块买的卖了9块赚1块
另一只10块买的卖了11块赚1块
1块+1块=2块

 

所以一共赚两块。

 

练习题:

一天有个年轻人来到王老板的店里买了一件礼物,这件礼物成本是18元,标价是21元。结果是这个年轻人掏出100元要买这件礼物。王老板当时没有零钱,用那100元向街坊换了100元的零钱,找给年轻人79元。但是街坊后来发现那100元是假钞,王老板无奈还了街坊100元。现在问题是:王老板在这次交易中到底损失了多少钱

参考答案:

这里老板换回来的100元与他找给混蛋顾客的79元耦合在了一起,造成了思考的不自然。

方案:

老板拿出200元真钱

100元用来与邻居交换(他俩没事交换等价真钱玩)——没有损失

100元白给了混蛋顾客79元——损失79元

另外白给了混蛋顾客1件衣服

所以:总损失=79元+1件衣服


转载于:https://my.oschina.net/anycmd/blog/324308

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值