【黑马程序员】2019最新Java面试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【黑马程序员】2019最新Java面试题
1,short s1=1;s1=s1+1;有什么错???
答:s1为short型,1为int型,s1+1=2先为int型,S1为short
型,所以需要通过强制转化—s1=(short)(s1+1); 举例:short s1=1;
s1+=1;(正确,因为可以自动转化)
2,请简述equals与==的区别
在String中,equals对比的是内容,==是比较地址
3,sleep与wait的区别
(1)sleep方法可以设置线程阻塞的时间,而wait方法必须要notily方法来唤醒(2)sleep方法属于Thread类,而wait属于Object类
(3)sleep方法不会释放锁的资源,而wait方法会释放锁的资源面试官:每个引用对象都有wait方法吗?
答:都有,因为每个类都会继承Object基类
4,String,Stringbuffer,Stringbuidder的区别?
(1)String是JAVA的基础类,他可以定义少量的字符串
(2)StringBuffer是对String的扩充,他可以拼接大量字符串,但是他的效率比较低,因为他是线程安全的
(3)StringBuidder是对StringBuffer的拓展,他提高了效率,但是他是线程不安全的
5,ArrayList和Vector的区别?
(1)ArrayList底层是用数组实现的,所以查找快,增删慢,ArrayList是线程不安全的(2)Vector由于是线程安全的,所以他的效率要比ArrayList底的多
6,Super关键字的使用?
(1)Super关键字实现的前提必须要有继承
(2)Super关键字可以调用父类的方法,属性,通过Super.方法名,Super.属性(3)Super 关键字必须位于类的第一行
7,创建线程有哪几种方法??
常见的创建线程的方法(1)继承Thread类,调用start()方法(2)实现Runnable 接口,重写run方法,调用start方法
8,Synchronized可以加在什么地方?
(1)Synchronized可以加在方法上,可以加在类上。Synchronized是一把重量级锁
9,什么是线程同步?
(1)一个线程重开始到结束都不可以被打断,直到这个线程释放锁,共享打印机就是一个线程同步的实例,
10,Query接口的List和iterate方法的区别?什么是Query?
Query是查询的意思,在数据库中查询一个文件或记录,
个人理解:List和Iterate都可以访问数据库,只不过iterator如果要查找的数据缓存中有就直接从缓存中拿,而不去在查找数据库了。
11,数组中有没有length()方法,String有没有这个方法?
(1)数组中没有这个方法,使用length属性,返回的结果应该是数组的长度
int[] arr={1,2,3,4,5}; int length1=arr.length;//求数组的长度
(2)String里面有这个方法,返回的是该字符串的长度
String str="Hello"; int length2=str.length(); //求字符串的长度
12,try{}里面有一个return语句,finally里面也有一个return语句,finally 里面的语句会不会被执行,在return前还是return后?
我们都知道,不管发什么,finally里面的语句一定会被执行,所以12题的答案是会被执行废话不多说,看代码
int x=1;
try{
return ++x
}finallu{
return ++x;
}
结果为x=3; 原因很简单,因为finally语句块的代码始终要执行,所以在try里面碰到return的话实现不返还的等执行完finally一后在返回try里面的return
- 13,JAVA中,运行任意一个相同的循环代码,是否每次执行完的时间都相同,为什么?
不相同,随着代码的运行,会在jvm中产生大量的垃圾,随着垃圾越来越多,效率也会越来越慢
14,说出ArrayList,LinkList,Vector的存储机制和特性
(1)ArryaList:底层是用数组实现的,查找快,增删慢,线程不安全,适用于单线程(2)LinkList底层用链表实现的,适合插入删除,不适合查找,线程不安全,适用于单线程
(3)Vector:底层用数组实现的,查找快,增删慢,线程安全,适合多线程
15,this关键字?
(1)static修饰的方法不能用this关键字
(2)this关键字表示当前对象,通过this关键字可以调用本类的方法属性
(3)this关键字可以区别变量名
16,break和continue的区别??
(1)break和continue都是用来控制循环体的
(2)break是直接结束他所在的循环,而continue是结束他这一次循环,继续下一次的循环
(3)break可以在switch中使用,而continue只能在循环中使用
17,char类型能否存储汉字??
(1)在C语言中不可以存储,因为汉字占俩个字节,而C语言的char只有一个字节
但是他可以在java中存储因为java 的char占俩个字节
(2)拓展:unicode编码是java默认的编码格式,占16位,俩个字节
18,静态变量与实例变量的区别??
(1)在语义上:静态变量用static所修饰、被static所修饰的变量只被初始化一次(2)在运行上:静态变量属于类,实例变量属于对象
(3)被ststic所修饰的方法和类都是先被加载。
19,是否可以从一个static方法中调用一个非静态的方法??
(1)不可以,因为被static修饰的方法在类初始化的时候就被加载,而非静态的方法可能在这个时候还没有完成初始化
21,简述JDK1.5的新特性??
(1)for-each循环
(2)自动装箱拆箱
(3)静态导入
(4)范型
22,什么是单利模式,为什么要用单利模式?
(1)单例模式是一种设计模式,他提供了一种创建对象的最佳方式,
注意:单例模式只有一个实例
单例类必须提供一个方法可以访问
拓展:单例类的构造函数是被私有的
23,重载和重写的区别?
(1)重载是在一个类中,参数列表不同,参数个数不同,参数类型不同
(2)重写必须要有继承的前提,重写方法抛出的异常不可以大于父类抛出的异常
拓展:在重载中方法的返回类型不同是否构成重载????
(1)不能构成重载,重载必须要用参数来区分,传入不同参数,可以实现重载。