得物一面
09.02 得物一面
自我介绍
数据库为什么用B+树作为索引?
现在SSD的IO这么快,对数据库而言有什么比B+树更好的索引数据结构吗?
这里我答了前缀树,但是说了一下我并没有去对比前缀树与B+树具体的优劣,面试官说没事,他也只是问一下,想探讨一下。
如果虚拟机发生了Full GC,该怎么排查问题?
这里我答了Full GC的触发条件、内存溢出怎么排查、虚拟机参数设置不对导致Full GC。
讲一讲TCP三次握手
如果程序发生死锁该怎么办?
这里我讲了讲死锁产生的原因和四个条件,然后分别讲了破坏其中三个条件就可以避免死锁。
如果用户下单时出现网络异常,导致由多个下单请求或生成多个订单号该怎么办?
这里我介绍了一下我项目里这种问题是用RabbitMQ来做,将订单放到消息队列里,然后balablaba。。。。
怎么保证唯一ID呢?
我回答的是用UUID或者雪花算法生成唯一标识ID。
那如果以时间戳来生成唯一ID,项目里如何区分用户是误触多次下单还是真的想要下单呢?
我介绍了我项目里用时间段来作为唯一表示ID,面试官说我这是提前设置好了下单的规则,如果是淘宝呢?该怎么办?
然后面试官说可以慢慢想想,看看有没有什么思路?
我后面又说了可以通过加锁,来控制用户下单时操作的唯一性,然后说了一下思路。。。。。
面试官说对,他就是想考锁相关的知识。
现在有10亿条数据,但是处理的内存只有400MB,如何找出其中第10000到11000条数据?
这个就是很经典的处理海量数据的题目,没啥多说的。
直接分治法 + 小根堆排序就能解决。