总结Java的面试题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oShiShuiNianHua1234/article/details/88221085

最近学完了Java的基础知识部分,用Java其实蛮长时间了,但是因为只是用来写一些测试的脚本用,并没有很深入的学习,最近终于完整的看了一遍Java知识,也算是查漏补缺了。决定接下来学习下Java常用的一些设计模式,以及经常遇到的一些面试题,也算是对自己学习的一个总结。

1.面向对象的特征有哪些?

(1)封装:最常见的就是把属性私有化封装到类里面,只能通过方法进行访问

(2)继承:子类继承父类,就继承了父类中的所有属性和方法

(3)多态:多态指的父类的引用指向子类对象,所以一定存在继承,赋写父类的方法

(4)抽象:对一类事物抽象成属性和方法

2.String是最基本的数据类型吗?

不是,Java基本的数据类型有八种分别为:

整型:byte,int,short,long;

浮点型:float,double;

布尔型:boolean;

字符型:char

3.int 和 Integer 有什么区别?

int是长度为32为的基本数据类型

Integer是类类型,是int型的封装类

int 和 Integer可以通过自动拆箱,自动装箱转换

4.String 和StringBuffer的区别?

String其内容一旦创建后,就不可改变;

StringBuffer是可变的,长度和内容都可以改变;

StringBuffer内部采用字符数组来存放数据,在需要增加长度时,重新new一个字符数组,把原来的数据copy到新的数组里面

连接相同的字符串时,StringBuffer的效率要高于String;

5.运行时异常与一般异常有何异同?

运行时异常又叫非可排查异常,在编译过程中,不要求必须进行显示捕捉

一般异常是叫可排查异常,必须进行try catch捕捉异常或者throws抛出异常。

6.说出ArrayList,Vector, LinkedList的存储性能和特性。

ArrayList和Vector都实现了List接口,但Vector是线程安全的,ArrayList是线程不安全的;

再说ArrayList和LinkedList:

ArrayList:是数组结构,所有定位很快,插入和删除元素很慢;

linkedList:是双向链表结果,所以插入和删除元素很快,但是定位很慢;

7.Collection 和 Collections的区别。

Collection是接口,是Set和List的父接口;

Collections是工具类,实现了排序,混淆等等一些方法;

8.&与&&的区别

&有两个作用,分别是位与 和 逻辑与

&&是逻辑与

&和&&作为逻辑与时,分别表示长路与 和 短路与;

&长路与:两侧都会被运算

&&短路与:只要第一个是false,第二个就不进行运算了

9.HashMap和Hashtable的区别

HashMap和Hashtable都实现了Map接口,都是用键值对形式保存数据。

区别(1)

HashMap可以存放null

HashTable不可以存放null

区别(2)

HashMap是线程不安全的

HashTable是线程安全的

10.final, finally, finalize的区别

final:是修饰符,可修饰类,方法,基本类型变量,引用,分别有不同的含义:

修饰类:代表该类不能被继承

修饰方法:代表该方法不能被重写

修饰基本类型变量:代表该变量只能被赋值一次

修饰引用:表示该对象只有一次指向引用的机会

finally:一般与try catch搭配使用,无论是否异常,都会执行

finalize:finalize是Object的方法,所有的类都继承了该方法,当一个对象满足垃圾回收机制时,并且被回收的时候,finalize()方法会被调用;

11.Overload和Override的区别,即重载和重写的区别。 Overloaded的方法是否可以改变返回值的类型?

Overload:重载是指一个类里面,具有相同的方法名,但是参数个数,参数类型不同;

Override:是指子类继承父类,对父类中的方法进行重写,方法名参数返回值必须与父类中方法一模一样;

Overloaded的方法可以改变返回值的类型

12.Error和Exception有什么区别?

猜你喜欢

转载自blog.csdn.net/oShiShuiNianHua1234/article/details/88221085