Java面试——Java
2020-03-12 本文已影响0人
抬头挺胸才算活着
参考资料:
[1]. Java三种代理模式:静态代理、动态代理和cglib代理
[2]. AQS简简单单过一遍
描述下java集合,项目中用到哪些。
ConcurrentHashMap原理
Concurrenthashmap线程安全的,1.7是在jdk1.7中采用Segment + HashEntry的方式进行实现的,lock加在Segment上面。1.7size计算是先采用不加锁的方式,连续计算元素的个数,最多计算3次:1、如果前后两次计算结果相同,则说明计算出来的元素个数是准确的;2、如果前后两次计算结果都不同,则给每个Segment进行加锁,再计算一次元素的个数;
1.8中放弃了Segment臃肿的设计,取而代之的是采用Node + CAS + Synchronized来保证并发安全进行实现,1.8中使用一个volatile类型的变量baseCount记录元素的个数,当插入新数据或则删除数据时,会通过addCount()方法更新baseCount,通过累加baseCount和CounterCell数组中的数量,即可得到元素的总个数;
访问修饰符public,private,protected,以及不不写(默认)时的区别?
静态变量存在什么位置
方法区
-
java 容器都有哪些?
常用容器的图录:
权限
首先明白两个概念,子类是要比包的范围更广,其次default是比较隐私的,默认只能在同一个包内获取,不管是不是子类继承。