一、java面向对象有哪些特征?
- 继承:增加了代码的复用性;
- 封装:增加了代码的复用性;
- 多态:增加了代码的可移植性;
二、ArrayList和LinkedList的区别?
ArrayList和LinkedList都实现了List接口,他们有以下不同点:
- ArrayList是基于索引的数据接口,他的底层是数组。LinkedList是以元素列表的形式存储他的数据。
- LinkedList的插入,添加,删除操作速度更快;因为不涉及重排元素
- LinkedList更占内存
三、高并发中的集合有哪些问题?
1.第一代线程安全集合类:Vector,Hashtable
使用synchronized修饰方法,缺点:效率底下
2.第二代线程非安全集合类:ArrayList,HashMap 性能好
如果需要线程安全Collections.synchronizedList(list);
四、JDK1.8的新特性有哪些?
1.接口的默认方法
2.lamdba表达式
3.函数式接口
五、java接口和抽象类的区别?
1.抽象类中可以定义构造器,接口不行;
2.抽象类中有抽象方法和具体方法,接口中全部都是抽象方法;
3.抽象类中的成员可以是private,默认,protected,public,接口中的成员都是public;
4.有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法;
5.抽象类中可以包含静态方法,接口中不能;
6.抽象类中可以可以定义成员变量,接口中定义的成员变量实际上都是常量;
7.一个类只能继承一个抽象类,一个类可以实现多个接口;
什么时候用抽象类?
抽象类描述的是一个概念,比如动物,植物;
接口描述的是某些共同事物有的共同特征,比如飞,吃;
六、hashcode和equals的区别?
七、Java代理的几种实现方式?
1.JDK实现的动态代理;
2.
八、==和equals的区别?
1.==:基本类型,数值相等,引用类型:对象的地址值是否相等;
2.equals():用来比较两个对象内容是否相等;
九、java中的异常处理方式是什么?
1.抛出异常 thorw
2.捕获异常 try--catch--finally
3.声明异常 throws
十、重写和重载有哪些区别?
1.重载是在同一个类中,重写是在子类和父类中;
2.重载无修饰符,重写
3.方法名相同。
4.重载参数不同,重写方法名相同;
十一、Sting,StringBuffer,StringBuilder的区别及使用场景?
1.String是不可变的字符串,StringBuffer和StringBuilder是可变的字符串;
2.StringBuffer线程安全的,效率低,StringBuilder则相反;
十二、怎么样声明一个类不会被继承?final修饰