Java基础-面试题收集整理一
-
请用文字描述super()和this()的区别
1)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。 2)super()和this()类似,区别是,super从子类中调用父类的构造方法,this()在同一类内调用其它方法。 3)super()和this()均需放在构造方法内第一行。 4)尽管可以用this调用一个构造器,但却不能调用两个。 5)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。 6)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。 7)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。
-
什么是java序列化,如何实现java序列化?
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化(将对象转换成二进制)。 可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间,序列化是为了解决在对对象流进行读写操作时所引发的问题。 把对象转换为字节序列的过程称为对象的序列化,把字节序列恢复为对象的过程称为对象的反序列化。 序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法, implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象, 接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
-
Overload(重载)和Override(重写)的区别,Overloaded的方法是否可以改变返回值的类型?
1) 方法的重写Override和重载Overload是Java多态性的不同表现。 2) 重写Override是父类与子类之间多态性的一种表现。 3) 重载Overload是一个类中多态性的一种表现。 4) 如果在子类中定义某方法与其父类有相同的名称和参数,那么我们说该方法被重写了。子类的对象使用这个方法时,将调用子类中的定义。对子类而言,父类中的定义如同被“屏蔽”了一样。 5) 关于重载,如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,也就是参数签名不同,这种情况出现方法的重载。重载的方法是可以改变返回值的类型
-
请问&和&&的区别
同:两者都是逻辑与运算符,当运算符两边的表达式的结果都为true时,整个运算结果才为true,只要一方为false,则结果为false 异:&是非短路运算符,当运算符左边的结果为false时,任然会计算运算符右边表达式的结果,&&则不会再计算右边表达式的结果; &也可作为位运算符,&&不可。&&在运用时可以避免null指针异常
-
ArrayList和LinkedList的区别
ArrayList:底层采用数组实现,遍历速度快,中间插入删除元素速度慢。线程不安全 LinkedList:采用双向链表实现,空间不连续。每个元素不仅仅存储数据,还要存储上一个和下一个元素的引用。中间插入和删除元素速度快,遍历速度慢
-
char型变量能不能存贮一个中文汉字?为什么?如果能,申明一个char型变量并赋一个中文汉字的值。
char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中可以存储汉字。 不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。 补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。 char value = ‘中’;
-
什么是数据库连接池,描述原理
概念:数据库连接池是负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。 原理:传统的持久层操作,由持久层组件访问数据库,每一次数据操作都要建立连接,使用完后需要关闭连接。 由于建连接和关连接是流操作,频繁建立关连接,会增加额外的消耗,导致响应速度下降。 同时在高并发时,发亮用户同时访问,会导致连接对象无限制的分配,可能会引起服务器内存崩溃。 为数据库连接建立一个缓冲池。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需要从缓冲池中取出一个,使用完后再放回去。 通过设定连接池最大连接数来防止系统无休止的数据库连接。
-
为什么我们需要编码规范?
1)好的编码bai规范可以尽du可能的减少一个软件的维zhi护成本,并且几乎dao没有任何一个软件,在zhuan其整个生命shu周期中,均由最初的开发人员来维护; 2)好的编码规范可以改善软件的可读性,可以让开发人员尽快而彻底地理解新的代码; 3)好的编码规范可以最大限度的提高团队开发的合作效率; 4)长期的规范性编码还可以让开发人员养成好的编码习惯,甚至锻炼出更加严谨的思维;
-
Collection 和 Collections的区别
Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。 Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。 Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。
-
final, finally, finalize的区别?
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally 是异常处理语句结构的一部分,表示总是执行(注意是在return之前执行哦,这个也常常会在代码执行结果中问到)。 finalize 是Object类的一个方法,在垃圾收集器执行的时候会调用要被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
空闲时间收集整理的一些题目,不成体系仅供参考。
以后有时间会慢慢更新,继续收集。