【java面试题】中高级Java面试题及答案解析

发布时间:2021-11-12 19:47:04
java程序员面试是中高级Java面试问题和答案分析的必要条件。如果你能在面试前做好充分的准备,你将更接近高薪。本文总结了Java程序员常见的面试问题和答案。来学习吧。

第一,anonymousinnerclass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
不,对于匿名内部类,我看到的一句话很到位:
new类或接口>类的主体>
这种形式的new语句声明了一个新的匿名类别,它扩展了给定类别或实现了给定接口。他还创建了这一类的新例子,并将其返回为句子的结果。
这就是匿名类的本质。它本身就是一个类的继承或接口的实现,所以继承其他类别或借口是没有意义的。在eclipse中冶证实了我的想法。Syntaxerorontoken显示了继承其他类别或实现其他借口。

第二,staticnestedclass和innerclass的区别越多越好(有些面试题很笼统)。
staticnestedclass指静态嵌套类,或嵌套类,是C++中常用的说法,innerclass指内部类,是JAVA中的说法。
内部类是一类内部类的总称,分为四类:成员类、静态成员类、局部类和匿名类。匿名类是局部类的特殊情况。成员类和静态成员类都存在于类的顶层代码中。相当于静态方法和非静态方法之间的关系。区别在于成员类依赖类实例,静态成员类不依赖。
因此,前者只能访问实例方法和成员,后者只能访问静态方法和成员。它们都是用来创建一个只与当前类有关的类别。依赖类与其他类无关。静态与否取决于依赖类的实例。局部变量相当于局部变量。存在于类的局部代码中。相当于在main()中随意定义和使用类。
唯一的区别是它只能使用final型的局部变量。这与垃圾回收机制有关。代码块结束后,局部变量将被回收。对象不一定。因此对象只能使用final的局部变量。
同样,局部类存在的局部代码块也可能有静态和非静态的区别。匿名类是局部类罪的常见应用。匿名类是无名子的局部类。在SWING设计中经常出现添加监控。
staticnestedclass相当于innerclass中的静态成员类。

第三,&和&&的区别。
这个问题很少。
&和,^,\
想学Java可以来这个群,第一个是220,中间是142,最后是906,里面可以学习交流,下载资料。

第四,hashmap和hashtable的区别。
常问。
hashmap可以看作是hashtable的替代者,Hashmap的Value和Key都可以是NULL,而Hashtable不能,同时Hashtable是线程同步,而Hashmap不是。Hashtable用Iterator遍历,Hashmap用Enumeration遍历。hashTable中hash数组默认大小为11,增加方式为old*2+1。hashMap中hash数组的默认大小为16,且必须为2指数。计算index的方法不同,HashTable直接使用hashcode(),HashMap重新计算hashcode。

第五,collection和collections的区别。
不要说一个是单数,一个是复数。
collection是结合类的上级接口,子接口包括List和Set,collections是java.util下的一个工具类,为集合搜索排序线程同步提供了一些列静态方法。

第六,什么时候用assert?
api级技术人员可能会问这个问题。
用于调试和优化来判断逻辑表达式的真实性。如果是假的,终止程序并返回异常。assert比if的优点是可以选择是否打开assert检查,也就是说assert生成的测试代码在正式发布时可以忽略,带来极大的便利。默认情况下,assert检查关闭。此外,与assert相比,Junit具有相似但更强的测试能力。

第七,什么是gc?为什么要有gc?
基础。
GC,即garbagecolection,是JAVA回收内存的一种方式。主要实现方法有引用计数、标记回收、复制清除等。GC可以避免内存泄漏和堆栈溢出,有效提高内存的利用效率,同时从繁琐的内存管理中释放程序员。

第八,strings=newstring(“xyz”);创建了几个stringobject
二是文字池中的一个,堆中的一个,先在文字池中创建一个“xyz”对象,堆中复制一个“xyz”对象,赋予引用s。

第九,math.round(11.5)等于多少?math.round(-11.5)等于多少?
Math.round(x)相当于(int)Math.flor(x+o.5f),
因此,math.round(11.5)=Math.flor(11.5+0.5)=Math.flor(12)=12;
Math.round(-11.5)=Math.flor(-11)=-11;

第十,shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错?
面试问题非常不正常,准备受虐。
s1=s1+1会出错,s1+1是int型,int不能赋值s1。需要显示转换,s1=(int)(s1+1)。s1+=1不会出错。至于原因,有人说和编译机制有关,需要看编译原理。

第十一,slep()和wait()有什么区别?
最喜欢搞线程。
1.slep()是java.lang.Thread中的静态方法,wait()是java.lang.Object中的方法;
2.sleep()用作当前线程阻塞自己,并在制定时间后恢复。wait()用于当前线程决定其他线程阻塞,是线程通信的表现;
slep()不释放资源,wait()释放资源;
四、slep()必须捕获异常,而wait()不需要。

第十二,java有goto吗?
十三个问题,如果面试官问这个问题,我劝你不要进这家公司。
goto是java的关键词,但java不支持goto,goto会影响程序的可读性,使逻辑混乱。在我的java教程中,由于同样的原因,我们应该尽量少使用continue和break,我们可以用等价的无continue/break循环代替,更不用说goto了..总之,java不支持goto。

第十三,数组有length()的方法吗?string有length()这种方法吗?
数组没有,数组是成员变量,length.string是成员函数length();我不知道这个问题的意义是什么。我通常使用eclipse。我在乎这个吗...

第十四,overload和override的区别。overloaded的方法能改变返回值的类型吗?
常问。
我写的一篇文章详细说明了重载、重写和多态的关系。
上一篇 【java面试题】2021年Java面试题整理,拿年薪全靠它了
下一篇 【java面试题】Java大厂面试题(详细总结)