第一次面试
-
Java学了那些
基础:控制流程(条件和循环)
数组
接口与继承
中级:异常处理
IO
常用集合
泛型
多线程
高级:注解与反射
junit
-
Java的特性
封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式
继承: 继承是从已有的类中派生出新的类, 新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
多态:都是同一个类型,调用同一个方法,却能呈现不同的状态
方法的多态,属性没有多态(左编译左运行); 存在条件:有继承关系,方法需要重写,父类引用指向子类对象
-
多态的作用
可扩展性强,比如一个父类可以指向多个子类对象,调用子类重写的方法
可以用来动态编译,类型在编译中确定。
-
方法重写和重载的区别
重载:同类中多个方法同名,但参数列表不同
重写:子类重新定义父类中同名的方法
-
equals方法和==的区别
- ==的话,如果是基本变量,比较数值,如果是引用变量比较地址
- String(继承object类)重写了equals方法,先比较地址、再比较字符内容。重写前也是比较内存地址。
-
List接口下的实现类,Map接口下的实现类,异同
-
list下常用的有Arraylist和linkedlist,相同点是有序,可重复,有索引;Arraylist元素增删慢,查找快\linkedlist方便元素添加、删除的集合。
-
Map是双列集合,包含两个值
HashMap键值都能为null,TreeMap键不能为null、值可以为null
LinkedHashmap实现了hashmap和链表,保证有序。
hashtable被hashmap取代,但其子类properties
-
-
JVM组成、GC算法
JVM:
-
类加载器:加载字节码到运行时数据区
-
运行时数据区:
- 程序计数器
- 栈
- 本地方法栈(native method stack)
- 堆
- 方法区
-
执行引擎:字节码翻译成底层系统指令,此时调用其他语言的本地库接口
-
本地库接口
GC算法:
- 复制算法(新生区常用)
- 标记清除
- 标记清除+压缩(老生区)
-