淘天 面经

淘天-一面

手撕:多线程打印 ABC

  • 请介绍一个你觉得复杂度较高或印象深刻的项目?
  • 在五六万 QPS 下,这个项目带来了什么问题?
  • 是因为资源本身有限吗?货拉拉的机器配置是怎么样的?
  • 理论上简单扩容能解决问题吗?
  • 数据是缓存到本地还是 Redis?
  • 活动数据会有资金损失(资损)相关的问题吗?
  • 缓存是怎么刷新的?
  • 如果流量都打到 Redis 上,有什么优化方法?
  • 你说的“get 加本地聚合代替 mget”具体是什么意思?
  • 本地聚合是指什么?【先用 size 做判定是否在本地缓存中已经缓存了,没有的部分再去单独 get】
  • 本地聚合加 mget 不好吗?【分散在各个 slot 上面,导致阻塞获取】
  • 如何保证本地和 Redis 的缓存数据正确?
  • 如果活动数据可以随意修改,怎么保证缓存和数据库一致?【canal 解析】
  • 如果活动开始的时候,大量活动还没有刷新到本地缓存,但是出现一个流量洪峰,打到 Redis 上,会对 Redis 的压力很大,你怎么处理的?【识别流量洪峰,提前 10 分钟刷新到本地缓存】
  • 这是同步操作还是异步操作?
  • 这个是你设计的吗?【是】
  • AOP 的原理是什么?
  • bytebuddy 的代理它是在哪个环节生成的?【后面查了查,应该在运行的时候:它通过操作字节码,在类被加载到JVM之前或者运行期间,对类的字节码进行修改和生成新的字节码,从而实现对类的功能增强。】
  • 为什么用 ByteBuddy?直接用 Spring AOP 不行吗?
  • 组件是如何实现降级获得热点数据的?怎么确保热点的过期?
  • cglib 和jdk 代理两者的核心差异是什么?
  • 你们货拉拉用的是哪个版本的 JDK?没考虑用更高版本吗?
  • 你会去看开源项目吗?【rocketmq】
  • 你对 rocketmq印象最深的技术特点或核心机制是什么?
  • 它是怎么实现消息驱动架构的?
  • rocketmq 的架构说一下【生产消费+nameserver+broker】
  • rocketmq 的日志如何实现高效率查找?【indexFile索引 + log】
  • 你在中国移动的项目是什么时候参加的?做了些什么工作?
  • 你提到的 EAV 数据库架构是如何实现动态配置的呢?
  • Java 实现多线程有哪些方式?
  • 除了线程池,Concurrent 包里有哪些关键方法?
  • 你了解 ReentrantLock 吗?如何实现公平和非公平锁?
  • 知道 CAS 的特性吗?
  • CAS 会有什么问题?
  • 你知道 CAS 的 ABA 问题吗?怎么解决?
  • 如果用三个线程交替打印 ABC,你有什么初步想法?用什么实现?
  • Volatile 能保证线程安全吗?
  • 除了原子计数,还有其他方式实现交替打印 ABC 吗?【信号量】
  • 你觉得项目上还有什么可以聊的?【token 算法降级】
  • 你最近有了解 AI 相关的知识或做过尝试吗?你用什么工具做的?【pytorch+时间序列 预测比特币走势】
  • 你对 AI 有什么看法?在工程技术领域,AI 是什么样的角色?
  • 你目前面了哪些公司?
  • 你在那些公司的面试流程到哪一步了?

淘天-二面

  • 你在项目中承担了哪些职责?遇到了哪些困难?怎么解决的?
  • 你们项目的投入情况如何?有多少人?你负责哪些模块?
  • 订单 ID 是如何关联活动的?是查询后挂到缓存吗?
  • 缓存的 key 是什么?是订单 ID 吗?
  • 同一个订单 ID 会反复请求查询吗?
  • 缓存的过期时间是多久?
  • 项目是分布式部署的吗?有多少台机器? 活动模块的机器是 40 台
  • 如何保障同一个请求最终落到同一台机器上? 网关层做一层 hash 的路由【需要注意什么?好在没有细问,自己还没有准备过】
  • 单台机器的配置是什么?能扛住多少 QPS? 单台机器是 4C8G,6w 的 qps 路由到每台机器上就是 3000 的请求量,tomcat 的负载会很大,因此需要做下面的一系列优化,而且在大促的时候会紧急扩容
  • 本地缓存会占用多少内存?有无限制?过期时间,为什么这么配置呢? 90% 的都是一个空缓存,10% 的才是实际缓存了活动列表的实际有效的请求。过期时间设计在 1 分钟,因为这个从下单到接单只有 15s 左右。而这个过期时间主要为了缓存空值,为了减少从里面获取,防止缓存击穿,所以下单的时候只需要判断当前的缓存的列表 list 里面是否是空,就能够保证是否要走第二级缓存了。
  • 后续打算如何优化业务侧缓存? 紧急的情况下扩容 & 精简 BO 对象 & 运营侧加强配置的管理
  • 如果 Redis 不可用,安全性如何保障?
  • 多端互踢和 token 迁移是怎么实现的? logoutById 冲突的时候 让所有在 redis 中的都失效
  • token 迁移方案是谁定的? 双写【需要深入去挖掘】
  • 在你的理解中,有没有更好的迁移方案? 按照冷热用户做一个区分,保证整个过程中完成不停机的更新
  • 你预计实习多久?
  • 你 base 在杭州没问题吗?
全部评论
牛逼,都看不懂
1 回复 分享
发布于 昨天 12:40 陕西
mark
点赞 回复 分享
发布于 昨天 17:11 广东

相关推荐

评论
1
3
分享

创作者周榜

更多
牛客网
牛客企业服务