经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。
1. JVM相关
在JVM这个大类中,我认为需要掌握的知识有:
- JVM内存模型和结构
- GC原理,性能调优
- 调优:Thread Dump, 分析内存结构
- class 二进制字节码结构, class loader 体系 , class加载过程 , 实例创建过程
- 方法执行过程
- Java各个大版本更新提供的新特性(需要简单了解)
2. Java的运行
这样有利于你真正开发中去解决那些奇奇怪怪的可能和环境相关的问题。在这里需要掌握的知识有:
- javac 编译java文件为 class 文件
- java 命令的使用, 带package的java类如何在命令行中启动
- java程序涉及到的各个路径(classpath, java。library。path, java运行的主目录等)
3. 数据类型
主要知识点:
- 基本类型:int, long, float, double, boolean 。。。
- 对应的对象类型:Integer 等类型到基本类型的转换, 装箱和拆箱
- Object类型:equals, hashcode
- String 类型的特点
4. 对象和实例
主要知识点有:Class和 Instance 的概念Instance 创建的过程:
- 无继承:分配内存空间, 初始化变量, 调用构造函数
- 有继承:处理静态动作, 分配内存空间, 变量定义为初始值 , 从基类->子类, 处理定义处的初始化, 执行构造方法
需要注意的点:
- 静态属性等从基类->子类进行初始化
- 默认无参构造方法相关的特性
5. 访问控制
6. 流程控制
7. 面向对象编程的概念
在这里只是简单罗列了一下,主要的知识点包括有:
- 面向对象三大特性:封装,继承,多态;
- 各自的定义概念,有哪些特性体现出来,各自的使用场景
- 静态多分派,动态单分派的概念
- 重载的概念和使用
- 继承:接口多实现,基类单继承
- 抽象,抽象类,接口
- 多态:方法覆盖的概念和使用
- 接口回调
8. static
主要需要掌握的有:
- 静态属性的定义,使用,以及类加载时如何初始化
- 静态方法的定义和使用
- 静态类的定义和使用
- 静态代码块的定义和初始化时机
9. 基础知识点
- equals
- hashcode
- tring/stringbuffer
- final
- finally
- finalize
10. 集合框架
11. 异常框架
12. Java IO
在这中的知识点主要有:
基本IO的体系包括有InputStream , OutputStream, Reader/Writer, 文件读取,各种流读取等,NIO 的概念, 具体使用方式和使用场景。
13. 多线程
- 多线程的实现和启动
- callable 与 runable 区别
- syncrhoized ,reentrantLock 各自特点和比对
- 线程池
- future 异步方式获取执行结果
- concurrent 包
- lock