《2023年Java面试题及其答案.docx》由会员分享,可在线阅读,更多相关《2023年Java面试题及其答案.docx(14页珍藏版)》请在第一文库网上搜索。
1、JaVa面试题及其答案(二).txt1有了执著,生命路程上的寂寞可以铺成一片蓝天;有了执著,孤单可以演绎成一排鸿雁;有了执著,欢乐可以绽放成满圆的鲜花。JaVa面试题及其答案(二)1(+或JaVa中的异常解决机制的简朴原理和应用。当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表达为一个异常。违反语义规则涉及2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexoutofBoundsException;访问nu11的对象时会引发Nu11PointerException0另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并
2、自由选择在何时用throw关键字引发异常。所有的异常都是java.Iang.Thowab1e的子类。2 Java的接口和C+的虚类的相同和不同处。由于JaVa不支持多继承,而有也许某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足规定。与继承相比,接口有更高的灵活性,由于接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是PUb1iCStatiC,所有方法默认情况下是pub1ic.一个类可以实现多个接口。3 .垃圾回收的优点和原理。并考虑2种回收机制。JaVa语言中一个显著的特点就是引入了垃圾【可
3、收机制,使C+程序员最头疼的内存管理的问题迎刃而解,它使得JaVa程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有作用域的概念,只有对象的引用才有“作用域:垃圾I可收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低档别的线程运营,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增屋垃圾回收。义staticfina1成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实
4、现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。31,abstract的method是否可同时是Statia是否可同时是native,是否可同时是synchronized?都不能32,接口是否可继承接口抽象类是否可实现(imp1ements)接口,抽象类是否可继承实体类(concretec1ass)?接口可以继承接口。抽象类可以实现(imp1ements
5、)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。33,启动一个线程是用run()还是start()?启动一个线程是调用start方法,使线程所代表的虚拟解决机处在可运营状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运营。run()方法可以产生必须退出的标志来停止一个线程。34,构造器Constructor是否可被override?构造器COnStrUCtOr不能被继承,因此不能重写OVerriding,但可以被重载Over1oadingo35,是否可以继承String类,String类是fina1类故不可以继承。36,当个线程进入?个对象的?个synchr
6、onized方法后,其它线程是否可进入此对象的其它方法,不能,一个对象的一个synchronized方法只能由一个线程访问。37,tryo里有一个return语句,那么紧跟在这个try后的fina11y里的code会不会被执行,什么时候被执行,在re1um前还是后,会执行,在return前执行。38,编程题:用最有效率的方法算出2乘以8等於儿,有C背景的程序员特别喜欢问这种问题。2?339,两个对象值相同(x.equa1s(y)=true),但却可有不同的hashcode,这句话对不对,不对,有相同的hashcodeo40,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可
7、返回变化后的结果,那么这里到底是值传递还是引用传递,是值传递。JaVa编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。41.swtich是否能作用在byte上,是否能作用在1ong上,是否能作用在String上,switch(expr1)中,expr1是一个整数表达式。因此传递给switch和case语句的参数应当是intshortchar或者byteo1ong,string都不能作用于swtich42,编程题:写一个Sing1eton出来。Sing1eton模式重要作用是保证在J
8、ava应用程序中,一个类C1ass只有一个实例存在。一般Sing1eton模式通常有几种种形式:第一种形式:定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个pub1ic的getInStanCe方法获取对它的引用,继而调用其中的方法。pub1icc1assSing1etonprivateSing1eton()在自己内部定义自己一个实例,是不是很奇怪,注意这是private只供内部调用privatestaticSing1etoninstance=newSing1eton();这里提供了一个供外部访问本c1ass的静态方法,可以
9、直接访问pub1icstaticSing1etongetInstance()returninstance;第二种形式:pub1icc1assSing1eton(privatestaticSing1etoninstance=nu11;pub1icstaticsynchronizedSing1etonget1nstance(这个方法比上面有所改善,不用每次都进行生成对象,只是第一次使用时生成实例,提高了效率if(instance-nuII)instance=newSing1eton();returninstance;其他形式:定义一个类,它的构造函数为private的,所有方法为static的。般
10、认为第种形式要更加安全些Hashtcib1e和HashMapHashtab1c继承自Dictionary类,而HashMap是Java1.2弓|进的Mapinterface的一个实现HashMap允许将nu11作为一个entry的key或者Va1Ue*而Hash1ab1e不允许尚有就是/HashMap把I1aShtabIe的contains方法去掉了,改成Containsva1ue和ContainsKeyo由于contains方法容易让人引起误解。最大的不同是,Hashtab1e的方法是Synchronize的,而HashMap不是,在多个线程访问Hash1ab1e时,不需要自己为它的方法实现
11、同步,而HashMap就必须为之提供外同步。Hashtab1c和HashMap采用的hash/rchash算法都大约同样,所以性能不会有很大的差异。43.描述一下JVM加载c1ass文献的原理机制,44 .试举例说明一个典型的垃圾回收算法,45 .请用java写二叉树算法,实现添加数据形成二叉树功能,并以先序的方式打印出来.46.请写个java程序实现线程连接池功能,47.给定一个C语言函数,规定实现在java类中进行调用。48、编一段代码,实现在控制台输入一组数字后,排序后在控制台输出;49、列出某文献夹下的所有文献;50、调用系统命令实现删除文献的操作;51、实现从文献中一次读出一个字符的
12、操作;52、列出一些控制流程的方法;53、多线程有哪些状态,54、编写了个服务器端的程序实现在客户端输入字符然后在控制台上显示,直到输入END为止,让你写出客户端的程序;55、作用域PUb1iaPriVate,protected,以及不写时的区别答:区别如下:作用域当前类同一PaCkage子孙类其他PaCkagePUb1iCJJJJprotectedVVVXfriendIyJJXXprivateVXXX不写时默认为friend1y56Array1ist和Vector的区别,HashMap和Hashtab1e的区别答:就Array1iSt与VeCtOr重要从二方面来说.一.同步性:VeCtOr是
13、线程安全的,也就是说是同步的,而Array1iSt是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector默认增长为本来一培,而Array1iSt却是本来的一半就HashMap与HashTabIe重要从三方面来说。一.历史因素:HaShtabIe是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现二.同步性Washtab1c是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的三.值:只有HaShMaP可以让你将空值作为一个表的条目的key或Va1Ue57、char型变量中能不能存贮一个中文汉字?为什么,答:是可以定义
14、成为一个中文的,由于java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的58、多线程有几种实现方法,都是什么,同步有几种实现方法,都是什么,答:多线程有两种实现方法,分别是继承Thread类与实现Runnab1e接口同步的实现方面有两种,分别是synchronized,wait与notify59、垃圾回收机制,如何优化程序,希望大家补上,谢谢60xf1oat型f1oatf=3.4是否对的?答:不对的。精度不准确,应当用强制类型转换,如下所示:f1oatf=(f1oat)3.461、介绍JAVA中的Co11ectionFrameWOrk(涉及如何写自己的数据结构)答
15、:Co1IeCtionFrameWork如下:Co11ection卜1istI卜1inkcd1istIpArray1ist11IVectorIStack1SetMap-Hashtab1e(-HashMap1WeakHaShMaPCO11eCtiOn是最基本的集合接口,一个COI1eCtiOn代表一组Object,BPCo11ection的元素(E1ements)Map提供key到va1ue的映射62、Java中异常解决机制,事件机制,11、JAVA中的多形与继承,希望大家补上,谢谢63、抽象类与接口,答:抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是个标记(同时有多重继承的功能)。编程题:1.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset答案(1)pub1icstaticString口sp1itstringByComma(Stringsource)(if(source=nu11.source,trim().equa1s/)returnnu11;,StringTokenizerCommaToker=newStringTokenizer(source,);Siring口resu1t=newStringcommaToker.count