ThoughtWorks面试题(标记给本身看)

【ThoughtWorks代码题目】

 

 

 

 

 

 

缩短面试流程,直接进入代码环节,无论你是后台开发,移动开发仍是前端开发,拿代码说话!前端

(移动开发请用Android/iOS,前端开发请用JavaScript。其余语言不限。请在两天内完成做业,并经过表单提交给ThoughtWorks)git

面试题目:收银机github

需求描述面试


商店里进行购物结算时会使用收银机系统,这台收银机会在结算时根据客户的购物车中的商品和商店正在进行的优惠活动进行结算和打印购物小票。api

已知商品信息包含:名称,数量单位,单价,类别和条形码(伪)。 
已知咱们能够对收银机进行设置,使之支持各类优惠。数据结构

咱们须要实现一个名为打印小票的小模块,收银机会将输入的数据转换成一个JSON数据而后一次性传给咱们这个小模块,咱们将从控制台中输出结算清单的文本。post

输入格式(样例):测试

[
    'ITEM000001',
    'ITEM000001',
    'ITEM000001',
    'ITEM000001',
    'ITEM000001',
    'ITEM000003-2',
    'ITEM000005',
    'ITEM000005',
    'ITEM000005'
]ui

其中对'ITEM000003-2'来讲,"-"以前的是标准的条形码,"-"以后的是数量。 
当咱们购买须要称量的物品的时候,由称量的机器生成此类条形码,收银机负责识别生成小票。url

该商店正在对部分商品进行“买二赠一”的优惠活动和对部分商品进行95折的优惠活动。其中:

  • “买二赠一”是指,每当买进两个商品,就能够免费再买一个相同商品。
  • “95折”是指,在计算小计的时候按单价的95%计算每一个商品。
  • 每一种优惠都详细标记了哪些条形码对应的商品能够享受此优惠。
  • 店员设置,当“95折”和“买二赠一”发生冲突的时候,也就是一款商品既符合享受“买二赠一”优惠的条件,又符合享受“95折”优惠的条件时,只享受“买二赠一”优惠。


要求写代码支持上述的功能,并根据输入和设置的不一样,输出下列小票。

小票内容及格式(样例):

  • 当购买的商品中,有符合“买二赠一”优惠条件的商品时:

***<没钱赚商店>购物清单***
名称:可口可乐,数量:3瓶,单价:3.00(元),小计:6.00(元)
名称:羽毛球,数量:5个,单价:1.00(元),小计:4.00(元)
名称:苹果,数量:2斤,单价:5.50(元),小计:11.00(元)
----------------------
买二赠一商品:
名称:可口可乐,数量:1瓶
名称:羽毛球,数量:1个
----------------------
总计:21.00(元)
节省:4.00(元)
**********************

 

  • 当购买的商品中,没有符合“买二赠一”优惠条件的商品时:

***<没钱赚商店>购物清单***
名称:可口可乐,数量:3瓶,单价:3.00(元),小计:9.00(元)
名称:羽毛球,数量:5个,单价:1.00(元),小计:5.00(元)
名称:苹果,数量:2斤,单价:5.50(元),小计:11.00(元)
----------------------
总计:25.00(元)
**********************

 

  • 当购买的商品中,有符合“95折”优惠条件的商品时

***<没钱赚商店>购物清单***
名称:可口可乐,数量:3瓶,单价:3.00(元),小计:9.00(元)
名称:羽毛球,数量:5个,单价:1.00(元),小计:5.00(元)
名称:苹果,数量:2斤,单价:5.50(元),小计:10.45(元),节省0.55(元)
----------------------
总计:24.45(元)
节省:0.55(元)
**********************

 

  • 当购买的商品中,有符合“95折”优惠条件的商品,又有符合“买二赠一”优惠条件的商品时

***<没钱赚商店>购物清单***
名称:可口可乐,数量:3瓶,单价:3.00(元),小计:6.00(元)
名称:羽毛球,数量:6个,单价:1.00(元),小计:4.00(元)
名称:苹果,数量:2斤,单价:5.50(元),小计:10.45(元),节省0.55(元)
----------------------
买二赠一商品:
名称:可口可乐,数量:1瓶
名称:羽毛球,数量:2个
----------------------
总计:20.45(元)
节省:4.55(元)
**********************

 

做业要求

  1. 请根据需求自行设计商品信息和优惠信息的数据结构,并本身准备数据;
  2. 请完成所有需求,并输出样例格示的小票;
  3. 请在保证代码可读性的前提下,尽量用最小的圈复杂度完成做业;
  4. 移动开发请用Android/iOS,前端开发请用JavaScript。其余语言不限。

加分项

  1. 良好的设计
  2. 写测试
  3. 用github提交,而且有良好的提交习惯

直接失败的减分项

  1. 压缩包打不开
  2. 以txt文件,图片,word文档等非代码形式提交做业
  3. 只提交了二进制文件,没提交代码,好比exe和class文件
 

 金数据

相关文章
相关标签/搜索