java后端面试-滴滴秋储计划

hr电话时间:2021-6-28 下午4:30约面试
面试时间:2021-6-28 下午19:00 第一轮面试
时长:58m

记住的面经如下:

  1. 现在几年级,下学期有没有课。
  2. 随便自我介绍一下。
  3. 项目问题-有以下问题:
    a、单体开源项目(秒杀) - > 拆分成分布式(拆分依据是什么)。
    b、拆分的时候你做过哪些业务,做过哪些工作。
    c、项目分布式部署。
  4. 你项目里的分布式锁怎么解决防止超卖问题。
  5. 你项目理的分布式事务是怎么实现的。
  6. 说一下Volatile关键字
  7. 说一下Spring中的@Transaction注解的事务传播特性。
  8. 一个算法题。一个数组长度为n, 每个元素值的都是0-99,统计重复个数。

反问:
秋储计划是什么东西,是实习直接转正么。

全部评论
6、项目问完之后, 就开始问基础了。 Volatile理解。 我从这几个方面来回答的。Volatile主要解决可见性和禁止指令重排。解决可见性不得不说JMM了,说到JMM不得不说缓存一致性协议,balbal,一大堆,扯到了操作系统底层8大原子操作,总线嗅探,等等。解决指令重排,从编译器层面, 指令并行执行层面, 处理器层面各方面阐述。最后从Volatile修饰的变量从读, 从写两个层面怎么加内存屏障来解决指令重排的。babababba10分钟左右吧。
2 回复
分享
发布于 2021-06-29 09:45
9、反问,不打leader(我猜想的),努力工作,就能转正,让leader直到你很努力就行。哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
2 回复
分享
发布于 2021-06-29 09:52
联想
校招火热招聘中
官网直投
8、这个算法题就更简单了, 申请一个arr = [0, ...... 99]数组,遍历n数组, 对arr中的元素相同+1, +1。 或者hashmap 或者两层循环。 回答结束。
1 回复
分享
发布于 2021-06-29 09:51
1、随便说一下你是几年级, 没有课。
点赞 回复
分享
发布于 2021-06-29 09:19
2、面试官,您好。 我是xxx, 今年几年级,学校在哪里。个人技能简历上有写, 项目经历的话,为了应对这次暑期实习,我自己做了一个分布式秒杀系统。然后本科做过几个老师在外面接的项目,这些项目主要是做crud,没有什么技术含量,所以我就没有占用简历的空间,希望跟面试官交流一下有关分布式方面的问题。这个项目主要用的中间件有Dubbo, Zookeeper, Redis, RocketMQ。面试官我回答完了。
点赞 回复
分享
发布于 2021-06-29 09:22
3、这个项目我是根据一个开源的单体项目拆分成分布式项目,用的框架是SpringBoot + Dubbo(远程通信) + Zookeeper(注册中心)。 拆分依据是通过业务层的UserService,CouponService,OrderServcie, UserService, PayService, GoodService 差分成了不同的服务, 服务如下: User-Service Module, Coupon-Service Module, Order-Service Module, Pay-Service Module, Goods-Service Module, Api Module等模块。由于单体项目是在一个JVM中运行的所以我拆分成分布式之后,Synchronize或者ReentrantLock就失效,为什么失效呢,因为这些服务部署在不同的结点上,运行在不同的JVM中,所以用单体锁,不能够防止超卖。所以我做的第一个工作就是,使用了分布式锁。主要解决方案有(mysql, redis, zookeeper)。 由于部署在不同的几点。在单体项目中的事务不能作用于不同的结点。所以这部分工作我使用了分布式事务。主要解决方案如下(基于xa协议的2PC, 3TC, 基于可靠消息的最终一致性)。由于redis和mysql服务器部署在不同的结点上,由于网络问题或其他问题,导致redis和mysql数据不一致性。主要解决方案如下(延迟双删,设置过期时间,删除缓存重试机制,binlog异步删除缓存)。在并发比较高的时候,防止系统被冲击,采用了一些一系列的流量削峰策略(CDN, Nginx, RocketMQ, 和主流限流算法)。
点赞 回复
分享
发布于 2021-06-29 09:40
接上--根据上面我描述的项目,面试官针对上面的问题, 问出来4, 5两个问题,扯了大概30分钟, 吓死我了。
点赞 回复
分享
发布于 2021-06-29 09:42
7、开始问Spring源码了, 问method1 用@Transaction注解, method2用@Tranaction注解, 事务传播特性之类的你是怎么理解的。 从两个方面来回答, 第一个方面,Spring源码层面, 就是容器启动的时候在beanFactory的后置处理的 这个ConfigurationClassPostProcessor方法中解析注解的, 在bean的后置处理的after方法把这个类通过cglib解析成代理类, 然后根据然后执行拦截器链, balabala解释一通。源码解释完之后,从应用层面回答,bababbababbab。
点赞 回复
分享
发布于 2021-06-29 09:50
大佬,我可以看看简历上秒杀项目介绍部分吗 想学习一下
点赞 回复
分享
发布于 2021-07-10 23:40
点赞 回复
分享
发布于 2021-07-18 20:07
m
点赞 回复
分享
发布于 2022-06-16 16:17
这是hr面吗
点赞 回复
分享
发布于 2022-07-01 01:52

相关推荐

头像 头像
05-06 18:28
已编辑
Java
点赞 评论 收藏
转发
投递腾讯等公司10个岗位
点赞 评论 收藏
转发
9 12 评论
分享
牛客网
牛客企业服务