1.Java基础知识
1.1 Java中四种引用:(有待加深)
强引用:一般的new出来的引用:
软引用:具有两层引用,GC没有办法对其进行回收,超过堆内存的时候软引用会被回收(缓存中使用)。
弱引用:可以get到地址,当垃圾回收器进行回收的时候,直接进行回收。(ThreadLocal)
虚引用:get不到地址,并且第一次就会被回收,管理堆外内存。
2.Java集合(包括list,set,map)
2.1.HashMap与concurrentHashMap与HashTable区别
2.1.1 HashMap与HashTable区别(面试考过)
主要区别:线程是否安全,扩容机制,是否支持null键值,哈希冲突的区别;
2.1.2面试问题(HashMap是怎么存取null键的?)
1.6版本JDK:
HashMap 使用第 0 个桶存放键为 null 的键值对。
public V put(K key, V value) {
if (key == null)
return putForNullKey(value);
int hash = hash(key.hashCode());
int i = indexFor(hash, table.length);
for (Entry<K,V> e = table[i]; e != null; e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key)