java中级面试题的考点
在我们对java有一定的基础学习后,能力再往上升一些就是中级。对于初级和中级来说,后者除了对于基础java内容把握能力强外,在一些知识点的比较分析和原理解剖上有所理解能力。本篇就java中级面试题进行了整理,挑出了一些典型的高频试题,都来看看具体内容吧。
1.比较接口和抽象类的语法区别
(1)抽象类可以有构造方法,接口中不能有构造方法。
(2)抽象类中可以有普通成员变量,接口中没有普通成员变量!!!(注意重点在普通,即非静态和变量)
(3)抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
(4)抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
2.HashMap,LinkedHashMap,TreeMap的区别
(1)HashMap,LinkedHashMap,TreeMap都属于Map。
(2)Map的主要作用是用于存储键(key)值(value)对,根据键得到值,因此不允许键重复,但允许值重复。
(3)HashMap是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有最快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。
(4)LinkedHashMap也是一个HashMap,但是内部维持了一个双向链表,可以保持顺序;
(5)TreeMap不仅可以保持顺序,而且可以用于排序;
3.Java中堆和栈有什么不同
堆:(对象)
引用类型的变量,其内存分配在堆上或者常量池(字符串常量、基本数据类型常量),需要通过new等方式来创建。
堆内存主要作用是存放运行时创建(new)的对象。
(主要用于存放对象,存取速度慢,可以运行时动态分配内存,生存期不需要提前确定)
栈:(基本数据类型变量、对象的引用变量)
基本数据类型的变量(int、short、long、byte、float、double、boolean、char等)以及对象的引用变量,其内存分配在栈上,变量出了作用域就会自动释放。
4. 内存溢出是怎么回事?
对象有被指向的引用,但是再也用不到它就是内存溢出了。
GC机制:复制回收,标记清除,引用计数(如果有循环引用后,会影响垃圾回收,所以JVM虚拟机没有采用此方法进行垃圾回收)。
5.有哪些垃圾回收算法?
垃圾回收从理论上非常容易理解,具体的方法有以下四种:(1)标记-清除;(2)标记-复制;(3)标记-整理;(4)分代回收
6.说一下对存储过程的理解
存储过程:存储过程就是编译好了的一些sql语句。
存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。
可保证数据的安全性和完整性。通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。
可以降低网络的通信量。存储过程主要是在服务器上运行,减少对客户机的压力。
存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。
存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。
7.数据库连接池是什么意思
像打开关闭数据库连接这种和数据库的交互可能是很费时的,尤其是当客户端数量增加的时候,会消耗大量的资源,成本是非常高的。可以在应用服务器启动的时候建立很多个数据库连接并维护在一个池中。连接请求由池中的连接提供。在连接使用完毕以后,把连接归还到池中,以用于满足将来更多的请求。
8.HashMap的底层实现
首先有一个每个元素都是链表(可能表述不准确)的数组,当添加一个元素(key-value)时,就首先计算元素key的hash值,以此确定插入数组中的位置,但是可能存在同一hash值的元素已经被放在数组同一位置了,这时就添加到同一hash值的元素的后面,他们在数组的同一位置,但是形成了链表,同一各链表上的Hash值是相同的,所以说数组存放的是链表。而当链表长度太长时,链表就转换为红黑树,这样大大提高了查找的效率。
以上就是关于java中级面试题的分享,对于基础java内容掌握后,我们就可以试着对Java的知识点进行内容上的联系,同时理解使用的原理。大家对着答案,看看本篇的题目是否能答出来吧。更多Java试题指路:java面试题
java基础面试题及答案:对于java知识点的理解,一直都是基础面试题出现的高频内容,需要我们在复习的时候多下功夫。除了一些概念的考察外,同一类别下的知识点对比分析,是面试时非常容易拉开差距的方面。下面我们就java基础面试题给大家带来分享 ...