1年经验,数字藏品&电商项目¶
面试者背景¶
:::warning ** 专升本,24年毕业,数字藏品项目,文化&IP数字化藏品,售卖&展示,spring clo**ud Alibaba(nacos、dubbo、sentinel、redis、mysql、shardingjdbc、es),高并发
负责交易和订单模块,平台用户量多少?注册用户100万,交易用户60万,订单量多少?5000万存量。最近半年卖的最火的是哪一款?河南博物馆陶土小狗,预定量7W。
下单前都需要预定吗?VIP先购买,开启预定,预定后正常售卖。如何做的购买权限控制?布隆过滤器?刚开通vip还没来得及进入布隆过滤器怎么办?为啥这里要用布隆过滤器?才100万用户,直接查数据库不就行了么?过滤恶意攻击流量,布隆过滤器是基于内存的还是redis的?
如果用户的vip到期了,布隆过滤器没办法删除怎么办?预约怎么做的?redis,set,如何避免一个用户预约多次?
抗500 qps的方案介绍下?redis做流量拦截?lua扣减、创建订单、500QPS算高并发么?同一个商品抗3000-4000,阿里云数据库,订单创建为啥要搞2步?要一个订单号
订单的状态是怎么设计的?INIT,confirm,paid,
上链,链是自己开发的吗?以太坊
下单过程什么情况会出现数据不一致,redis扣成功,应用挂了。旁路验证,
Redis和数据库库存不一致问题怎么解决?核对告警,人工操作。核对任务怎么做的?redis流水存储什么数据结构?如何扫描同一个商品的流水?为啥不搞个hash结构,
如何判断一个商品是否走秒杀链路,网关检查商品过热,如何切流?
藏品的唯一编号?雪花算法?不需要给用户展示吗?
藏品的持有编号(顺序)高并发情况下怎么生成的?编号生成好,写库失败了怎么办?藏品id加分布式锁。分布式锁怎么做的?注解+aop切面+redisson,
分布式锁的自定义注解是你自己写的吗?怎么设计的?key&keyExpression(el表达式),waitTime,releaseTime。AOP拦截,如何确保解锁成功?finally,
注解的AOP顺序问题如何解决(锁和事务)?加锁了还是有重复数据(事务还没提交,锁就释放了),怎么解决的?order注解。
介绍下AOP的原理?代理的注册过程,
分表算法怎么选的?自定义算法,取模,分了多少表?4张???
介绍下redis的线程模型?单线程执行命令,为什么?原子性,为啥单线程也能很快?
Redis如何实现多个命令以原子性方式执行?lua脚本为啥能保证原子性?lua脚本执行过程中失败了咋办、lua会回滚吗?不回滚咋保证原子性?redis支持事务吗?不支持。
代码中写lua有什么缺点吗?不好debug。Redisson框架,jedis用过吗?redisTemplate,各自适合什么场景?
AI熟吗?RAG的原理是什么?向量库是怎么做检索的?怎么判断相似度?用过哪个向量数据库,FAISS。知道混合检索吗?如何判断一个rag效果好不好?
:::
题目解析¶
:::color4 如何做的购买权限控制?布隆过滤器?刚开通vip还没来得及进入布隆过滤器怎么办?为啥这里要用布隆过滤器?才100万用户,直接查数据库不就行了么?过滤恶意攻击流量,布隆过滤器是基于内存的还是redis的?
如果用户的vip到期了,布隆过滤器没办法删除怎么办?预约怎么做的?redis,set,如何避免一个用户预约多次?
:::
:::color4 抗500 qps的方案介绍下?redis做流量拦截?lua扣减、创建订单、500QPS算高并发么?同一个商品抗3000-4000,阿里云数据库,订单创建为啥要搞2步?要一个订单号
:::
本方案在项目实战课中:
[[20_🧣🧣🧣项目实战课介绍&老用户福利]]
:::color4 订单的状态是怎么设计的?INIT,confirm,paid,
上链,链是自己开发的吗?以太坊
:::
:::color4 下单过程什么情况会出现数据不一致,redis扣成功,应用挂了。旁路验证,
Redis和数据库库存不一致问题怎么解决?核对告警,人工操作。核对任务怎么做的?redis流水存储什么数据结构?如何扫描同一个商品的流水?为啥不搞个hash结构,
如何判断一个商品是否走秒杀链路,网关检查商品过热,如何切流?
:::
本方案在项目实战课中:
[[20_🧣🧣🧣项目实战课介绍&老用户福利]]
:::color4 藏品的唯一编号?雪花算法?不需要给用户展示吗?
藏品的持有编号(顺序)高并发情况下怎么生成的?编号生成好,写库失败了怎么办?藏品id加分布式锁。分布式锁怎么做的?注解+aop切面+redisson,
:::
藏品编号适合用redis自增id,而不是雪花算法,因为用户要看到顺序的序号,如1 2 3 4。
失败的问题解决方式是加分布式锁,避免并发情况下出现序号乱序的问题。
:::color4 分布式锁的自定义注解是你自己写的吗?怎么设计的?key&keyExpression(el表达式),waitTime,releaseTime。AOP拦截,如何确保解锁成功?finally,
注解的AOP顺序问题如何解决(锁和事务)?加锁了还是有重复数据(事务还没提交,锁就释放了),怎么解决的?order注解。
介绍下AOP的原理?代理的注册过程,
:::
:::color4 分表算法怎么选的?自定义算法,取模,分了多少表?4张???
:::
:::color4 介绍下redis的线程模型?单线程执行命令,为什么?原子性,为啥单线程也能很快?
Redis如何实现多个命令以原子性方式执行?lua脚本为啥能保证原子性?lua脚本执行过程中失败了咋办、lua会回滚吗?不回滚咋保证原子性?redis支持事务吗?不支持。
代码中写lua有什么缺点吗?不好debug。Redisson框架,jedis用过吗?redisTemplate,各自适合什么场景?
:::
:::color4 AI熟吗?RAG的原理是什么?向量库是怎么做检索的?怎么判断相似度?用过哪个向量数据库,FAISS。知道混合检索吗?如何判断一个rag效果好不好?
:::