淘天 面经

淘天-一面

手撕:多线程打印 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 在杭州没问题吗?
全部评论
mark
点赞 回复 分享
发布于 04-29 17:11 广东

相关推荐

也是之前的面经,流程太长了,后来hr面已经接鹅了,拒了淘天了3.20 淘天一面(50min1. 拷打实习2. 实习介绍3. 线程池的参数怎么选择,具体的线程数量怎么选择的4. TTL线程池的作用,两个作用只说出了一个- 当线程池中的线程执行任务时,TTL将快照数据写入当前线程的TransmittableThreadLocal变量,任务结束后自动清理,避免残留数据影响后续任务5. 缓存更新策略,怎么保证一致性。如果用消息队列的话有延时,有没有别的策略6. 如何自己设计一个分布式锁,需要考虑哪些要素7. 场景题:点赞的操作顺序性怎么保证(比如实际到达Redis的是先删除后点赞,怎么保证一致性)- 对操作加ID- 对操作加时间戳- 消息队列8. Redis基本数据类型,压缩列表什么时候用- 数据量小的时候是压缩列表,大的时候是跳表9. 双亲委派,tomcat为什么打破(两个只说了一个- 依赖版本不同,需要确保自己是自己需要的版本的依赖- 保证API安全10. 阅读过哪些源码(触发连招11. 反问:是否接受base杭州,后续还有2+14.8 淘天交易二面(50min)1. 实习介绍2. 场景题:设计一个秒杀场景,后端10个服务,每个1000的qps,10w个用户请求,100个泡泡玛特。要求:1. 不能超卖不能少买。2. 用户体验良好,失败的快速失败。3. (忘了,好像是不能超qps)3. 后续最多还有一轮4.16 淘天交易三面(40min)1. 自我介绍,聊职业规划2. 聊什么才算一个好的c端产品3. 对AI的理解,RAG,向量数据库等等4. 实习介绍5. 数据库乐观锁和悲观锁分别怎么实现,使用场景6. 假如服务半夜三点调用超时,接口失败,怎么排查怎么解决- 对方说考虑对方调用超qps的情况和自己的问题的情况7. 通过的话还有一轮hr面4.21才给我打电话约hr面,已经接鹅好久了,拒了hr面当晚三面面试官又打电话,非常阿里味了,后来hr面当天还是拒了
查看16道真题和解析 面试问题记录 牛客创作赏金赛
点赞 评论 收藏
分享
评论
4
14
分享

创作者周榜

更多
牛客网
牛客企业服务