面试之前做的一些准备工作,每次面试前都要准备一些这类知识,当做一次学习的机会,更重要的是平时工作中也要注意积累,从我个人来说,以前没有重视这一块,觉得平时开发用不上,其实只是我们开发的时候没有去注意细节,没有精益求精,产品或者项目要求不够高罢了
基本类型
byte short int float double long boolean char
Collection和Map的继承结构
Collection
List
ArrayList
LinkedList
Vector
Set
SortedSet –> TreeSet
HashSet
Map
HashMap 键可以为空,只能有一个为空
HashTable 键不能为空
TreeMap 键排序
异常类型
Throwable
Error 内部错误或资源耗尽,可以通过捕捉Throwable捕捉到,但是程序不可恢复
Exception
RuntimeException
CheckException 检查异常。IO,SQL
多态:
必要条件:继承重写向上转型
好处:
可扩充性:对父类新增新的子类即可增加新的多态功能,且不影响原本已存在的类。
值传递和引用传递
值传递:把值传入方法,形参实参内存地址不同,方法中对形参的修改,不会改变实参的值
引用传递:把引用传入方法,形参实参相同内存地址,方法中对引用的操作会影响实际参数的值。但是如果直接把引用指向另一个内存地址,实参不会有改变,所以有说法是JAVA没有真正的引用传递。
DDL和DML
DDL - Data Defined Lanuage
CREATE TABLE TABLE_NAME (COL1 DATATYPE, COL2 DATATYPE, …)
ALTER TABLE tablename ADD/MODIFY/DROP (col coltype)
DROP TABLE TABLE_NAME
DML - Data Manipulate Lanuage
SELECT DELETE INSERT UPDATE
实现同步的方法
synchronized语句块
synchronized方法
ReetrantLock
类加载器,双亲委派模型
启动类加载器 BootstrapClassLoader 加载jvm自己的类,
JAVA_HOME/lib/ext
系统类加载器 AppClassLoader
双亲委派模型:除了启动类加载器之外,其他的类加载器都有父加载器,每当加载class文件时,先交给父加载器,父加载器搞不定再自己加载,可以防止类的重复加载,每一个类都会被尽可能的加载,防止恶意加载。
mysql中数据类型int(n)括号里的n是什么意思?
数据展示用的,搭配ZEROFILL,当数字长度小于n时左侧补0
单例模式
饿汉模式
懒汉模式(要加锁,性能低)
DCL双重锁判断(对懒汉做了优化,最多只有前几次需要加锁)
静态内部类(延迟加载,线程安全)
枚举
容器实现(Map)
反射,泛型,注解
反射:运行时根据项目配置或功能中的用户配置动态加载类并执行指定方法
泛型:把类型作为一种参数传递,避免类型检查和转换。例如BaseMapper可以将Model类作为泛型
注解:一般与反射一起使用,通过反射获取类或者方法上的注解,可以实生成文档,格式检查,动态控制运行逻辑等功能