初面
全程一共20分钟左右,四个面试官,一位负责引导流程,一位负责提问工程技术、另一位面试官询问一些现状,比如:为什么想离职、现在住在哪里等等,整体的节奏比较快,面试难度一颗星
自我介绍
这里就不详细介绍了
项目中提到的多任务高并发是如何实现的
项目中的任务推进是什么意思,详细介绍一下
线程池是怎么实现的?有哪些参数?
参数介绍:
- corePoolSize 核心线程池大小
- maximumPoolSize 最大线程池大小
- keepAliveTime 线程池中超过 corePoolSize 数目的空闲线程最大存活时间;
- TimeUnit keepAliveTime 时间单位
- workQueue 阻塞任务队列
- threadFactory 新建线程工厂
- RejectedExecutionHandler 拒绝策略。当提交任务数超过 maxmumPoolSize+workQueue 之和时,任务会交给RejectedExecutionHandler 来处理
阻塞队列是做什么的
- 当线程池小于corePoolSize,新提交任务将创建一个新线程执行任务,即使此时线程池中存在空闲线程。
- 当线程池达到corePoolSize时,新提交任务将被放入 workQueue 中,等待线程池中任务调度执行。
- 当workQueue已满,且 maximumPoolSize 大于 corePoolSize 时,新提交任务会创建新线程执行任务。
- 当提交任务数超过 maximumPoolSize 时,新提交任务由 RejectedExecutionHandler 处理。
- 当线程池中超过corePoolSize 线程,空闲时间达到 keepAliveTime 时,关闭空闲线程 。
看你项目用了redis,主要是用来做什么的
redis如果存储的数据丢失了或者查不到,代码逻辑应该怎么处理
多级缓存兜底
项目中用到了mq,是如何用mq解耦的
mq的消息模型有哪些?
- 发布订阅 消息生产者向频道发送一个消息之后,多个消费者可以从该频道订阅到这条消息并消费
- 点对点 消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。
发布与订阅模式和观察者模式有以下不同:
观察者模式中,观察者和主题都知道对方的存在;而在发布与订阅模式中,生产者与消费者不知道对方的存在,它们之间通过频道进行通信。 观察者模式是同步的,当事件触发时,主题会调用观察者的方法,然后等待方法返回;而发布与订阅模式是异步的,生产者向频道发送一个消息之后,就不需要关心消费者何时去订阅这个消息,可以立即返回。