中移杭研二面经历

2023-03-10 08:48:19 浏览数 (1)

1、DDD领域模型了解吗?

DDD的全称为Domain-driven Design,即领域驱动设计; 分层架构:UI层、应用层、领域层、基础设施层; 核心设计原则,就是关注点分离

2、Java并发框架与库

原子变量操作类

AtomicInteger,AtomicLong,AtomicBoolean 其内部使用UnSafe类和CAS来实现。JDK8 新增LongAdder来解决多线程自增的原子性操作,大概是通过内部cells数组来分担高并发下多线程同时对一个原子变量进行更新时候的竞争量。 LongAccumulator是LongAdder的一个特例,可以让用户自定义累加规则。

并发List

代码语言:javascript复制
JUC并发List中只有CopyOnWriteArrayList。CopyOnWriteArrayList是一个安全的ArrayList,对其进行修改操作都是在底层的一个复制快照上进行的, 也就是写时复制策略。使用的Reentrantlock排他锁,一个线程修改时候复制原来数组,然后操作完,释放锁。操作不在原数组操作,所以操作时候读,读的原来的数组。

AQS - AbstractQueuedSynchronizer

抽象同步队列,实现同步器的基础组件,并发包中锁的底层使用就是AQS实现的。 开发人员几乎不会直接使用AQS,但其原理对框架设计还是有帮助的。

  • AQS是一个FIFO双向队列。内部通过head和tail记录队首和队

0 人点赞