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,以及不不写(默认)时的区别?

静态变量存在什么位置

方法区

  1. java 容器都有哪些?
    常用容器的图录:


权限

首先明白两个概念,子类是要比包的范围更广,其次default是比较隐私的,默认只能在同一个包内获取,不管是不是子类继承。


上一篇下一篇

猜你喜欢

热点阅读