葡萄城一面
感觉面试官不是很尊重人,面试的过程中一直和旁边的人讲话,我说完了又过来问我已经说过的东西
比较熟悉的技术栈是什么?
实习期间做了什么工作?具体一点
讲一下短链接项目
讲一下分库分表怎么做的,为什么要分表,你的分片键用的什么?
你消息队列如何实现幂等性处理的?如何保证消息只被消费一次?保证消息不会丢失?
怎么用redis+lua脚本实现限流的?
lua脚本为什么是原子性的?
然后这时候开始说,看到很多人都是用的短链接项目
如何实现点赞排行榜的?
讲一下缓存三兄弟
乐观锁如何保证不会超卖?这里说了半天,我说是通过先将库存缓存预热到redis中,然后先通过redis decrement命令去扣减缓存,如果库存小于0了就直接返回给用户说已经被抢完了,不会再去操作数据库了,但是感觉面试官一直没听懂,开始说你这里redis减到负数了就已经超卖了,然后说你这里不是先查再减吗,这也不是原子操作,也会超卖,然后我又说我用的是decrement命令,直接去减了,然后说半天感觉他还是没听懂。
然后开始写题
先创建一个row类,row类中有key,value两个属性,现在传入一个list集合,集合存放的是row对象,如果集合中row对象有相同的key,但是value互为相反数,就将这两个对象都删去,返回去重后的集合