面试官问我:什么是高并发下的请求合并? (下)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 面试官问我:什么是高并发下的请求合并? (下)

第二个我们看看定时任务是在哪儿进行注册的。

这个就很好找了。我们已经知道默认参数是 10ms 了,只需要顺着链路看一下,哪里的代码调用了其对应的 get 方法即可:


image.png


同时,我们可以看到,其定时功能是基于java.util.concurrent.ScheduledThreadPoolExecutor#scheduleAtFixedRate实现的。

第三个我们看看是怎么控制超过指定数量后,就不等待定时任务执行,而是直接发起汇总操作的:


image.png


可以看到,在com.netflix.hystrix.collapser.RequestBatch#offer方法中,当 argumentMap 的 size 大于我们指定的 maxBatchSize 的时候返回了 null。

如果,返回为 null ,那么说明已经不能接受请求了,需要立即处理,代码里面的注释也说的很清楚了:


image.png


以上就是三个关键的地方,Hystrix 的源码读起来,需要下点功夫,大家自己研究的时候需要做好心理准备。

最后再贴一个官方的请求合并工作流程图:

image.png

打完收工。


面试题


前面说的深圳的,两年经验的小伙伴把面试题汇总了一份给我,我也分享给大家吧。


Java基础

  • volatile关键字底层原理
  • 线程池各个参数含义
  • lock、synchronized区别
  • ReentrantLock锁公平与非公平实现、重入原理
  • HashMap扩容时机(容量初始化为1000和10000是否触发扩容)、机制、1.7与1.8的差异
  • ConcurrentHashMap1.7、1.8的优化与差异,size方法实现差异
  • ThreadLocal原理与风险、为什么会内存泄露
  • 阻塞队列的用途、区别
  • LinkedBlockingQueue对列的add、put区别,实际过程中如何使用
  • 悲观锁、乐观锁、自旋锁的使用场景、实现方式、优缺点
  • Class.forName、loadClass区别;
  • 线程生命周期、死锁条件与死锁避免、状态转换关系(源码级别);
  • String intern方法;
  • cas的优缺点与解决方案、ABA问题;


JVM相关

  • CMS垃圾回收的碎片解决方式
  • 常用的垃圾回收器
  • JVM垃圾回收器CMS的优缺点、与G1的区别、进入老年代的时机
  • JVM内存模型
  • JVM调优思路
  • GC Root、ModUnionTable
  • 偏向锁、轻量级锁、重量级锁底层原理、升级过程
  • jmap、jstat、top、MAT
  • CMS与G1对别
  • GC Root、ModUnionTable;


Redis相关

  • Redis高性能原因
  • Redis的部署模式
  • RedisCluster底层原理
  • Redis持久化机制
  • 缓存淘汰机制
  • 缓存穿透、缓存雪崩、缓存击穿发生场景与解决方案


SQL相关

  • MyBatis拦截器的用途
  • MyBatis动态SQL原理
  • 分库分表方案设计
  • MySQL怎么解决幻读、原理(源码级别)
  • Gap锁的作用域原理
  • RR、RC区别
  • MySQL默认的事务隔离级别、Oracle默认的事务隔离级别
  • MySQL为啥使用B+树索引
  • redo log、binlog、undo log写入顺序、分别保证了ACID的什么特性
  • 数据库乐观锁
  • MySQL优化
  • MySQL底层原理


Spring相关

  • @Bean注解、@Component注解区别
  • Spring Aop原理
  • @Aspect和普通AOP区别
  • 自定义拦截器和Aop那个先执行
  • web 拦截器
  • DispatchServlet原理


Dubbo相关

  • Dubbo负载均衡、集群容错
  • Dubbo SPI机制、Route重写使用场景
  • Dubbo RPC底层原理
  • 全链路监控实现原理


分布式相关

  • 分布式锁的实现方式
  • 漏斗算法、令牌桶算法
  • 事务最终一致性解决方案
  • SLA
  • 分布式事务实现方式与区别
  • Tcc Confirm失败怎么办?
  • 分布式锁的各种实现方式、对比
  • 分布式ID的各种实现方式、对比
  • 雪花算法时钟回拨问题与应对方案
  • 红锁算法


设计模式

  • 常用的设计模式
  • 状态模式
  • 责任链模式解决了什么问题
  • 饿汉式、懒汉式优缺点、使用场景
  • 模板方法模式、策略模式、单例模式、责任链模式


Zookeeper

  • Zookeeper底层架构设计
  • zk一致性


MQ

  • Kafka顺序消息
  • MQ消息幂等
  • Kafka高性能秘诀
  • Kafka高吞吐原理
  • Rocket事务消息、延时队列


计算机网络

  • 浏览器输入一个url发生了什么
  • Http 1.0、1.1、2.0差异
  • IO多路复用
  • TCP四次挥手过程、状态切换
  • XSS、CRSF攻击与预防
  • 301、302区别


Tomcat

  • Tomcat大概原理


代码

  • 手写发布订阅模式
  • 大数(两个String)相加


场景问题

  • 打赏排行榜实现
  • 高并发下的请求合并
  • CPU 100%处理经验
  • 短链系统设计
  • 附近的人项目实现
  • 10w个红包秒级发送方案
  • 延时任务的实现方案与优缺点对比

说来惭愧,有些题我也答不上来,所以和大家一起查漏补缺吧。

哦,对了,那个小伙子最终收割了好几个大厂 offer,跑来问我哪个 offer 好。

你说这问题对我来说那不是超纲了吗?我也没在大厂体验过啊。所以我怀疑他不讲武德,来骗,来偷袭我这个老实巴交的小号主,我希望他能耗子尾汁,在鹅厂好好发展:


image.png

才疏学浅,难免会有纰漏,如果你发现了错误的地方,可以提出来,我对其加以修改。

感谢您的阅读,我坚持原创,十分欢迎并感谢您的关注。

我是 why,一个被代码耽误的文学创作者,不是大佬,但是喜欢分享,是一个又暖又有料的四川好男人。

还有,欢迎关注我呀。

目录
相关文章
|
9月前
|
存储 监控 NoSQL
140_异步推理:队列管理框架 - 使用Celery处理高并发请求的独特设计
在大型语言模型(LLM)部署的实际场景中,推理服务的并发处理能力直接影响用户体验和系统稳定性。随着LLM应用的普及,如何高效处理大量并发请求成为部署优化中的关键挑战。传统的同步请求处理方式在面对突发流量时容易导致系统过载,响应延迟增加,甚至服务崩溃。异步推理通过引入队列管理机制,能够有效缓冲请求峰值,平滑系统负载,提高资源利用率,从而为LLM服务提供更稳定、更高效的并发处理能力。
806 7
|
缓存 前端开发 中间件
[go 面试] 前端请求到后端API的中间件流程解析
[go 面试] 前端请求到后端API的中间件流程解析
|
算法 NoSQL 应用服务中间件
阿里面试:10WQPS高并发,怎么限流?这份答案让我当场拿了offer
在 Nacos 的配置管理界面或通过 Nacos 的 API,创建一个名为(与配置文件中 dataId 一致)的配置项,用于存储 Sentinel 的流量控制规则。上述规则表示对名为的资源进行流量控制,QPS 阈值为 10。resource:要保护的资源名称。limitApp:来源应用,default表示所有应用。grade:限流阈值类型,1 表示 QPS 限流,0 表示线程数限流。count:限流阈值。strategy:流控模式,0 为直接模式,1 为关联模式,2 为链路模式。
阿里面试:10WQPS高并发,怎么限流?这份答案让我当场拿了offer
|
消息中间件 NoSQL 关系型数据库
去哪面试:1Wtps高并发,MySQL 热点行 问题, 怎么解决?
去哪面试:1Wtps高并发,MySQL 热点行 问题, 怎么解决?
去哪面试:1Wtps高并发,MySQL 热点行 问题, 怎么解决?
|
NoSQL 关系型数据库 MySQL
招行面试:高并发写,为什么不推荐关系数据?
资深架构师尼恩针对高并发场景下为何不推荐使用关系数据库进行数据写入进行了深入剖析。文章详细解释了关系数据库(如MySQL)在高并发写入时的性能瓶颈,包括存储机制和事务特性带来的开销,并对比了NoSQL数据库的优势。通过具体案例和理论分析,尼恩为读者提供了系统化的解答,帮助面试者更好地应对类似问题,提升技术实力。此外,尼恩还分享了多个高并发系统的解决方案及优化技巧,助力开发者在面试中脱颖而出。 文章链接:[原文链接](https://mp.weixin.qq.com/s/PKsa-7eZqXDg3tpgJKCAAw) 更多技术资料和面试宝典可关注【技术自由圈】获取。
|
缓存 负载均衡 API
抖音抖店API请求获取宝贝详情数据、原价、销量、主图等参数可支持高并发调用接入演示
这是一个使用Python编写的示例代码,用于从抖音抖店API获取商品详情,包括原价、销量和主图等信息。示例展示了如何构建请求、处理响应及提取所需数据。针对高并发场景,建议采用缓存、限流、负载均衡、异步处理及代码优化等策略,以提升性能和稳定性。
|
缓存 算法 架构师
京东面试:如何设计600Wqps高并发ID?如何解决时钟回拨问题?
资深架构师尼恩在其读者交流群中分享了关于分布式ID系统的设计与实现,特别是针对高并发场景下的解决方案。他强调了分布式ID系统在高并发核心组件中的重要性,并详细介绍了百度的UidGenerator,这是一个基于Snowflake算法改进的Java实现,旨在解决分布式系统中的唯一ID生成问题。UidGenerator通过自定义workerId位数和初始化策略,支持虚拟化环境下的实例自动重启和漂移,其单机QPS可达600万。此外尼恩的技术分享不仅有助于提升面试表现,还能帮助开发者在实际项目中应对高并发挑战。
京东面试:如何设计600Wqps高并发ID?如何解决时钟回拨问题?
|
JavaScript 前端开发 Java
面试官:假如有几十个请求,如何去控制并发?
面试官:假如有几十个请求,如何去控制并发?
|
监控 网络协议 Java
Java面试题:解释Java NIO与BIO的区别,以及NIO的优势和应用场景。如何在高并发应用中实现NIO?
Java面试题:解释Java NIO与BIO的区别,以及NIO的优势和应用场景。如何在高并发应用中实现NIO?
424 0
|
设计模式 安全 NoSQL
Java面试题:设计一个线程安全的单例模式,并解释其内存占用和垃圾回收机制;使用生产者消费者模式实现一个并发安全的队列;设计一个支持高并发的分布式锁
Java面试题:设计一个线程安全的单例模式,并解释其内存占用和垃圾回收机制;使用生产者消费者模式实现一个并发安全的队列;设计一个支持高并发的分布式锁
294 0