Java基本知识要点总结
Java基础
- Java入门
- Java语法
- 基本数据类型
- 方法(函数)
- 类和对象
- 面向对象三大特征
- 修饰符
- 接口和抽象类
- 其他重要知识点(BigDecimal/Arrays.asList等)
- 集合
- 异常
- 多线程
- 文件与I/O流
- 枚举
- Java 常见关键字总结:final、static、this、super
- 什么是反射机制?反射机制的应用场景有哪些?
- 参考
Java基础知识
Java 教程
Java8 Lambda表达式详解手册及实例
JAVA8 STREAM新特性详解及实战
如何在Java中将int []转换为Integer []?
Java8 方式解决Stream流转其他数组
idea中java程序打jar包的两种方式(超详细)
Java疑难点
Java容器
- Java集合概述
- 说说 List,Set,Map 三者的区别?
- 如何选用集合?
- Iterator 迭代器
- 有哪些集合是线程不安全的?怎么解决呢?
- Arraylist 和 Vector 的区别?
- Arraylist 与 LinkedList 区别?
- 说一说 ArrayList 的扩容机制吧
- Comparable 和 Comparator 的区别
- 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
- HashMap 和 Hashtable 的区别
- HashMap 和 HashSet 区别
- HashMap 和 TreeMap 区别
- HashSet 如何检查重复
- HashMap 的底层实现(JDK1.8 之前 / JDK1.8 之后)
- HashMap 的长度为什么是 2 的幂次方
- HashMap 多线程操作导致死循环问题
- HashMap 有哪几种常见的遍历方式?
- ConcurrentHashMap 和 Hashtable 的区别
- ConcurrentHashMap 线程安全的具体实现方式/底层具体实现(JDK1.8 之前 / JDK1.8 之后)
- Collections 工具类排序操作
- Collections 工具类查找、替换操作
- Collections 工具类同步控制
- 快速失败(fail-fast)
- 安全失败(fail-safe)
- ArrayList 源码
- LinkedList 源码
- HashMap(JDK1.8)源码
- ConcurrentHashMap源码
- 参考
Java集合框架常见面试题
Java 集合框架
并发
Java并发编程之美(2018)
- 线程创建的三种方式
- 线程notify() / notifyAll() / wait() 方法
- 线程的join() 方法
- 线程的sleep() 方法
- sleep()和wait()的区别
区别是:
1. sleep()不释放同步锁,wait()释放同步锁
2. sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.
3. 这两个方法来自不同的类分别是Thread和Object
4. wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在
任何地方使用synchronized(x){ x.notify() //或者wait() }
5. sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
-
线程的yield() 方法
-
线程中断 / interrupt()方法;InterruptedException异常;通过interrupt优雅地退出一个线程
-
线程死锁,避免死锁
-
守护线程;setDaemon(true);JVM等待所有线程退出后才结束;jps命令的使用
-
ThreadLocal类 / InheritableThreadLocal类
-
如何引起线程安全问题;读取-修改-写入操作
-
Java多线程的内存模型
-
Java共享变量的内存可见性问题;定义;如何产生;如何解决
-
synchronized关键字;synchronized关键字在内存模型中的内存语义;如何解决共享内存不可见和原子性问题
synchronized(修饰方法和代码块) -
volatile关键字;如何解决共享内存不可见问题,无法解决原子性问题
-
指令重排和volatile关键字
-
Java中的原子性和CAS操作
-
Unsafe类(未吃透源码)
-
伪共享;定义,结合多线程内存模型;多线程和单线程条件下的区别;如何避免
-
乐观锁和悲观锁
-
公平锁和非公平锁;ReentrantLock
-
独占锁和共享锁;ReadWriteLock
-
可重入锁;synchronized实例;解释代码;原理实现
Synchronized可重入锁分析 -
自旋锁;CPU占用和内核切换的权衡