面试
- JDK和JRE有什么区别? JDK包含java开发环境和运行环境、JRE包含运行环境
- ==和equals的区别? 值相等和引用相等
- Hashcode相等时equals相等吗? 不同
- final的作用? 修饰的类不能继承、修饰的方法不能重写、修饰的变量必须初始化且不能修改
- Math.round(-1.5)等于多少? -1
- Java的基本数据类型? 八种
- Java中的字符串操作符?String、StringBuilder和SringBuffer
- String str=“i”和String str=new String(“i”)一样吗? 内存分配方式不同,前者常量池后者堆内存
- 实现字符串反转? reverse方法
- String常用方法?
- 抽象类和抽象方法? 抽象类不一定有抽象方法
- 普通类和抽象类? 普通类不能包含抽象方法但可以直接实例化
- 抽象类能用final修饰吗? 不能
- 接口和抽象类的区别?
- IO流分几种? 输入输出 or 字符字节
- BIO、NIO和AIO区别? https://blog.csdn.net/skiof007/article/details/52873421
- Files常用方法?
- Java容器有哪些? collection(List、Queue、Set)、Map
- Collection和Collections的区别? 前者接口、后者工具类
- List、Map和Set的区别?
- HashMap和HashTable的区别? 线程安全
- HashMap和TreeMap的区别? 有序遍历
- HashMap的实现原理? 散列表、Jdk1.8后散列表+红黑树
- HashSet的实现原理? 底层HashMap(key:HashSet值;value:Persent)
- ArrayList和LinkedList区别? 数据结构的不同
- 如何实现数组和List的转换?
- ArrayList和Vector的区别? 同步与否
- Array和ArrayList的区别?
- Queue中poll和remove区别?
- 线程安全的集合类有哪些? vector、stack、hashtable、enumeration
- 迭代器Iterator是什么? 一种设计模式、对象
- Iterator使用及其特点?
- Iterator和ListIterator区别?
- 并行和并发的区别?
- 线程和进程的区别?
- 守护线程是什么? 服务线程
- 创建线程的方式?
- Runable和Callable有什么区别? 是否有返回值
- 线程有哪些状态? 创建、就绪、运行、阻塞、死亡
- Sleep和Wait的区别? 机锁释放
- Notify和NotifyAll的区别?
- Run和Start的区别?
- 创建线程池的方式?
- 线程池的状态? Running、ShutDown、Stop、Tidying、Terminated
- 线程池中Submit和Execute的区别?
- 线程安全的体现?怎样保证多线程运行? 原子性、可见性、有序性
- 多线程锁的升级原理? 无状态锁、偏向锁、轻量级所、重量级锁
- 什么是死锁?
- 如何防止死锁? 避免四个必要条件(互斥条件、请求和保持条件、不可剥夺条件、环路等待条件)
- ThreadLocal是什么及其使用场景?
- Synchronized底层实现原理?
- Synchronized和Volatile的区别?