V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
szxczyc
V2EX  ›  问与答

前端显示还有一件库存,但是下单却显示无货?

  •  
  •   szxczyc · 2021-01-30 20:42:39 +08:00 · 1377 次点击
    这是一个创建于 1182 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这是之前面试遇到的一个面试题:当用户下单的时候,前端显示还要一件货物,但是下单却显示无货?该怎么样设计?该怎么样优化?

    我从几个角度回答好像都没有击中面试官的❤

    最后回答这是一个读多写少的情况,应该用 redis 缓存,面试官还是表示同意的,但是太细致的还是说不上来。

    两次面试都被问到了,吴彦祖们 help me

    9 条回复    2021-01-31 12:25:36 +08:00
    yukiww233
        1
    yukiww233  
       2021-01-30 21:04:52 +08:00
    产品交互设计问题,不是技术问题啊...
    InternetExplorer
        2
    InternetExplorer  
       2021-01-30 21:08:25 +08:00
    为啥没货了前端会显示一件?
    如果是两个人同时打开,一个人下单,另一下单时没货的话,那就是个产品交互设计问题,提示用户被别人买走了就好了。
    如果不是上面这种情况的话,我觉得可能就是后台的数据问题了,但是提示应该还是一样的,让用户以为被别人买走了就好了。
    levelworm
        3
    levelworm  
       2021-01-30 21:24:06 +08:00 via Android
    他这个问题的点在哪里?
    szxczyc
        4
    szxczyc  
    OP
       2021-01-31 00:31:52 +08:00
    @yukiww233
    @InternetExplorer
    @levelworm
    时间有点久了,就不太清了。应该是 mysql 怎么样才能保证和 redis 中的商品数一致性的问题。
    k9982874
        5
    k9982874  
       2021-01-31 02:04:29 +08:00 via iPhone
    先假设前端是 web
    1 websocket 定时刷库存
    2 下单 redis 全局锁
    3 后面就是 ui/ux 的问题了
    yzbythesea
        6
    yzbythesea  
       2021-01-31 08:47:03 +08:00
    1. 在商店页面显示时,不是等到只有 1 个剩余,才显示 1 个。而是比如只有 10 个剩余,就显示 1 个。这样可以通融多个用户同时下单。各个用户之间是没法察觉的,也还避免了付款的时候无法下单的尴尬。
    2. 最后付款那一步一定要再检测一遍是否有货,这个时候不要注意性能,直接强一致性,避免出现用户付了款,最后下单却失败。
    lululau
        7
    lululau  
       2021-01-31 10:14:42 +08:00 via iPhone
    1L 正解,面试官思维混乱,表达无能
    des
        8
    des  
       2021-01-31 10:39:51 +08:00
    A. 加入购物车就锁定库存,这个不建议容易被人恶意刷库存。现在的电商一般都是下单锁库存,付款减库存
    B. 允许一定量的超售
    C. 像二楼说的,改设计。你就直接把 12306 的例子拿出来说,已有的大规模的例子相信对方没法反驳
    ClericPy
        9
    ClericPy  
       2021-01-31 12:25:36 +08:00
    想起我抢红米 K30S 那段时光... 伤害不高 侮辱性极强 [doug]
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2852 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 15:02 · PVG 23:02 · LAX 08:02 · JFK 11:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.