1:熟悉常见垃圾回收算法、垃圾回收器及JVM调优
gc要做的三件事:
哪些内存需要回收
什么时候回收
怎么回收
垃圾收集算法:
标记清除:效率低,内存碎片多
复制:eden--survivor
标记整理
分代算法
垃圾收集器:
新生代:
serial(单线程)
parNew(多线程)
parallel scavenge(吞吐量收集器,适用批量处理,订单处理,工资支付,科学计算)
老年代
serial old
parallel old
cms
整堆收集器
g1
并行(多线程一起处理,用户线程仍需要等待,STW):
parNew
parallel scavenge
parallel old
并发(用户现场和垃圾回收线程并发执行,交替执行)
CMS(低延迟)
G1
minor gc
新生代的垃圾回收,比较频繁,速度很快
full gc
老年代回收,会伴随minor gc,执行很慢
jvm调优
目的,减少内存使用,减少full gc次数,减少stw时间
2:熟悉多进程,多线程并发解决方案和编程思想
项目里用到了哪些设计模式
消息队列的选型,怎么保证消息有序性,不丢失数据,不重复消费
kafka版本各个版本特点
0.7,上古”版本,只提供了基础的消息队列功能,还没有提供副本机制
0.8,增加了副本机制,消费偏移位置 offset 由原来的保存在 zookeeper 改为保存在 kafka 本身,旧版本的生产者及消费者API连接的是Zookeeper,而新版本则连接的是Broker,采用异步批量方式发送消息
0.9,Consumer API,使用方式也是从连接Zookeeper切到了连接Broker,安全认证、授权管理、数据加密等方面都得到了支持,引入了新的组件 Kafka Connect ,用于实现Kafka与其他外部系统之间的数据抽取
1.0:引入了 Kafka Streams
1.1:主要是实现了Producer端的消息幂等性,以及事务特性
2.1
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<version>0.10.2.0</version>
</dependency>
dubbo