面向对象
三大支柱
继承
- 私有方法
- 子类访问权限
- 字段
- super②
- 重写的两个限制
- 存在两个类,B 继承 A,C 继承 B,我们能将 B 转换为 C 么? 如 C = (C) B;
- this() & super()在构造方法中的区别⑤
- 多态
- 封装
访问修饰符
抽象类
- 如何实例化
- 抽象类和最终类
接口
- 什么是接口java8之前,java8+
- 成员默认
- 字段默认
- 具体类是否需要实现所有接口,抽象类呢?
- Java 中,Serializable 与 Externalizable 的区别?
- 接口与抽象类④
内部类
- 静态内部类与顶级类有什么区别?
- 构造内部类和静态内部类④
数据类型
基本类型
- 包装类型
- new Integer(123) 与 Integer.valueOf(123) 的区别
- 装箱时使用什么方法
- float和double赋值时
- Java 中应该使用什么数据类型来代表价格?
- 怎么将 byte 转换为 String?
- Java 中怎样将 bytes 转换为 long 类型?
- 我们能将 int 强制转换为 byte 类型的变量吗? 如果该值大于 byte 类型的范围,将会出现什么现象?
- 3*0.1 == 0.3 将会返回什么? true 还是 false?
- int 和 Integer 哪个会占用更多的内存?
枚举类型
- 枚举类
引用类型
字符串
String
- String为什么 不可变?
- 不可变的好处④
- 三者比较:可变性,线程安全.
String.intern()
- String Pool位置
可被修改的字符串
StringBuffer
- 使用什么同步
- StringBuilder
方法
流程控制
循环结构
分支结构
- switch判断语句支持什么,不支持什么
顺序结构
方法
格式
[] [] 返回值 方法名(参数类型 参数)
方法调用
递归
Object通用方法
Object有哪些公用方法?
equals()
hasCode()
toString()
clone()
- 深浅拷贝
clone() 的替代方案
基本语法
关键字
final
数据
- 对引用类型
- 对基本类型
- 方法 private
- 类
static
- 静态变量
静态方法
- 不能使用什么关键字.
静态语句块
- 什么时候执行执行几次
静态内部类
- 怎样创建实例
- 非静态内部类怎么创建实例.
- 静态导包
- 初始化顺序⑥
- finally④
标识符
运算符
- Java 中 ++ 操作符是线程安全的吗?
- Java移位运算符③
字面量
分隔符
变量
- 局部变量为什么要初始化④
类加载和反射
反射
- 是什么?
- 反射包中常用类
- Class 类重要方法.
- Constructor类及其用法(用什么调用,私有方法设置什么)
- Field类及其用法(哪种带继承,赋值,获取,final修饰)
- Method类及其用法(如何执行,返回值要干什么)
类加载
过程
- 加载③
- 验证①
准备③
- 基本数据类型static变量,全局变量和局部变量
- static+final修饰,只有final修饰
- 引用数据类型默认赋值
- 数组
- ConstantValue
- 解析
初始化
- 变量赋值②
- 步骤③
类加载器
- 三种方式(区别)
- JVM类加载机制④
class对象
- class对象⑤
类加载相当于
- 类加载的方法①,返回值是什么
- 获取class对象的方法③
- 数组
- 基本类型+
- class标识的类
- Class类只存
类字节码
- 计算机运行java代码
- class文件伪结构②
- java字节码文件包含哪些类型的数据⑦
- JVM什么时候动态链接
异常
- 父类不声明异常,子类
- 捕获什么异常,传递什么异常.
- try-catch(符号)③
- finally遇见如下情况不会执行④
- try-with-resource
- 优先捕获,不要捕获
- 异常表
- 异常表用在什么时候(加了finally之后呢)
- 异常是否耗时?为什么会耗时?
- Return 和finally的问题
Object
Throwable
Error
Exception
- 受检查异常②
- 运行时异常③
泛型/容器(集合框架)
泛型
- Java中的泛型是什么 ? 使用泛型的好处是什么?②
- Java的泛型是如何工作的 ? 什么是类型擦除 ?
- 什么是泛型中的限定通配符和非限定通配符 ?(泛型的上下限),符号
- 如何编写一个泛型方法,让它能接受泛型参数并返回泛型类型?
- 你可以把List传递给一个接受List
- Array中可以用泛型吗?
- 类型擦除原则④
- 如何证明类型的擦除呢?通过反射添加其它类型元素
- 如何理解类型擦除后保留的原始类型
- 区分原始类型和泛型变量的类型
- 调用泛型方法时,可以指定泛型,也可以不指定泛型
- 如何理解泛型的编译期检查,这个类型检查是针对谁的呢
- 如何理解泛型的多态?泛型的桥接方法
- 如何理解基本类型不能作为泛型类型?③
- 如何理解泛型类型不能实例化?需要实例化一个泛型,应该如何做呢?
- 泛型数组:如何正确的初始化泛型数组实例?
- 如何理解泛型类中的静态方法和静态变量?(泛型方法)
- 如何异常中使用泛型③
泛型类
- 格式②
泛型接口
- 接口格式
- 实现类格式
泛型方法
- 格式
泛型数组
- 使用
Collection
Collection
List
LinkedList
基于什么实现,只能怎样,还可以用作
同时实现了
关于栈或队列,现在的首选是,次选
图示,当链表为空的时候
first
和last
如果需要多个线程并发访问,可以先采用什么方法对其进行包装
构造函数②
getFirst(), getLast()
LinkedList可存放
removeFirst(), removeLast(), remove(e), remove(index)
addAll()②
add()
node(int index)
clear()
index()
get(int index) ,set(int index, E element)
add(int index, E element)
indexOf(),lastIndexOf
remove()
Queue 方法
- peek()
- element()
- poll()
- remove()
- offer(E e)
- add(e)
- Deque 方法 ```
- offerFirst(E e)
- offerLast(E e)
- peekFirst()
- peekLast()
- pollFirst()
- pollLast()
- push(E e)
- pop()
- removeFirstOccurrence(Object o)
- removeLastOccurrence(Object o) ```
Vector
- 和什么类似,但
ArrayList
- 基于什么实现,支持什么操作
- 允许放入
- 构造方法③
- add(E e) 方法
- add(int index, E element) 方法里用了什么方法
- addAll()
- get方法,类型
- set方法返回值
- contains方法,使用了什么函数,可以判空吗?
- 根据索引remove方法,返回值,用什么方法移动元素,最后一个元素怎么操作
- 根据对象remove
- clear方法③
- sublist方法
- trimToSize方法,去除什么(包括),用什么方法
- iterator方法,默认包含
- Iterator 的 next方法,先检查
- indexOf(), lastIndexOf()
Set
TreeSet
- 基于什么实现,支持什么操作,HashSet 查找的时间复杂度,TreeSet呢
HashSet
- 基于什么实现,支持什么操作
LinkedHashSet
- 具有什么的查找效率,且内部使用什么维护元素的插入顺序
Queue
LinkedList
- 用什么来实现
PriorityQueue
- 基于什么实现,可以用它来实现
- 大根堆还是小根堆
- 不允许
- 底层实现,逻辑结构
- 父子节点联系
- peek()和element
- add(), offer(), 无参数的remove()以及poll()方法
- Deque ```
- 继承自
- offerFirst(E e)
- addFirst(e)
- offerLast(E e)
- addLast(e)
- peekFirst()
- getFirst()
- peekLast()
- getLast()
- pollFirst()
- removeFirst()
- pollLast()
- removeLast()
- push()
- pop()
- removeLastOccurrence(Object o)
- removeFirstOccurrence(Object o) ```
- LinkedList
ArrayDeque
- 底层通过什么实现
- 线程安全吗
- 不允许放入
- 图示
- addFirst()
- doubleCapacity()
- addLast()
- pollFirst()
- pollLast()
- peekFirst()
- peekLast()
- Stack
push(e)
pop()
peek()
数据结构
Queue 方法
peek()
- element()
poll()
- remove()
offer(E e)
- add(e)
Deque 方法
Map
TreeMap
- 基于什么实现
- 实现了什么接口③
- 包装成同步的方法
- get()
- put()
- remove()
HashMap
- 基于什么实现
- 允许放入
- 同步
- 冲突的处理方式
- Java7 HashMap处理冲突采用的是
- 两个参数可以影响HashMap的性能
- get(Object key)
- put(K key, V value)
- remove(Object key)
- 在 Java8 中,当链表中的元素达到了几个时,会将链表转换为红黑树
- Entry 和Node中包含什么
- put ()
- resize() 每次扩容为原来的,并且
- get()
HashTable
- 和 什么类似,但它怎样,它是遗留类,使用什么来代替
LinkedHashMap
- 使用什么来维护元素的顺序,顺序为
- 允许放入
- 直接子类
- 图示
- 两个参数可以影响LinkedHashMap的性能
- 如何包装成同步的
- get()
- put()②
- remove()
- 经典用法
WeakHashMap
- 特殊之处
- 没有显示的添加或删除任何元素,也可能发生如下情况
- 弱引用
- GC判断某个对象是否可被回收的依据是(不包括)
- 内部是通过什么来管理
entry
的 - 将任何 Map包装成一个Set的方法
容器遍历
工具类
遗留容器
Vector
- stack
- Dictionary
- BitSet
注解
- 什么是注解
- 用处③
- 原理
- 元注解④
- Retention使用什么记录注解
- 注解与反射接口(父接口)
- 注解支持继承吗
类
Java 中的构造器链是什么?
JDK版本
- 说出 JDK 1.7 中的三个新特性?
序列化
- 被什么修饰不能被序列化,反序列化需要