滴滴提前批后端开发
滴滴一、二面
一面
- 介绍项目,讲一下项目难点
- 你的缓存和数据库是怎么保证一致性的
- 如果在缓存还没过期的时间内,数据库的数据就发生变更了怎么办
- 超卖问题怎么解决的
- 分布式锁是怎么做的
- 看门狗机制是怎么实现的
- redis分布式锁底层是基于什么命令实现的
- 少买是怎么解决的
- 你的消息队列里面存的是什么内容
- 如果进队列前返回给用户成功,但是实际上库存已经不足了,这时候进消息队列了,用户实际上是抢不到票的,这个问题你怎么解决的。
- 基于redis能解决上述问题吗。
- JVM的内存划分
- 垃圾回收机制
- Java线程的生命周期
- Java开一个线程的内存开销是多少
- 了解协程吗
- 讲一下hashmap的具体实现
- rehash的过程
- 讲一下信号量和CAS的区别
- 这两个的设计思想分别对应的是乐观锁还是悲观锁
- 你在数据库层面对于乐观锁和悲观锁是怎么应用的
- 信号量可以用来当锁用吗
- 信号量当锁是能防止指令重排问题吗,能够保证数据的可见性吗
- volatile关键字
- 从计算机的操作系统的角度讲一下为什么会出现数据可见性的问题
- MySQL引擎的索引是怎么设计的
- 聚簇索引和非聚簇索引
- 索引覆盖
- 是不是索引越多,性能越好
- 增加索引后,性能开销主要在哪些环节
- 如果不考虑索引的维护成本,还有哪些操作的性能开销会增大
- MySQL的隔离级别
- 幻读问题是怎么解决的
- 能否对非索引字段加锁
- 算法题:因数分解
二面
- 二面主要是问了一些学校上的问题,为什么不走算法,走开发了之类的
- 然后做了个思考题:甲乙两人进行五局三胜的投硬币,赢者拿走两百元人民币,此时甲赢了两局,乙赢了一局,但是两个人都不想玩了,你觉得怎样分配金额比较合理。
- 写了到算法题,518. 零钱兑换 II
总结:二面的算法题没写出来,本来我是准备按动态规划写的,但是面试官让我用递归写,我这个脑容量不够,写递归贼费劲,就只写出来个大概,然后就挂了。太久没看算法题了,这东西是真容易忘啊。
而且下午五点的一面,面完了直接发邮件说半个小时后二面,二面完直接发感谢信。从开始到挂,只用了三个小时。滴滴流程走的是快哈,我以为能拿到秋招的第一个offer呢,结果算法题翻车了。
#面经##滴滴##Java##后端##提前批#