滴滴Java后端开发一面(上)贼难)


1.自我介绍
2.聊聊项目经历,看你做过支付和风控,介绍一下具体怎么做的
3.风控这个项目所以你当时是在风控风控团队,对吧,那你跟模型交互有单独负责模模型的人,还是说这个模型是由你们自己去维护的
4你们模型上线流程是怎么样的,线上特征与线下特征一致性怎么保证呢
5那你刚才说到这个实时链路需要实时性非常强,怎么去保证这个实时的去给到这个模型
6为什么要做模型前置
7.有这么个场景比如说现在有一张订单表,然后这个表有主键,状态,下单时间,用户ID这些字段,我要查询我的订单列表就像一些用户他比如点我的进去,就能查到他的订单列表,然后这个订单呢,可能是按照状态去分不同type页的,我怎么去构建订单表的这个索引让它查询更高效,就刚才说到这几个字段,有哪些表和字段怎么设计你写一下
8.组合索引里面有个问题是,比如(uid,status,time)如果你把状态放第二位,对吧,但是比如它有那种不带状态的查询,对吧,他可能是我的所有订单。这种情况下就是你走,你只能走你的UID了。如果他还有个时间,比如说他近一年的所有订单,其实你就走不到了,所以基于这种情况为什么你刚才还说 status 放第二位“没问题
9那如果你的业务里单用户订单量真的很大怎么办呢,比如外卖配送员一天几百单、企业客户几千单那就不能让索引断层了是吧
10.再加一个索引 (user_id, create_time)你觉得行么,为什么
11.但有个问题比如说像淘宝这种,它的订单量会非常大,他可能会去做这种数据的冷热分离,这种情况下,哎,就算我带了查询条件,你其实也是全查对的吧?他如果做了冷热分离的话,我在USERID加一个创建时间来查的话,其实你走不到索引的,它依然是全查,就是查所有的库,所以你觉不觉得光靠 (user_id, create_time) 联合索引是解决不了跨库查询的,比如这条sql:WHERE user_id = ? AND create_time > \'最近一年\',这一条SQL会广播到所有库执行,因为分片是按时间拆的,不是按user_id拆的也就是说:索引不是不能用,而是路由没有办法确定该查哪个库,这种该怎么解决呢
12.既然这样为什么拼多多、美团、淘宝还是做冷热分离
13有这么一个场景你看看怎么做,比如说我现在有个库存表。然后我可能有一行代表某个商品,它的库存数,并发场景下,怎么去做库存的原子扣减