1、equals和==和hashcode
“==”是运算符,比较两个变量的值是否相等
equals是Object类的方法。比较两个对象是否相等
hashcode是Object类的方法,返回一个哈希值。(数值)
2、string、 stringbuilder、 stringbuffer区别
string:不可变序列
stringbuilder:可变的字符序列,线程安全。(单线程情况下,有大量的字符串操作使用)
stringbuffer:可变的字符序列,线程不安全,效率高。(单线程情况下,有大量的字符串操作使用)
3、list set map区别Array List,linklist区别,hashmap和hashtable区别
list:可重复的集合
set:不可重复的集合
map:键值对,key不能重复,值可以重复,存储的数据是没有顺序
arraylist:若是批量随机的插入删除数据,LinkedList的速度大大优于ArrayList. 因为ArrayList每插入一条数据,要移动插入点及之后的所有数据。
linklist:对于新增和删除操作add和remove,若只对单条数据插入或删除,ArrayList的速度反而优于LinkedList
hashmap:线程不安全的,不是同步的。HashMap允许存在一个为null的key,多个为null的值
hashtable:线程安全的,是同步的。hashtable的key和value都不允许为null。
4、面向对象特征,多态(实现方法),重写重载区别
封装:把描述一个对象的属性和行为封装成一个类
继承:实现代码的复用,所有子类继承父类的属性和行为,继承具有单一性和传递性
多态:就是重载和重写。(强制类型转换和向上、向下转型)(行为多态和对象多态)
重写:发生在继承类中,方法名、参数类型、返回类型都相同
重载:发生在类中,同名不同参。
5、接口和抽象类
(1)接口中的方法都是抽象的,抽象类可以是抽象和非抽象的
(2)类可以实现多个接口,只能继承一个抽象类
(3)接口都是public,抽象类可以是private,protected,public
(4)都不能被实例化
6、静态变量和实例变量的区别
静态方法不能调用非静态方法,静态方法在首次调用类的时候加载
静态变量:可以直接调用类名引用
实例变量:必须创建对象后通过它调用此对象来使用
7、线程创建方式
(1)继承Thread类创建线程
(2)实现Runnable接口创建线程
(3)使用Callable和Future创建线程
(4)使用线程池例如用Executor框架
8、线程常用方法
1)、start()启动线程
2)、run()执行
3) 、sleep()休眠
4)、isAlive()死亡状态
5)、currentThread()返回当前CPU资源的线程
6)、interrupt()导致休眠的线程发生InterruptedException异常,从而结束休眠,重新排队等待CPU资源。
9、线程的生命周期
1)、 New(初始化状态)
2)、 Runnable(可运行/运行状态)
3)、 Blocked(阻塞状态)
4)、Waiting(无时间限制的等待状态)
5)、Timed_Waiting(有时间限制的等待状态)
6)、Terminated(终止状态)
10、Synchronized的理解
互斥锁,锁住一块代码区
转载于:https://www.cnblogs.com/caiwx/p/11188429.html