Java面试题考查频率最高的题

1、Math.round(12.5)和Math.round(-12.5)的值各是多少?

答案:13 、-12

2、有如下运行程序,其运行结果?

String str1 = "hello word";
String str2 = "hello word";
String str3= "hello "+ newString("world");
System.out.println(str1==str2);
System.out.println(str1==str2)

运行结果是:true 、false

3、实现多线程的方法有几种?

(1)实现Runnable接口,并实现该接口的run()方法
(2)继承Thread类,重写run()方法
(3)实现Callable接口,重写call()方法。

4、递归实现6!

public class Test {
	public static long fac(int n) {
		if(n>1) 
			return (n*fac(n-1));
		else
			return 1;
	}

	public static void main(String[] args) {
		System.out.println(fac(6));
	}

}

答案:720

4、关键字

synchronized: 对象互斥锁(同步锁),即锁定一个方法或者代码块时,同一时刻只允许一个线程访问该代码块。
Serializable: 对象序列化(将对象转化为字节系列的过程)
作用:(1)将对象的字节系列永久的保存在硬盘上(通常保存在一个文件中)
(2)在网络上传送对象的字符系列
volaile: 被此关键字修饰的变量,编译器不会做优化,每次都会从内存中读取,不从缓存中读取

5、java中的main方法

(1)必须定义在类中:java是纯面向对象语言,所有的属性和方法都必须定义在类里面
(2)主方法可以有多个,但要从主程序开始执行
(3)只有被public修饰的类的名字和文件名才相同,其他类可以任意取名

6、java中的关键字super

super指当前对象里面的父对象的引用,调用当前对像的属性和方法或某个成员是,用关键字this,而通过super可以调用父对象的构造方法、父类的普通方法和属性。

7、javaThread中的方法resume()负责恢复那些线程的执行

先解释一下线程的几大方法:(1)wait():让线程等待(暂停执行,用notify唤醒)
(2)sleep():使当前运行的线程休眠
(3)stop():用来终止线程的执行
(4)suspend():将一个线程挂起(暂停),并且不会自动恢复,必须通过对应的resume()方法来恢复

答案:suspend()方法

8、异常处理相关知识点:try、catch、finally

有如下java程序:

public class Test {
	public static int testException(int i) throws Exception{
		try {
			return i/5;
		} catch ( Exception e) {
			throw new Exception("exception in a aMethod");
		}finally {
			System.out.printl("finally");
		}
}

	public static void main(String[] args) {
		try {
			testException(0);
		} catch (Exception ex) {
			System.out.printl("exception in main");
		}
		System.out.printl("finished");
	}

}

结果: finallyfinished
过程:先判断try中的表达式或执行是否合法,不合法执行catch,最后执行(必须执行)finally(用于关闭一些资源)

9、HashMap和HashTable的相关描述

1、相同点:(1)都实现了Map接口
(2)两者都采用key-value来获取数据
2、不同点:(1)HashMap允许key-value的值为空(只允许一组为空),HashTable不允许为空
(2)HashMap的是非线程安全的(不同步),有安全检测机制(快速失败机制),而HashTable是线程安全的(同步),没有安全检测机制。

10、一颗非空二叉树第i层最多有多少个结点?

答案:2^(i-1)

11、八大排序算法(java编程实现)

最好理解的八大排序算法(java编程实现)

12、死锁的相关概念

死锁:多个并发进程竞争独占型资源

13、网络七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用

在这里插入图片描述

14、java中的继承、覆盖、重载(简单理解就是遵从父类的决定)

(1)继承: extends关键字,描述子类(派生类)、父类(基类、超类)的关系,有以下作用注意点:
① 子类继承父类的所有属性和方法(私有的隐式继承(不能直接使用,但可以间接使用,即可以在主方法中实例化调用,但不能再子类中实例化),其他显示继承)。
② 子类可以扩展新的属性和方法
③ Java一个子类只能继承一个父类,即子类不可以多继承。但java支持多层继承,如B继承A,C继承B,一般继承三层就ok
④ 继承的作用:建立子类与父类的关系;消除重用代码
注意: 在子类构造之前一定先执行父类的构造(默认调用无参构造),即子类对象实例化之前先实例化父类并调用父类的无参构造方法。
⑥ 关于继承中的super():当调用父类的无参构造时,有没有都无所谓,但调用无参构造的时候就必须要有,且必须放在首行。还有super()与this()不能同时出现

(2)覆盖:方法覆盖和属性的覆盖
**方法覆盖:**子类重新定义了一个与父类方法名称相同、参数类型及个数相同、返回值相同的方法
注意: ①父类中的方法被子类覆写后,当实例化子类时,调用的是子类的覆写后的方法,不再是父类中的方法
②被覆写的子类不能拥有比父类中更严格的访问控制权限(public>default>private)

技巧(多层继承的前提下): ① 看实例化哪个类?
② 观察子类是否覆写父类的方法,是就调用子类中覆写的方法,否就调用父类中的方法

那问题来了: 怎么调用父类的方法呢?
我们都知道,this.方法() 是先在本类中找,有就执行,没有就去父类中找。而super.方法() 可以实现直接调用父类中的方法,不管子类中有没有。(两者的调用只认方法名称)

(3)重载

(1)方法重载是让类以统一的方法处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数(类型)。重载Override是一个类中多态性的一种表现。

(2)java的方法重载,就是在类中可以创建多个方法,他们具有相同的名字,但具有不同参数和不同的定义。调用方法时通过传递给他们不同的参数个数和参数类型来决定具体使用那个方法,这就是多态性。

(3)重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不同。无法以返回类型来作为重载函数的区分标准。

15、请解释重载和覆写的区别?(请解释overloading与override的区别?)

(1)英文名称:重载(overloading),覆写(override)
(2)范围:重载在一个类中,覆写在继承关系中
(3)定义:重载要求方法名称相同,参数类型及个数相同
覆写要求方法名称相同、参数类型及个数相同、返回值类型相同
(4)权限:重载没有权限的限制,而覆写要求被覆写的子类不能拥有比父类更加严格的访问控制权限

16、请解释this和super区别?

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值