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文件
 

 金數據

相關文章
相關標籤/搜索