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件衣服