希音面试-高级开发工程师

399 阅读2分钟

时间 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是发生扩容是深拷贝还是浅拷贝

元素迁移是浅拷贝

有什么要问我的