前言
之前换工作把自己学的内容总结了一下,虽然Java部分我写过十几篇读书笔记,详细的记录了Java8的内容,但是作为面试这样一个短暂的考试,详细的内容并没有很大的帮助,更重要的是精简与重点,所以最近打算把总结的内容全部写成博客,慢慢来吧!
这里参考的是网上流传的很火的几个PDF,以及书籍,名称如下(如果有需要资源的可以私信我):
Android核心知识点笔记V2020.03.30.pdf
技术面试必备基础知识 CyC2018.pdf
Java核心技术 卷1
这里如果说我是把资料抄了一边,也差不多吧,不过也有精简,也有加入自己的见解。内容较多,接下来慢慢写了。
Java 基础
1、数据类型
- 8种
- 自动装箱、拆箱
- 缓存池(valueOf 函数、Interger 的128)
2、String
- final的
- value 数组(final 的)–>不可变–>有何好处:hash、String Pool 、安全性、线程安全
- StringBuilder 和 StringBuffer
- String Pool(编译时)
3、运算
-
以值传递(实质)
- 值(修改临时变量)、
- 指针(修改变量,另一个变量,同一个地址)、
- 引用(修改变量内容,还是那个变量)
-
类型转换
-
隐式类型转换(++、+=)
-
switch
4、继承
-
访问权限(4个)
-
类、类成员
-
抽象类和接口区别?何时使用?
- 整体和功能的区别:类可以多携带信息
- 修饰符的区别:接口默认 public、接口字段默认 public static、完全抽象、默认方法(Java8)
- 实现数量:类只能实现一个,接口多个
根据区别,可以得出使用的地方。
-
super 、this、构造函数
-
重载和重写(实现多态)
重写–>重新编写同一个方法的功能
重载–>参数类型、个数、顺序重写三个限制条件?
- 访问权限、
- 返回类型、
- 抛出异常类型
重写的访问顺序?(4个)–> 注意参数的父类
- this.func(this) --> super.func(this) --> this.func(super) --> super.func(super)
5、object的通用方法(6 + 5)
hashCode()、equals()、clone()、toString()、getClass()、finalize()
-
锁相关的:
notify()、notifyAll()、wait()、wait(timeout)、wait(timeout,nanos) -
哪几个是 native 方法?
hashcode、clone、getClass、notify、notifyAll、wait(一个)少了 equals、toString、finalize、其他 wait
-
等价和相等以及hash值相等的区别?
-
如何判断对象等价?
是否相等–>是否为空–>是否同类–>转换之后是否数据域相等
-
clone() 和 Cloneable接口?接口为空?深拷贝、浅拷贝?
-
finalize()方法?只标记一次,执行不可知
6、关键字
-
final --> 类、方法、私有数据、临时变量、修饰基本类型、修饰引用类型
-
static --> 静态变量、静态方法、静态语句块、静态内部类、静态导包
带static的初始化顺序:
父类(静态变量、静态语句块)–> 子类(静态变量、静态语句块)–>
父类(实例变量、普通语句块)–> 父类(构造函数)
子类(实例变量、普通语句块)–> 子类(构造函数)先静态再实例,先父类再子类,先实例再构造,先前面再后面
-
volatile、synchronized 锁部分再说
-
transient 数组部分再说
7、反射
-
class 对象、
-
类加载(反射运行时加载)
-
获得 class 对象的方法?
- getClass()
- forName()
-
反射的三个类:Filed、Method、Constructor
-
反射优缺点:扩展性、便于调试、性能开销、安全问题
8、异常
-
Throwable --> Error、Exception
-
Error 两个? OutOfMemeoryError、StackOverflowError
-
非受查异常(you fault)、受查异常(IO、socket)
-
说五个常见异常?
- IllegalArgumentException、
- IndexOutOfBoundException、
- NullPointerException
- ClassNotFoundException(受查)
- SocketException(受查)
9、泛型
-
泛型类、泛型方法
-
类型变量的限定:extend、super
-
类型擦除:强制类型转换为限定的类型(没有则是 Object)
-
桥方法?
-
泛型类型的继承规则(通配符 、子类限定、超类限定)?
- 子类限定:可以用父类类型去 get (接受)子类类型的数据,但不能设置,因不知道数据的具体类型
- 超类限定:可以用子类类型去 set (存入)超类类型的数据,但无法取出,因为不能确定数据内存放的是什么类型