大众点评笔试题

来源:互联网 发布:windows node sass 编辑:程序博客网 时间:2024/04/28 02:38

1.团购(Group purchase)就是团体购物,指认识或不认识的消费者联合起来,加大与商家的谈判能力,以求得最优价格的一种购物方式。
大众点评团是中国领先的本地生活消费平台,致力于为消费者提供本地餐馆美食、电影、KTV、休闲娱乐、酒店旅游、美容保健、婚庆亲子、购物等生活服务信息。
为了更好的服务消费者,点评推出了优惠券这项功能,并且也扩张到了非常多的商户。现在计划上线一个新的业务,在团购的基础上增加优惠券功能,更大幅度的让利消费者。
现在需要实现这个功能,具体的业务需求描述如下(描述有点长,大家不用担心,题目不难):
团购的购物车里面的每一件商品为Product类,其中包含id,name,description,price,category(类型,uuid类型),count, totalPrice 等等
现在需要增加 优惠劵的功能,当用户添加完所有的商品后,有一个地方可以输入优惠劵code,当用户应用优惠劵后,购物车将自动列出优惠后的价格,包括跟使用之前的价格对比。
注意事项
a). 当前优惠劵只有一种,就是满200减20,上不封顶,例如满400减40,满600减60...未满200的不优惠
b). 优惠劵不能叠加多次使用,比如团购总价为240,使用优惠劵后变为220,不能继续再使用该优惠劵。
优惠劵类自定。属性自定。
后期优惠劵功能可能扩充,比如(后期功能可不实现,但是要提供思路和方法)
c1. 针对Product的category,比如食物,书籍,衣服,电子产品等等,该优惠劵会针对于该类型的Product,不会应用到别的category的产品
c2. 打折券,不仅仅是限制于满200减20,而是可以打折,每一个优惠劵可以有不同的折率
d). 优惠劵不能叠加使用,比如不能使用两个不同的优惠劵。但是当用户多次输入不同的优惠劵后,我们必须给用户提供更划算的优惠劵方案。
根据以上的业务需求,完成功能实现(编写相应的代码和测试代码,语言不限,可以用伪代码表示。不需要考虑界面问题)。

2.十六进制序列

 描述:有一个十六进制序列由S1S2…Sk组成,其中Sk由1到k的十六进制数字依次组成。给定一个位置i,返回第i个位置上的字符。数字i为32位int
 例如,S1S2…Sk的前200个字符为112123123412345123456123456712345678123456789123456789A123456789AB123456789ABC123456789ABCD123456789ABCDE123456789ABCDEF123456789ABCDEF10123456789ABCDEF1011123456789ABCDEF101112123456789ABCDEF10111213
 所以i=50时,字符为5,i=100时,字符为9
 要求时间复杂度小于O(n),空间复杂度O(1)