1)Java 中能创建 volatile 数组吗?[腾讯](瞎写的示例)
能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组。我的意思是,如果改变引用指向的数组,将会受到 volatile 的保护,但是如果多个线程同时改变数组的元素,volatile 标示符就不能起到之前的保护作用了。
2)volatile 能使得一个非原子操作变成原子操作吗?[腾讯](瞎写的示例)
一个典型的例子是在类中有一个 long 类型的成员变量。如果你知道该成员变量会被多个线程访问,如计数器、价格等,你最好是将其设置为 volatile。为什么?因为 Java 中读取 long 类型变量不是原子的,需要分成两步,如果一个线程正在修改该 long 变量的值,另一个线程可能只能看到该值的一半(前 32 位)。但是对一个 volatile 型的 long 或 double 变量的读写是原子。
3)介绍自己 [阿里] 介绍自己的研究背景,研究内容,使用场景。 说一下HashMap的具体实现,比如如何rehash,如何实现一个LRU的HashMap,从源码角度讲这个LRU HashMap的put和get的实现。