我曾在携程旅行网做 Java 开发,也曾拿过阿里 P7 offer 和饿了么、美团等公司的 offer,这是职位都是 Java 开发岗,也做过 Java 面试官面试过不少同学。下面我就和大家分享一下我学习 Java的经验。
我将从 Java 基础知识、Java 框架、计算机基础和 Java 工程实践等四个方面来说一下学习方法,并推荐一些经典书籍,书不多,都是我自己买过实体书并读过的,具有很强的实操性。
以下本文的思维导图:
一、Java 基础知识
Java 的基础知识包括如下部分:
1. 基础语法部分
01、Java 基础语法与运行/编译环境
- JRE/JDK
- Java 变量和字面值
- Java 数据类型
- Java 操作符
- Java 输入输出
- Java 表达式 & 语句 & 代码块
- Java 注释
02、Java 流程控制
- Java if else
- Java switch 语句
- Java for 循环
- Java while 循环
- Java break 语句
- Java continue 语句
03、Java 数组
- Java 数组
- 多维数组
- Java 数组复制
04、Java 面向对象
- Java 类和对象
- Java 方法
- Java 方法重载
- Java 构造方法
- Java 字符串
- Java 访问权限
- Java this 关键字
- Java final 关键字
- Java 递归
- Java instanceof 操作符
- Java 继承
- Java 方法重写
- Java super 关键字
- 抽象类 & 抽象方法
- Java 接口
- Java 多态
- Java 封装
- 嵌套&内部类
- Java static 关键字
- Java 匿名内部类
- Java 单例
- Java 枚举类
- Java 枚举构造方法
- Java 枚举字符串
- Java 反射
05、Java 异常处理
- Java 异常简介
- Java 异常处理
- Java try catch
- Java throw 和 throws
- Java 捕获多个异常
- Java try-with-resources
- Java 注解
- Java 注解类型
- Java 日志
- Java 断言
06、Java 集合与队列
- Java 集合框架
- Java 集合接口
- Java List 接口
- Java ArrayList
- Java Vector
- Java Stack
- Java 队列接口
- Java 优先级队列
- Java 双端队列接口
- Java LinkedList
- Java 数组队列
- Java 阻塞队列接口
- Java ArrayBlockingQueue
- Java LinkedBlockingQueue
- Java Map 接口
- Java HashMap
- Java LinkedHashMap
- Java WeakHashMap
- Java EnumMap
- Java SortedMap 接口
- Java NavigableMap 接口
- Java TreeMap
- Java ConcurrentMap 接口
- Java ConcurrentHashMap
- Java Set 接口
- Java HashSet
- Java EnumSet
- Java LinkedHashSet
- Java SortedSet 接口
- Java NavigableSet 接口
- Java TreeSet
- Java 集合算法
- Java 迭代器接口
- Java ListIterator 接口
07、Java I/O
- Java InputStream
- Java OutputStream
- Java FileInputStream
- Java FileOutputStream
- Java ByteArrayInputStream
- Java ByteArrayOutputStream
- Java ObjectInputStream
- Java ObjectOutputStream
- Java BufferedInputStream
- Java BufferedOutputStream
- Java PrintStream
- Java Reader
- Java Writer
- Java InputStreamReader
- Java OutputStreamWriter
- Java FileReader
- Java FileWriter
- Java BufferedReader
- Java BufferedWriter
- Java StringWriter
- Java PrintWriter
学习 Java 基础知识推荐以下两本书:
- 《Java核心技术卷1 基础知识》
- 《Java核心技术卷2高级特性》
2. Java 并发编程(多线程)
- 进程与线程的区别
- 多线程的入门类和接口
- 线程组和线程优先级
- 线程的状态及主要转化方法
- 线程间的通信
- 重排序和 happens-before
- volatile
- synchronized 与锁
- CAS 与原子操作
- AQS
- 计划任务
- Stream 并行计算原理
- Fork/Join
- 通信工具类
- CopyOnWrite
- 并发集合容器
- 锁接口和类
- 阻塞队列
- 线程池原理
Java 并发编程首推《Java并发编程实战》:
另外《Java并发编程的艺术》这一本也不错。
3. Java 网络编程
- 《Java网络编程》
- 《Java网络编程精解》
4. Java 虚拟机
无论是 Java 面试还是想成为 Java 高手或者在一些项目中进行性能调优都必须掌握的知识,一般需要掌握以下内容:
- Java 内存结构
- 堆
- 栈
- 垃圾回收
- JVM 内存区域
- Java 虚拟机栈
- class 文件
- 字节码指令
- JVM 参数调优
- Java 对象模型
- HotSpot
- 类加载机制
- 编译和反编译
- 反编译工具(javap)
- JIT
- 虚拟机性能监控和故障处理工具(jps、jstack、jmap、jstat、jconsole、javap)
推荐的书是《深入理解Java虚拟机》,这本书现在已成了 Java 虚拟机中的经典的经典,建议从事 Java 开发的同学一定要好好看一看。
另外,《揭秘Java虚拟机——JVM设计原理与实现》这本书也不错。
5. Java Web
- 《深入分析Java Web技术内幕 修订版》