时间 19:30-20:30
面试内容
讲一下相关工作的业务流程
项目用的Java版本
jdk1.8
为什么要做架构优化?怎么做的?解决什么问题
从以下方向回答:
- 原架构的瓶颈和痛点
- 如何解决这些瓶颈和痛点
- 具体解决方案
- 架构优化目标
MQ的堆积解决方案
以下方向回答:
- 增加消费者线程数
- 增加消费者(注意底层数据库的水位)
数据库的配置,应用的实例数
16C32G
调度任务在实际业务场景下的使用
使用阿里云的schdulerX分布式调度任务 架构模式:master和slave。 调度任务流程:使用三层模型,从高到底为:第一步调度任务唤起所有任务类型的任务,master将任务分发给所有slave,slave通过任务类型捞取任务,master将任务收集后分发给所有slave,slave根据任务id执行具体任务。 调度模式:mapReduce模式
服务调用的中间件?
http: openFeign tcp: HSF
负载均衡如何做的
ribbon nacos
线程池的使用?核心线程数的基本配置
使用场景:分布式调度任务执行使用线程池 核心配置:
- 核心线程数:60
- 最大线程数:80
- 阻塞队列:优先级无界队列,设置阻塞数量,即无界当有界使用
- 拒绝策略:抛出异常
阻塞队列的使用,有界还是无界
无界队列-自主设置队列大小避免内存泄漏
MySQL索引不生效的场景
- like用在左侧
- 联合索引顺序异常
- 使用in或者not in
- 索引列使用了函数
- 索引列使用了运算
- 使用or
- select 查询longtext设置文件查询
联合索引的查询数据的过程
聚簇索引和非聚簇索引、回表
MySQL中in的使用导致索引不生效的场景?如何优化
- 优化查询语句
- 优化数据表结构
JVM中发生FGC的条件
- 老年代空间不足
- 年轻代晋升老年代的对象大小大于老年代的空间
- 元空间不足
CMS收集器的缺点
没答上来
- 对CPU敏感:占用部分线程导致应用RT升高
- 标记-清除算法 :容易产生内存碎片
- 清理阶段依然出现新的垃圾(浮动垃圾):导致FGC后会再进行一次FGC,无法预测FGC次数
ArrayList使用add是发生扩容是深拷贝还是浅拷贝
元素迁移是浅拷贝