Java面试总结(一)

mac2022-06-30  22

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

最新回复(0)