淘天 面经

淘天-一面

手撕:多线程打印 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 回复 分享
发布于 04-29 12:40 陕西
mark
点赞 回复 分享
发布于 04-29 17:11 广东

相关推荐

04-28 19:01
已编辑
西南大学 Java
1.自我介绍2.问一些基本情况(能实习多久,手上有无offer,学校成绩…..)3.手撕包含 min 函数的栈(撕出来了,acm模式还是比较简单的一道题)4.八股/项目介绍项目你怎么验证你的项目能支持这么高的并发?如果有几十万的用户怎么解决缓冲问题?怎么实现异步订单处理?怎么控制库存?库存扣除的实现?订单减扣的准确性怎么保证?库存你设计了几张表?主键是什么?怎么提升并发能力?分库分表的实现?cpa?那你订单超卖,或者说是那库存信息不对,或影响了用户的一些数据怎么处理?刚刚你不是说有那个 AP 吗?那个 P 它不是就已经分区了吗?分区你怎么保证它上锁能上成功呢?分常见分布式一致,它有什么解决方案,你知道吗?一个请求从 APP 发出到服务端消费中间会大概会经过什么?TCP 怎么保障可靠呢?mysql隔离级别?可重复读怎么实现?有哪些类型的索引?主键索引在数据结构上与其他索引的区别?什么是聚簇索引设计模式?工厂模式适用于哪些情况?Java 中的 ArrayList 和 LinkedList 适用于什么场景?它们的扩容策略?怎么排查一些问线上问题,如果 Java 里面的 CPU 在增长,那你怎么去定位这个问题?比如说它 CPU 现在就变得很高?手撕出来了,然后八股大部分都回答了,但是我有好几个问题一开始都没听清楚,所以可能答得不够好,感觉又要凉了,转行能干啥,啊啊啊啊啊,感觉自己找不到实习了,有无点击就送的公司😭 #面经#  #字节#  #后端面经#
查看28道真题和解析
点赞 评论 收藏
分享
评论
1
6
分享

创作者周榜

更多
牛客网
牛客企业服务