垃圾回收的目的,内存管理,释放无用的对象;
可以完成的描述一次垃圾回收的过程。(年轻代、老年代、永久代)
Full gc 现象,分析定位,解决;java
HashMap存储,碰撞,扩容,性能,红黑树;
线程相关的HashTable,CurrentHashMap;redis
线程管理解耦,下降资源消耗,提升可管理性
setCorePoolSize和setMaximumPoolSize两个参数,建立和销毁的机制。
reject机制默认有Discard/DiscardOld/Abort/CallersRun, 默认为abort报错。可以讲明白原理的,标记出来 算加分sql
读写锁,CurrentHashMap
考虑性能和数据一致性数据库
RPC、RMI、Web Service、JMS(MQ)
RPC 和 HTTP比较
RPC框架的原理(注册发现机制、路由、降级、负载均衡)
dubbo、thrift、
MQ(消息消费模式:广播、点对点)缓存
从那几个方面评估机器的负载
CPU ,当java进程占用CPU太高的时候,常常100%,怎么排查
top查看进程id,ps查看线程id,jstack堆栈信息
内存,java内存查看分析工具
gc日志,在jvm启动参数中加入 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimestamps -XX:+PrintGCApplicationStopedTime
jconsole,jmap,jhat,jstat,MAT
load,load是怎么计算的
load 要结合cpu数量来看,咱们假设cpu数量为4,每一个cpu都正好满负荷运转时,load为4.若是每一个cpu处理任务过程当中,还有一个任务在排队等待,那么load为8。
网络IO
sar -n DEV
cat /home/a.log | grep 'abc' | sort | uniq 理解这段脚本
统计a.log中包含abc的行,正序排序并去重
用JAVA实现,画板上codeing
扩展,超大文件,MapReduce思想服务器
MySQL中有一条SQL比较慢,若是让你去优化,你会怎么作?为何要这样作?
explain查看执行计划,是否走索引,sql自己优化,好比模糊查询,子查询,loop
表数据量过大,分库分表
redis;
读写分离;网络
A、缓存如何刷新?
一、定时刷新
二、主动刷新覆盖
每一个缓存框架都有自带的刷新机制, 或者说缓存失效机制, 就拿Redis和 Ehcache举例, 他们都有自带的过时机制, 另外主动刷新覆盖时, 只需获取对应的key进行数据的覆盖便可
B、缓存如何保持同步?
这个redis有自带的集群同步机制, 即复制功能, 具体参考:基于Redis分布式缓存实现, Ehcache也有分布式缓存同步的配置, 只须要配置不一样服务器地址便可, 参照:Ehcache分布式缓存同步
多线程