介绍做过的相关系统,特别是分布式的系统
redis缓存,过期时间设置,缓存如何更新,
数据库如何分库分表?原则是什么?如何联合查询?
mysql中binlog如何使用?
kafka中break和topic介绍,消费者和partition的关系,消费者组与topic的关系,partition的作用
kafka的流程,为什么使用消息中间件?
为什么使用es?优点是什么
序列化和反序列化的工具,原理及比较
dubbo的流程说明,服务提供与消费者的整套流程
多数据库如何处理?
多源数据库如何取topN的数据?
二面
面向对象三大特性
线程池-corepoolsize到达后如何增大到maxpoolsize
核心方法:addWorker
- 首先ctl是一个原子量,同时它里面包含了两个field,一个是workerCount,另一个是runState
- workerCount表示当前有效的线程数,也就是Worker的数量
- runState表示当前线程池的状态
首先workerCount是占据着一个atomic integer的后29位的,而状态占据了前3位 - 所以,workerCount上限是(2^29)-1。
- runState是整个线程池的运行生命周期,有如下取值:
- RUNNING:可以新加线程,同时可以处理queue中的线程。
- SHUTDOWN:不增加新线程,但是处理queue中的线程。
- 3.STOP 不增加新线程,同时不处理queue中的线程。
- 4.TIDYING 所有的线程都终止了(queue中),同时workerCount为0,那么此时进入TIDYING
- 5.terminated()方法结束,变为TERMINATED
并发编程
volatile && synchronized
hashMap & ConcurrentHashMap
JMM&垃圾回收
设计模式-单列
类加载过程
Class的加载、验证、准备、解析、初始化
编程实现队列
青蛙过河