Java面试总结(一)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值