更新时间:2020-08-04 15:52:24 来源:极悦 浏览2098次
接口与抽象类的区别?
一个类可以实现多个接口,但只能继承最多一个抽象类
抽象类可以包含具体的方法;接口所有的方法都是抽象的(不管是否对接口声明都是抽象的)(jdk1.7以前,jdk1.8开始新增功能接口中有default方法,有兴趣自己研究)
抽象类可以声明和使用字段;接口则不能,但是可以创建静态的final常量
抽象类中的方法可以是public、protected、private或者默认的package;接口的方法都是public(不管是否声明,接口都是公开的)
抽象类可以定义构造函数,接口不能。
接口被声明为public,省略后,包外的类不能访问接口
Java中的异常有哪几类?分别怎么使用?
Throwable包含了错误(Error)和异常(Excetion两类)
Exception又包含了运行时异常(RuntimeException,又叫非检查异常)和非运行时异常(又叫检查异常)(1)Error是程序无法处理了,如果OutOfMemoryError、OutOfMemoryError等等,这些异常发生时,java虚拟机一般会终止线程.
-(2)运行时异常都是RuntimeException类及其子类,如NullPointerException、IndexOutOfBoundsException等,这些异常是不检查的异常,是在程序运行的时候可能会发生的,所以程序可以捕捉,也可以不捕捉.这些错误一般是由程序的逻辑错误引起的,程序应该从逻辑角度去尽量避免.
(3)检查异常是运行时异常以外的异常,也是Exception及其子类,这些异常从程序的角度来说是必须经过捕捉检查处理的,否则不能通过编译.如IOException、SQLException等
常用的集合类有哪些?比如List如何排序?
常用的集合分为List(有序排放)、Map(以名和值一一对应的存放)、Set(既无序也没名).在这三者之中其中List和Set是Collection接口的子接口,而Map不是Collection接口的子接口.
List常用有:ArrayList和LinkedList,Vecotr(线程安全)
Set常用有:TreeSet,HashSet元素不可重复,内部结构用HashMap,Key为Set的item值,value为一个固定的常量。java.util.Collections.newHashSetFromMap(),内部其实质还是通过ConcurrentHashMap实现线程安全的。
Map:TreeMap和LinkedHashMap,HashMap,HashTable(线程安全)
sort()方法排序的本质其实也是借助Comparable接口和Comparator接口的实现,一般有2种用法:
直接将需要排序的list作为参数传入,此时list中的对象必须实现了Comparable接口,然后sort会按升序的形式对元素进行排序;
传入list作为第一个参数,同时追加一个Comparator的实现类作为第二个参数,然后sort方法会根据Comparator接口的实现类的逻辑,按升序进行排序;
ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和优缺点?
Linkedlist集合的优势:添加元素时可以指定位置,比ArrayList集合添加元素要快很多。
Linkedlist在get很慢,LinkedList在get任何一个位置的数据的时候,都会把前面的数据走一遍。尽量不使用,而使用foreach LinkedList的方式来直接取得数据。
这两种方式各有优缺,为更好的使用可以将这两者进行联合使用,使用Linkedlist集合进行存储和添加元素,使用Arraylist集合进行get获取元素。
内存溢出是怎么回事?请举一个例子?
内存溢出(out of memory)通俗理解就是内存不够,在计算机程序中通俗的理解就是开辟的内存空间得不到释放。
OOM有堆溢出,栈溢出,方法区溢出(主要是动态生成class的处理过多)
==和equals的区别?
==号在比较基本数据类型时比较的是值,而用==号比较两个对象时比较的是两个对象的地址值
Object类中equals()方法底层依赖的是==号,那么,在所有没有重写equals()方法的类中,调用equals()方法其实和使用==号的效果一样,然而,Java提供的所有类中,绝大多数类都重写了equals()方法,重写后的equals()方法一般都是比较两个对象的值
hashCode方法的作用?
hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;
如果两个对象相同,就是适用于equals(Java.lang.Object)方法,那么这两个对象的hashCode一定要相同;
如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;
两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object)方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里”。
以上就是极悦java培训机构的小编针对“2020年企业常用的高级java面试题及答案”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习