豆包后端面经
秋招第一站,就给我来了个大的,谁懂啊一个外卖项目问一个小时,总市场一个半小时。结束面试官说,要多注重细节的实现啊,不能只是有一个基本的想法,被追问麻了。。。
每次被八股时就被打断说,我不要听概念,你说详细一点的实习!!!
819-豆包后端开发
项目:
- 项目有哪些模块,单体项目还是微服务吗
- 数据库表模型怎么设计的,详细讲一下对于一张数据库表你的思考、设计过程
- 商品下单有没有库存概念,套餐和菜品都有库存字段吗
- 用户下单操作,后端的流程是怎样的,详细讲一下技术实现?
- 购物车怎么存储的?购物车的key是什么,value是什么
- 结算有哪些步骤如何做的幂等处理
- 库存扣减怎么做的有没有加锁,加锁的目的是什么,锁加在哪里(查询库存前还是查询后),用的什么锁怎么扣减,sql怎么写详细说一下
- 查询库存查的是缓存还是数据库缓存和数据库的库存不一致怎么办?
- 你这里为什么设置缓存,设置缓存更新数据库后清掉缓存,缓存命中率下降怎么办,怎么解决你说的高并发?
- 多个线程扣减库存,如何保证不会扣超有没有不加锁扣减库存的方案
- 说了CAS的想法,让详细讲一下设计方案,update语句怎么写
- 不考虑多线程的问题,现在如果一个线程扣减库存成功了,但生成订单失败了,怎么处理
- 答了mq进行补偿,追问怎么使用mq,消息发送时机是什么时候(扣减库存前还是后),如果还是生成失败,怎么提示用户,怎么回滚扣减的库存(A服务线程扣减库存,发消息给mq,mq ack确认,B服务消费消息生成订单,但生成订单失败,此时B服务线程要怎么做?怎么保障订单创建失败,A服务扣减的库存回滚(微服务模式下怎么做,能用事务)),有没有简单粗暴点的方法。
其他:
- 如何从零实现HashMap数组+链表/红黑树:数组存什么?链表存什么?存key还是存value还是怎么(这里被带偏了,说存value,实际key和value都要存,后面有更改)
- hash函数是干什么的,hash函数的入参和出参是什么,入参只能是字符串?
- 对于不同入参类型,hash函数怎么把他们转换成散列值的?
- 链表越来越长怎么解决—扩容rehash,多线程并发操作不安全怎么解决,还要保证一定并发度?
- 修改时锁怎么加,分段锁加在哪里?如果发生扩容怎么处理,加锁吗,加什么锁(扩容时,其他线程的插入操作怎么处理)—答了分段锁+全局锁两层锁
- 两层锁怎么加,所有写都要加吗——答了rehash才加全局锁
- java的concurrentHashMap怎么处理的,rehash时加锁了没,并发度如何
手撕:手算开平方(给定整x,n),精确到小数点后n位。输出保留指定位数的字符串
#25秋招记录##豆包##后端开发#