有时不仅有大数据技术栈的面试问题,也会对像Java/Scala里面的一些使用产生一些问题,记录一下
Scala
1.可变和不可变集合有什么作用?
1 2 3 4 5 6
| 从官网的Doc中可以得出 Scala支同时持可变集合和不可变集合,不可变集合可以安全的并发访问 不可变集合是线程安全的 不可变集合仍然可以做一些类似的增加,删除,或者更新 但是实际上他返回了一个新的对象,这里面就是指返回了一个新的集合 而老的集合没有改变
|
Java
1.HashMap和TreeMap的区别
1 2 3 4 5 6 7 8 9
| HashMap通过hashcode对其内容进行快速查找 HashMap中元素的排列顺序是不固定的 适用于在Map中插入,删除和定位元素 基于hash表实现
TreeMap中所有的元素都保持着某种固定的顺序 如果你需要得到一个有序的结果你就应该使TreeMap 适用于按自然顺序或自定义顺序遍历键 基于红黑树实现
|
2.ConcurrentHashMap是怎么实现的?
1 2 3 4 5 6 7 8
| concurrent包中线程安全的哈希表,采用分段锁; 可以理解为把一个大的Map拆分成N个小的HashTable; 根据key.hashCode()来决定把key放到哪个HashTable中。 在ConcurrentHashMap中,就是把Map分成了N个Segment; put和get的时候,都是现根据key.hashCode()算出放到哪个Segment中。
注意: 和HashMap的区别在于,ConcurrentHashMap的KV不允许为空。
|