allocateTickets

题干条件

  1. 用户可以买1~5张票
  2. 系统随机为用户分配座位

假设条件:

  1. 一个用户一次买的票尽量连号
  2. 已卖座位尽量分布均匀
  3. 考虑并发时座位锁定
  4. 设置优先分配座位(前排,中间是优选,先到先得)
  5. 有退票逻辑

思路整理

  1. 以区域和排为单位,按剩余空闲座位的数量为权重做随机分配
  2. 用loaclStorage做存储,模拟异步分配接口(接口可设置0.5s返回)
  3. 考虑无连号座位时分配逻辑,将票数二分然后分配相近的座位?
  4. 考虑并发时座位不够的边界条件
  5. 维护一个分配队列,后入队列的分配预考虑前面分配的情况

拓展性

  1. 一次买票数量不设上限