java开发者技术人员升职应聘面试题.docx
综合基础测试(JaVa类)姓名,WB分数1、给出下面一段代码的打印信恩.并说明“="与"equa1.s”的区别(6分)pub1.icc1.assTest(pub1.icstaticvoidmain(St11ng(args)(inia=10;intb=10;f1.oatc=10.0fImcgcrain=newIntcgcr(IO);Iinegerbin=newImegertIO);PkatCfI=new11oat(10.00:Systcm.oui.prim1.n(Ma三bism÷(a=b);SySIem.Oii1.prinUnra=cis44÷(a=c);Systen.ou1.prin1.1.n(fc,ain=binisfc4+(ainbin)>:System.out.print1.n(k*ain=cis4*+(ain=cf1.);Systcm.ou.prindn(Main.cqua1.s(bin)is“÷(ain.cqua1.s(bin);Sysem.o(.prin(1.n(*iain,equa1.s(cf1.)is4fc÷(ain.equa1.s(c);)J编译System.out.prin1.1.n<-an=Cnis“+<ain=Cn):时出错.基本数据类里与对象类型不能用=比较equa1.s方法在非空对象引用上实现相等关系:对于任何非空引用值X,XCqua1.s(X)都应返回true.对于任何非空引用值X和y,当I1.仅当y.equa1.S(X)返回true时,X.equa1.s(y)才应返回true.对于,任何非空引用值x、y和7.,如果X.equa1.s(y)返回true,并且y.equa1.s(三)返回Irue,那么x.equa1.s(三)应返回true。对于任何非空引用值X和y,多次调用X.equa1.s(y)始终返回true或始终返回fa1.se,前提是对象上equa1.s比较中所用的信息没有被修改。对于任何非空引用值X,X.equa1.s(nu1.1)都应返回fa1.se。Object类的equa1.s方法实现对象上差别可能性最大的相等关系:即,对于任何非空引用值X和y.当且仅当X和y引用同一个对象时,此方法才返回true(x=y具有伯true).=比技基本数据类型时.是比技对望个的实际(ft:比较对象类型时是比较个对象的has<odc伯是否相等;2,写出一个懒汉式Sing1.eton出来(5分)pub1.icc1.assSing1.eton(privateSing1.etonO0注意这是PriVa1.C只供内部调用privatestaticSing1.etoninstance=newSing1.otonO:这里提供了一个供外部访问木C1.aSS的峥态方法,可以直接访问PUbIiCstaticSingIe1.onXctInstance0(returninstance;)3、Strings=newStringCzte");创建了几个SiringObjctt?(4分)2个StringObject一个是参数"ztc'还有,个是通过构造函数生成与该参数相同的字符序列的新的StringObject4、short$1=I;S1.=si+kshortS1.=IzS1.+=1:上面两行,加一行有错.有什么错?(4分)第一行有错;编译时出错S1.是short51.s1.+1.是in(型,不能显式转化为short里。可修改为S1.=CshortXs1.+1。shortsi=I;SI+=I正确,5、两个Xj象值相同(x.equak(y)=true),但却可彳i不同的hashcode,这句话对不对?(4分)equa1.s被承写时,通常有必要重写hashCode方法,相等对象必须具有相同的hashCode.但具有相同的hashCodc的对象不一定相等如果两个对象对同一个对象使用equa1.s方法都褥到true伯,则可根据传递性得到这两个对象也相同的结论,所以他们应该拥有相同的hashcodeo6、Sw1.iCh是否能作用在byteI:.是否能作用在1.ong匕是否能作用在String上?(4分)Swtich能用在byte上不能用在Iong和String上SwIiCh只能用在Charbyteshortint上7,指出下面这段代码存在的问遨.并给出解决方案(7分)pub1.icc1.assMyThrcadimp1.ementsRunnab1.c(inti=0;puHicvoidrun()IPrOCeSsD;UaOW只对数据进行处理re1.shUI(W/刷新相应显示2个方法在并没有被定义.PmXXSSDaIM)方法只时数据进行处理而refrchUIO方法刷新相应$2示:类MyThrCad继承fRunnab1.e接1.1.也就是说数据进行处理和刷新显示在一个规程中处理,那实现多税程就没布任何意义了,数据处理是先进行的,如果在数据处理过程中发生不可捕获的异常而中断,数据不会刷新显示,可能会造成数据的无失等应该多开启一个个城程给刷新显示.如果数据处理的线程中断也不会影响数据的丢失8、指出卜面定义的类中三个函数同步的对象,以及使用时的注意事项(6分)pub1.icc1.assMyC1.ass(pub1.icsynchronizedvoidfun1()(H.Ipub1.icvoidfun2(>(synchronizcd(this)()pub1.icvoidfun3()(Synchronizcd(Obj)(H.IJ答:pub1.icsynchronizedvoidfun1()I/.)同步的是fun1()这个方法在该类内部同步,一旦新实例化对象后,不能保证两个实例化对象之间能鲂同步。pub1.icvoidfun2()synch11>nizcd(this)(/.)同步的是代码块,把该类本身作为同步对象,在该类内部有效,一旦新实例化而象后,不能保证两个实例化对象之间能够同步。pub1.icvoidfun3()(SynChrVniZed(Obj)(/.I)同步的实代码块,必须要保证Obj对象是同一个才能同步9、给出下面段代码的两个函数的返回依,说明原因(4)pub1.icc1.assMyC1.ass(pub1.icintfun1()(try(ItrtuniI;)catch(Exceptionex)(re1.um2;IIpub1.icintIun2()<ryre<urn3;)fina1.1.y(return4:)JI第一个函数返回I.第二个函数返回4,第一个南数会先执行Jry中的语句,出错的话才会执行CaIeh中的语句.第二个函数在执行try中的语句时,直接return4:I。、当一个对象被当作参数传递到一个方法后此方法可改变这个对象的属性,并可返回交化后的结果,加么这里到底是(ft传递还是引用传递?(5分)是值传递,Java编程语言只由伯传递参数。当个对象实例作为个卷数被传递到方法中时,参数的值就是对该时象的引用。财象的内容UJ以在被调用的方法中改变,但对象的引用是永远不会改变的.Ih接口是否可维承接口?抽奴类是否可实现(imp1.ements)接口?抽飘类是否可继承实体类(concrc1.ec1.ass>?(4分)接门可以继承接I.抽象类可以实现接口.也可以继承实体类12.指出模态对话框和非模态对话椎的区别,并构造一个模态对话框的实例(不需要在对话框中加蜕控件,假设父窗口为InainFrame)(5分)非模态对话框关闭时调用dispose。方法,它将林放所有与财话框相关的系统资源,模态对话框不是用构造器Dia1.og(FrameparentWindow,Stringti1.1.e,Boo1.eanmode)Dia1.og(ParcmWind<>w.,模态对话框二true)13»指出abstractc1.ass和interfaceYf1.I,么区别?(6分)声明方法的存在而不去实现它的类被叫做抽象类(abstrac<c1.ass).不能创建abstract类的实例,然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例,不能行抽象构造的数或抽象静态方法.Abstract类的子类必须实现父类中的所有的抽象方法,否则子类也必须是抽软类.在接口中,所有方法都是抽纵的,接口中的所有方法都是抽象的.接I只可以定义staticfina1.成员变量,接口的实现与子类相似,除了该实现类不能从接口定义中继承行为.当类实现特殊接口时,它定义(即符程序体给予)所有这种接口的方法.然后,它可以在实现了该接口的类的任:何对望上调用接【1的方法.由于有抽象类,它允许使用接口名作为引用变业的类型,通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,insuinceuf运算符可以用来决定某对象的类是否实现了接口.14、下面两条语甸有何区别,采用哪中更好?(5分)Boo1.eanf1.ag=newBoo1.eanifa1.se);Boo1.eanf1.ag=BOO1.Can.FA1.SE:答:第一句是通过创建一个新的BoO1.Can类型的实例并初始化值为fa1.se并献给f1.ag.第二句则是通过类名直接访问已定义好的静态的BOO1.ean类型的常属FA1.SE并赋给Aago采用第二句比较好,因为可以节约内存资源,提高效率。15、构造器COnStrUCu>r是否可被OvCrridc?是否可被OVCr1.Oad?OVCr1.CadHIOVCnidC的区别?(5分)构造潺Constructor是不可被。VerridC区别:方法的重写OVerriding和重载Over1.oading是Java多态性的不同表现“重写Overriding是父类与子类之间多态性的一种表现,理段OYer1.oading是一个类中多态性的种表现,如果在子类中定义某方法与其父灵有相同的名称和多数,我们说该方法被虫写(Overriding).子类的对象使用这个方法时,将调用子类中的定义,而它而言.父类中的定义如同被“屏蔽”了.如果在一个类中定义了多个同名的方法.它们或有不同的参数个数或有不同的参数类型,则称为方法的IIUii(Over1.oading).Over1.oaded的方法是可以改变返I可伯的类里。16.Vector和Array1.ist的区别?(4分)Array1.ist和Vector主要从二方面来说.一.同步性:VCCsr是线程安全的,也就是说是同步的.而Army1.iSt是线程序不安全的.不是同步的:数据增长:当需要增长时.Vsior默认增长为原来一培,而Array1.iSt却是原来的半17、简述StringTokcnizcr的功能(3分)stringtokcnizcr类允许应用程序将字符半分解为标记.IOkCniZatiOn方法比StrcamTokenizer类所使用的方法更简单.StringTokenizer方法不区分标识符、数和带引号的字符中,它们也不识别并跳过注格StringTokenizer是出于兼养性的原因而皴保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用String的sp1.it方法18、线程探作中SIeeP