第二个我们看看定时任务是在哪儿进行注册的。
这个就很好找了。我们已经知道默认参数是 10ms 了,只需要顺着链路看一下,哪里的代码调用了其对应的 get 方法即可:
同时,我们可以看到,其定时功能是基于java.util.concurrent.ScheduledThreadPoolExecutor#scheduleAtFixedRate
实现的。
第三个我们看看是怎么控制超过指定数量后,就不等待定时任务执行,而是直接发起汇总操作的:
可以看到,在com.netflix.hystrix.collapser.RequestBatch#offer
方法中,当 argumentMap 的 size 大于我们指定的 maxBatchSize 的时候返回了 null。
如果,返回为 null ,那么说明已经不能接受请求了,需要立即处理,代码里面的注释也说的很清楚了:
以上就是三个关键的地方,Hystrix 的源码读起来,需要下点功夫,大家自己研究的时候需要做好心理准备。
最后再贴一个官方的请求合并工作流程图:
打完收工。
面试题
前面说的深圳的,两年经验的小伙伴把面试题汇总了一份给我,我也分享给大家吧。
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 好。
你说这问题对我来说那不是超纲了吗?我也没在大厂体验过啊。所以我怀疑他不讲武德,来骗,来偷袭我这个老实巴交的小号主,我希望他能耗子尾汁,在鹅厂好好发展:
才疏学浅,难免会有纰漏,如果你发现了错误的地方,可以提出来,我对其加以修改。
感谢您的阅读,我坚持原创,十分欢迎并感谢您的关注。
我是 why,一个被代码耽误的文学创作者,不是大佬,但是喜欢分享,是一个又暖又有料的四川好男人。
还有,欢迎关注我呀。