这是之前面试遇到的一个面试题:当用户下单的时候,前端显示还要一件货物,但是下单却显示无货?该怎么样设计?该怎么样优化?
我从几个角度回答好像都没有击中面试官的❤
最后回答这是一个读多写少的情况,应该用 redis 缓存,面试官还是表示同意的,但是太细致的还是说不上来。
两次面试都被问到了,吴彦祖们 help me
1
yukiww233 2021-01-30 21:04:52 +08:00
产品交互设计问题,不是技术问题啊...
|
2
InternetExplorer 2021-01-30 21:08:25 +08:00
为啥没货了前端会显示一件?
如果是两个人同时打开,一个人下单,另一下单时没货的话,那就是个产品交互设计问题,提示用户被别人买走了就好了。 如果不是上面这种情况的话,我觉得可能就是后台的数据问题了,但是提示应该还是一样的,让用户以为被别人买走了就好了。 |
3
levelworm 2021-01-30 21:24:06 +08:00 via Android
他这个问题的点在哪里?
|
4
szxczyc OP |
5
k9982874 2021-01-31 02:04:29 +08:00 via iPhone
先假设前端是 web
1 websocket 定时刷库存 2 下单 redis 全局锁 3 后面就是 ui/ux 的问题了 |
6
yzbythesea 2021-01-31 08:47:03 +08:00
1. 在商店页面显示时,不是等到只有 1 个剩余,才显示 1 个。而是比如只有 10 个剩余,就显示 1 个。这样可以通融多个用户同时下单。各个用户之间是没法察觉的,也还避免了付款的时候无法下单的尴尬。
2. 最后付款那一步一定要再检测一遍是否有货,这个时候不要注意性能,直接强一致性,避免出现用户付了款,最后下单却失败。 |
7
lululau 2021-01-31 10:14:42 +08:00 via iPhone
1L 正解,面试官思维混乱,表达无能
|
8
des 2021-01-31 10:39:51 +08:00
A. 加入购物车就锁定库存,这个不建议容易被人恶意刷库存。现在的电商一般都是下单锁库存,付款减库存
B. 允许一定量的超售 C. 像二楼说的,改设计。你就直接把 12306 的例子拿出来说,已有的大规模的例子相信对方没法反驳 |
9
ClericPy 2021-01-31 12:25:36 +08:00
想起我抢红米 K30S 那段时光... 伤害不高 侮辱性极强 [doug]
|