您好,欢迎访问三七文档
华为的JAVA面试题(后记:没有想到华为的面试题就是非同一般,很多题不是一眼就能够看得出来,至少对我这种鸟来说是这样。对我个人来说,看看这样的题,可能比看《ThinkInJava》都还要好,因为这里面有很多的东西,都是我们平时没有太在意,或者是只是懂一点皮毛而已,通过做一下这样的练习,把自己不知道、不熟悉的知识点,利用这个机会好好的巩固一下。这些答案是我自己做的,有一些是从网上来的,有一部是自己做的,并且还有一部份没有做完,我不敢保证都对,所以请你在引用的时候,务必通过自己核对一下。当然,我既然能够把这些答案放在这里,那说明我肯定是自己检验了一遍的,也不是那么恐怖的)QUESTIONNO:1publicclassTest1{publicstaticvoidchangeStr(Stringstr){str=welcome;}publicstaticvoidmain(String[]args){Stringstr=1234;changeStr(str);System.out.println(str);}}//输出结果:1234//java是值传递,这样传参不会改变参数的值QUESTIONNO:2publicclassTest2{staticbooleanfoo(charc){System.out.print(c);returntrue;}publicstaticvoidmain(String[]argv){inti=0;//for(65;88&&(i2);67)for(foo('A');foo('B')&&(i2);foo('C')){i++;foo('D');}}}/*Whatistheresult?A.ABDCBDCBB.ABCDABCDC.Compilationfails.D.Anexceptionisthrownatruntime.//输出结果是:ABDCBDCB分析:FOR循环里面讲究的条件要为真,与你的判断式是什么没有关系就像这里,虽然是打印的字母,但是却不是false,所以可以执行第一次进行循环:foo('A')打印字母A,(注:这里不是false条件就默认为true条件)foo('B')打印字母B,i=0,比较(i2),条件为true,进行循环体,foo('D')打印Dfoo('C')打印字母C第二次循环:foo('B')打印B,i=1,比较(i2)为true,进行循环体,foo('D')打印Dfoo('C')打印字母C第三次循环:foo('B')打印字母B,i=2,比较(i2)为false,退出循环,得结果*/QUESTIONNO:31.classA{2.protectedintmethod1(inta,intb){return0;}3.}WhichtwoarevalidinaclassthatextendsclassA?(Choosetwo)A.publicintmethod1(inta,intb){return0;}B.privateintmethod1(inta,intb){return0;}C.privateintmethod1(inta,longb){return0;}D.publicshortmethod1(inta,intb){return0;}E.staticprotectedintmethod1(inta,intb){return0;}publicclassBextendsA{/***@paramargs*///cannotreducethevisibilityoftheinheritedmethodfromA//即不能够使从类A中继续来的方法的可见性降低//privateintmethod1(inta,intb){return0;}//ThisstaticmethodcannothidetheinstancemethodfromA//静态方法不能够隐藏继承于A的实例//staticprotectedintmethod1(inta,intb){return0;}//返回类型与A中的该方法不一致//publicshortmethod1(inta,intb){return0;}/***总结:类的继承中,如果要想重载父类的方法,必须要和父类中的返回类型、可见性等等都要操作一致*否则,程序就会报错。一定遵守子类要遵从于父类的原则*而我选择的答案居然是privateintmethod1和staticprotectedint*我选择第一个的错误理由是:因为原来为保护的,如果我这里设为public,那么就扩展了其原来的可见性*本来原来就是对包外不可见的,现在变成对包外可见的了,所以就选择的是private*选择第二个的错误理由是:都是保护的,这里只是变成了静态的而已*///这里是写了一个重载方法,因为参数类型不一致,不会报错privateintmethod1(inta,longb){return0;}//可见性可以增大,但是不能够缩小,正确publicintmethod1(inta,intb){return0;}publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstub}}QUESTIONNO:41.publicclassOuter{2.publicvoidsomeOuterMethod(){3.//Line34.}5.publicclassInner{}6.publicstaticvoidmain(String[]argv){7.Outero=newOuter();8.//Line89.}10.}WhichinstantiatesaninstanceofInner?A.newInner();//Atline3B.newInner();//Atline8C.newo.Inner();//Atline8D.newOuter.Inner();//Atline8//newOuter().newInner()答案如下:publicclassOuter{publicvoidsomeOuterMethod(){//Line3newInner();//放在这里不出错}publicclassInner{}publicstaticvoidmain(String[]argv){Outero=newOuter();//Line8//o不能够被解释成为一种类型,出错//newo.Inner();/***下面两种用法,都报下面的错误:*NoenclosinginstanceoftypeOuterisaccessible.*Mustqualifytheallocationwithanenclosinginstance*oftypeOuter(e.g.x.newA()wherexisaninstanceofOuter)*///newOuter.Inner();//newInner();}}QUESTIONNO:5WhichmethodisusedbyaservlettoplaceitssessionIDinaURLthatiswrittentotheservlet’sresponseoutputstream?(译:那个方法是servlet用于将其sessionID入在一个URL中,该URL写入servlet的响应输出流)A.TheencodeURLmethodoftheHttpServletRequestinterface.B.TheencodeURLmethodoftheHttpServletResponseinterface.C.TherewriteURLmethodoftheHttpServletRequestinterface.D.TherewriteURLmethodoftheHttpServletResponseinterface.QUESTIONNO:6Whichtwoareequivalent?(Choosetwo)A.%=YoshiBean.size%B.%=YoshiBean.getSize()%C.%=YoshiBean.getProperty(size)%D.jsp:getPropertyid=YoshiBeanparam=size/E.jsp:getPropertyname=YoshiBeanparam=size/F.jsp:getPropertyid=YoshiBeanproperty=size/G.jsp:getPropertyname=YoshiBeanproperty=size/QUESTIONNO:7Whichofthefollowingstatementsregardingthelifecycleofasessionbeanarecorrect?1.java.lang.IllegalStateExceptionisthrownifSessionContext.getEJBObject()isinvokedwhenastatefulsessionbeaninstanceispassivated.2.SessionContext.getRollbackOnly()doesnotthrowanexceptionwhenasessionbeanwithbean-managedtransactiondemarcationisactivated.3.AnexceptionisnotthrownwhenSessionContext.getUserTransaction()iscalledintheafterBeginmethodofabeanwithcontainer-managedtransactions.4.JNDIaccesstojava:comp/envispermittedinalltheSessionSynchronizationmethodsofastatefulsessionbeanwithcontainer-managedtransactiondemarcation.5.AccessingresourcemanagersintheSessionSynchronization.afterBeginmethodofastatefulsessionbeanwithbean-managedtransactiondoesnotthrowanexception.第二部分:概念题1.描述Struts体系结构?对应各个部分的开发工作主要包括哪些?Struts是MVC的一种实现,它将Servlet和JSP标记(属于J2EE规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的体系结构与工作原理如下图2所示:1)模型(Model)在Struts的体系结构中,模型分为两个部分:系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组ActinformBean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。2)视图(View)视图主要由JSP建立,struts包含扩展自定义标签库(TagLib),可以简化创建完全国际化用户界面的过程。目前的标签库包括:BeanTags、HTMLtags、LogicTags、NestedTags以及TemplateTags等。3)控制器(Controller)在struts中,基本的控制器组件是ActionServlet类
本文标题:java华为面试题
链接地址:https://www.777doc.com/doc-2878528 .html