Java后端程序员面经(1-1. Java基础之集合篇)
来源:互联网 发布:sql server2008教程 编辑:程序博客网 时间:2024/06/15 21:33
说明
本文主要基于面试中碰到的问题进行总结分析,可能不全。
Map相关
基础点
1. HashMap数据结构,即table+单链表(jdk8后,在节点超过TREEIFY_THRESHOLD时,会将单链表转换为红黑树)2. HashMap不是线程安全的,一般是指多个线程同时resize过程中,会导致死循环,详见:http://www.importnew.com/22011.html。
进阶点
1. 线程安全地使用Map有哪些方式,即ConcurrentHashMap[我了解到的较好的方式]、Map m = Collections.synchronizedMap(new HashMap())[对每个操作都synchronized (mutex)]、Hashtable[这个我自己基本没有使用过]。2. 对比Hashtable和HashMap 2-1. Hashtable的方法是synchronized的,HashMap的方法不是,单线程环境前者比后者慢。 2-2. Hashtable中,key和value都不允许出现null值。在HashMap中可以。 2-3. 哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。 2-4. 初始大小和扩容的方式不同。HashTable中hash数组默认大小是11,增加的方式是 *2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。 2-5. HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。详见:http://www.importnew.com/7010.html
加分点
1. 线程安全地使用Map的各种方式如何实现线程安全的 1-1. ConcurrentHashMap,分段锁,通过对table段采用不同的锁,减小锁粒度,提高并发量 1-2. Collections.synchronizedMap,对HashMap的所有操作加锁 1-3. Hashtable,内部方法都是synchronized的2. 详细了解以上各个类的内部实现 2-1. HashMap的get,put方法实现代码,构造方法有哪些,常用参数的默认值 2-2. ConcurrentHashMap的上述方法及参数设置源码
Set相关
面试基本没有被问到,暂时不写
List相关
面试基本没有被问到,暂时不写
阅读全文
0 0
- Java后端程序员面经(1-1. Java基础之集合篇)
- Java后端程序员面经(1-2. Java基础之异常篇)
- Java后端程序员面经(开篇)
- Java后端程序员面经(2-1. 缓存之本地缓存)
- Java后端程序员面经(2-2. 缓存之分布式缓存)
- 黑马程序员-java基础之Map集合
- 黑马程序员---java基础之集合Collection
- 黑马程序员—java基础之集合
- <<黑马程序员>>JAVA基础之集合
- 黑马程序员—JAVA基础之集合
- 黑马程序员--JAVA基础之集合类
- 黑马程序员--Java基础之集合
- 黑马程序员--Java基础之集合类
- 黑马程序员 java基础之list集合
- 黑马程序员 java基础之set集合
- 黑马程序员 java基础之Map集合
- 黑马程序员java基础之Map集合
- 黑马程序员--java基础复习之集合
- PS入门(一)
- 什么是正则表达式
- HDU 5968 异或密码
- XML各种解析方式的区别
- java.sql.SQLException: validateConnection false
- Java后端程序员面经(1-1. Java基础之集合篇)
- [jQuery] チェック済みの checkbox の値を取得して配列へ格納する方法
- 根据二叉树前序序列和中序序列构造二叉树
- Android音频实时传输与播放(一)
- XStream和Dom4j
- Android_ Listview点击条目跳转到相关内容
- Java中抽象类和抽象方法的区别 ---------------
- 初学maven的相关介绍
- UVa10537