拼多多服务端开发暑期实习一面
3月29日一面,当下复杂的疫情形势,面试官居然还在公司上班,拼多多果然有点狠的,respect!
- 先做了一道算法题,数组的topK元素,说了堆的做法,面试官问还有没有别的方法,快排的做法记不起来了
- 自我介绍
- 挑一个你参与度比较高的项目,讲一讲项目的情况,实现了哪些模块,负责的内容,遇到的困难,采用了哪些技术等
- 项目上线了吗?做了哪些模块?
- 分布式锁的实现中,你是怎样模拟这个场景的?有做验证吗,即有没有测试是否没有拿到锁的真的阻塞住了?
- 在你的分布式事务解决方案中,如果消息还没派发就宕机了怎么办?如果消息还没来得及持久化就宕机了怎么办?不会
- 如果消息消费失败怎么办?答的手动ACK
- 按你的解决方式,如果一条消息本身就是错误的,不管怎么消费都是失败的,那这条消息始终不能ACK,怎么解决?答的日志监控,手动处理
- 商品服务的数据库表结构是怎么设计的?
- 商品属性表存储了什么信息?
- SKU和SPU是什么,能各举一个例子吗?
- 在页面上展示的是SPU还是SKU?
- 订单表的结构是怎样的?
- 一个订单有多个商品是怎样存储的?
- Sentinel了解吗?项目中用来做什么的?
- 秒杀系统是怎么做的?
- 按你的解决方法,一个商品对应一个key放在redis中,如果百万人想秒杀,redis根本扛不住的,怎么解决?拆分成多个key,分摊到不同的redis服务器上,请求进来通过负载均衡分配到不同服务器
- 那如果一个买家分配到的那个服务器正好没有库存了,但是别的服务器可能还有库存,这时候应该怎么办?返回一个等待页面,让用户重试
- Spring和SpringBoot的区别是什么,为什么要用SpringBoot?
- SpringBoot自动配置的原理?
- SpringBoot的注解都用过哪些?
- SpringBoot是怎么发现到类上标注的这些注解并使其生效的?后面面试官提示,应该是和包扫描注解相关
- 事务用的注解?原理是什么?@Transactional,原理不了解
- @Transactional可以用在静态方法上吗,可以用在私有方法上吗?
- 有一个很大的二维数组,行优先遍历和列有限遍历在时间效率上有区别吗?
- 说一说数据库的索引
- 说一说HashMap
- HashMap可以用null作为key吗?是可以的,如果是null,hash值则为0,但是我答的不可以orz
- 反问环节
面了50分钟,感觉是面到现在最煎熬的一次,好多问题都没有准备过,场景题也都是靠临时发挥,SpringBoot的原理忘的一干二净,二维数组遍历的应该和计组、操作系统相关,但我还没学,总之就是很麻。当然也揭示了很多自身的问题,需要好好补足。
#拼多多##实习##面经#