Java面试题一 :1-10

本文介绍了Java面试题供小白编程爱好者借鉴,因为我也是学习者,这是我的一点面试经验和心得,如有错误,请指出。废话不多说,开始步入正题。(ps:因为这是我自己收录面试题,创作不易,有喜欢的小伙伴请点赞支持,谢谢啦!)

Java面试题1-10

  • 一、Java的特性
  • 二、抽象类与接口的区别
  • 三、单列集合(list,set)与双列集合(map)
  • 四、比较两个对象是否相同,重写了equals方法为什么还要重写hashcode方法
  • 五、Java的常用包有哪些
  • 六、常见的异常有哪些
  • 七、throw与throws的区别
  • 八、final、finally与finalize的区别
  • 九、 == 和 equals 的区别是什么
  • 十、代码输出题

一、Java的特性

Java的特征分为封装、继承、多态、(抽象(ps这个可说可不说,因为不是独有的))。

  1. 封装:主要是将类中的部分代码实现细节隐藏、封装起来,不直接对外提供访问;
  2. 继承:主要体现的父子类的关系上,提高了软件的可重用性和可扩展性;
  3. 多态:包括编译时多态和运行时多态,通过调用不同参数或名称的方法来决定父类对象动态调用哪个子类方法,增强了代码的灵活度。

因为比较基础,如果会问到此知识点,一般这里面试官会问:多态是什么?如何实现的?
答:什么是多态?

同一消息在不同操作中具有不同的状态。这就是多态!
多态分为编译时多态和运行时多态。编译时多态的经典例子是方法的重载,运行时多态就是指父类引用指向子类对象。

如何实现?

分为三步:1.要有继承、实现关系 2.要有重写 3.父类引用指向子类对象(也被称之为向上转型)
出现指数:❤❤❤

二、抽象类与接口的区别

抽象类:里面的方法没有方法体,类用abstract修饰,不能被实例化。
接口:定义规范,是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现。通俗点说就是没有方法体。

  1. 定义抽象类的关键字是class,而定义接口的关键字是interface
  2. 继承抽象类的关键字是:extend,而实现接口的关键字是:implement
  3. 继承抽象类支持单继承,而实现接口支持多实现
  4. 抽象类有接口方法而接口没有
  5. 接口中的成员变量必须是常量,而抽象类可以是变量
  6. 抽象类中的成员方法不一定是抽象方法,而接口中的方法都是抽象方法
  7. 接口中增加方法,一定影响子类(抽象方法必须被重写),而抽象类不影响,继承抽象类不一定要重写,因为本身可以是抽象类

三、单列集合(list,set)与双列集合(map)

集合分为:单列集合(Collocation)、双列结合(Map)
如图:
Java面试题一 :1-10_第1张图片

  1. List集合:有序可重复,重点:实现类ArrayList和Linkedlist的区别: ArrayList集合底层基于数组实现,循序存储的线性表,易查询,增删慢
    Linkedlist集合底层基于链表实现,链式存储的链表,查询慢,增删快
  2. Set集合:无序不重复,重点:实现类Hashset和Treeset的区别 Hashset集合底层基于哈希表,用法:去重 TreeSet集合底层基于数组、链表、红黑树,用法:(注重排序)
  3. Map集合:键值对的形式存储,重点:实现类HashMap、HashTable的区别 HashMap集合继承AbstractMap,线程是非安全的,允许null键、null值
    HashTable集合继承Dictionary,线程是安全的,不允许null键、null值,吞吐量小,一般不用

集合知识点如果有面试官问,那基本会问以上的考点!

四、比较两个对象是否相同,重写了equals方法为什么还要重写hashcode方法

若希望比较对象是否相等,则需要进行equals方法的重写,只重写equals方法,只能用于判断调用对象是否参数相同(比较两个的地址),而比较两个对象,不光要比地址,还要比较其hashcode值(哈希码值)。所以只重写equals是不满足常规协定的。
即比较两个对象,需要重写equals方法,还要重写hashcode方法。

五、Java的常用包有哪些

  1. Java.lang包-----Java语言的核心包,所有内容自动导入,如:java.lang.String等等
  2. java.util包------Java语言的工具包,提供大量的工具类和集合等内容,如:java.util.Scanner等等
  3. java.io包--------Java语言的输入输出包,提供大量的读写文件相关类,如:java.io.InputStrean等等
  4. java.net包------Java语言的网络包,提供大量的网络通信相关类,如:java.net.Scoket等等
  5. Java.lang.reflect–Java语言的反射包,提供大量的反射相关的类。

六、常见的异常有哪些

序号 异常名称 异常描述
1 java.lang.NullPointerException 空指针异常:对象为空,并且调用相应方法。
2 java.lang.ClassNotFoundException 找不到指定类,常出现在反射中
3 java.lang.ArrayIndexOutOfBoundsException 数组下标越界
4 java.lang.NumberFormatException: 数字格式化异常
5 java.lang.ArithmeticException: 数学运算异常
6 java.lang.StackOverflowError 内存空间溢出错误,方法递归调用中,经常发生
7 java.lang.ClassCastException 类型转换异常,向下转型中经常发生
8 java.text.ParseException 时间格式化异常,SimpleDateFormart中经常发生
9 java.util.InputMismatchException 输入类型不匹配异常

七、throw与throws的区别

throws:用在方法声明后面,跟的是异常类名,可以跟多个用逗号隔开。表示可能发生异常。
Throw:用在方法体内,跟的是异常对象名,依次只能抛出一个异常,throw表示一定发生了异常,并抛出。

八、final、finally与finalize的区别

final表示最终的,被修饰后无法更改或无法继承或无法重写。 Finally表示最后必须跑的代码块。
Finalize:在GC垃圾回收时删除对象前会调用。

九、 == 和 equals 的区别是什么

==比较的是地址
equals在基本数据类型比较的是地址,引用数据类型比较的是字面量

十、代码输出题

1.下面的代码输入什么?

	String str6 = "b";  
	String str7 = "a" + str6;  
	String str67 = "ab";  
	System.out.println("str7 = str67 : "+ (str7 == str67));//str7 = str67 : false

2.下面的代码输入什么?

下面的代码输入什么?
		Integer i1 = 1 ;
		Integer i2 = 1 ;
		Integer i3 = 128 ;
		Integer i4 = 128 ;		
		System.out.println(i1 == i2);   //true			
		System.out.println(i3 == i4);	//false

以上就是第一期整理出来的面试题,每一期面试题有十个,尽请期待!!

你可能感兴趣的:(面试题,java,抽象类,多态,面试,编程语言)