1 基础
-
为什么 Java 中只有值传递?
-
int 范围?float 范围?
-
hashCode 与 equals,什么关系?
-
String StringBuffer 和 StringBuilder 的区别是什么?String 为什么是不可变的?
-
Java 序列化中如果有些字段不想进行序列化 怎么办?
-
构造器 Constructor 是否可被 override?
-
java 异常体系?RuntimeException Exception Error 的区别,举常见的例子
-
字符型常量和字符串常量的区别?
-
在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?
2 集合
集合这块关注一下 1.8 的实现吧,和 1.7 相比变化了很多
-
ArrayList和linkedList的区别?
-
堆是怎么存储的,插入是在哪里?
-
HashMap和HashTable的区别?讲一下 hashMap 原理。hashMap 可以并发读么?并发写会有什么问题?
-
集合类存放于 Java.util 包中, 主要有几种接口?
-
Array与ArrayList有什么不一样?简单介绍下 ArrayList 怎么实现,加操作、取值操作,什么时候扩容?
-
说说ConcurrentHashMap?头插法还是尾插法?扩容怎么做?
-
集合在迭代的过程中,插入或删除数据会怎样?
3 并发
-
notify()和notifyAll()有什么区别?
-
volatile 是什么?可以保证有序性吗?
-
为什么wait, notify 和 notifyAll这些方法不在thread类里面?
-
SynchronizedMap和ConcurrentHashMap有什么区别?
-
什么是线程安全?Vector是一个线程安全类吗?
-
线程进程和线程的区别?并行和并发的区别?了解协程么?进程间如何通信:进程 A 想读取进程 B 的主存怎么办?线程间通信?线程的生命周期有哪些状态?怎么转换?wait 和 sleep 有什么区别?什么情况下会用到 sleep?怎么停止线程?怎么控制多个线程按序执行?
-
说说自己是怎么使用 synchronized 关键字,在项目中用到了吗?synchronized关键字最主要的三种使用方式
-
为什么要用 join()方法?
-
什么是多线程中的上下文切换?
-
死锁与活锁的区别,死锁与饥饿的区别?
-
Java 中用到的