今日头条测试开发工程师
一面、二面:
一、hashmap与hashtable与hashset的区别
HashSet HashTable HashMap的区别 及其Java集合介绍:http://www.cnblogs.com/ywl925/p/3865269.html
二、hashmap基本原理
数据结构采用数组加链表的结构,Hashmap是hash table的。
三、怎么让hashmap线程安全
设置同步
如何线程安全的使用HashMap:
http://www.importnew.com/21396.html
Hashtable
ConcurrentHashMap
Synchronized Map
四、怎么检测死锁
1.资源分配图
每个进程、每个资源制定唯一编号
设定一张资源分配表,记录各进程与占用资源之间的关系
设置一张进程等待表,记录各进程与要申请资源之间的关系
2.死锁定理
3.死锁检测中的数据结构
五、Sleep与wait的区别
1、每个对象都有一个锁来控制同步访问,Synchronized关键字可以和对象的锁交互,来实现同步方法或同步块。sleep()方法正在执行的线程主动让出CPU(然后CPU就可以去执行其他任务),在sleep指定时间后CPU再回到该线程继续往下执行(注意:sleep方法只让出了CPU,而并不会释放同步资源锁!!!);