华为JAVA笔试题.docx
- 文档编号:9401251
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:17
- 大小:19.95KB
华为JAVA笔试题.docx
《华为JAVA笔试题.docx》由会员分享,可在线阅读,更多相关《华为JAVA笔试题.docx(17页珍藏版)》请在冰豆网上搜索。
华为JAVA笔试题
华为公司java笔试题
第一部分:
选择题
QUESTIONNO:
1
1、publicclassTest{
publicstaticvoidchangeStr(Stringstr){
str="welcome";
}
publicstaticvoidmain(String[]args){
Stringstr="1234";
changeStr(str);
System.out.println(str);
}
}
Pleasewritetheoutputresult:
QUESTIONNO:
2
1.publicclassTest{
2.staticbooleanfoo(charc){
3.System.out.print(c);
4.returntrue;
5.}
6.publicstaticvoidmain(String[]argv){
7.inti=0;
8.for(foo('A');foo('B')&&(i<2);foo('C')){
9.i++;
10.foo('D');
12.}
13.}
14.}
Whatistheresult?
A.ABDCBDCB
B.ABCDABCD
C.Compilationfails.
D.Anexceptionisthrownatruntime.
QUESTIONNO:
3
1.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;}
QUESTIONNO:
4
1.publicclassOuter{
2.publicvoidsomeOuterMethod(){
3.//Line3
4.}
5.publicclassInner{}
6.publicstaticvoidmain(String[]argv){
7.Outero=newOuter();
8.//Line8
9.}
10.}
WhichinstantiatesaninstanceofInner?
A.newInner();//Atline3
B.newInner();//Atline8
C.newo.Inner();//Atline8
D.newOuter.Inner();//Atline8//newOuter().newInner()
QUESTIONNO:
5
WhichmethodisusedbyaservlettoplaceitssessionIDinaURLthatiswrittentotheservlet’sresponseoutputstream?
A.TheencodeURLmethodoftheHttpServletRequestinterface.
B.TheencodeURLmethodoftheHttpServletResponseinterface.
C.TherewriteURLmethodoftheHttpServletRequestinterface.
D.TherewriteURLmethodoftheHttpServletResponseinterface.
QUESTIONNO:
6
Whichtwoareequivalent?
(Choosetwo)
A.<%=YoshiBean.size%>
B.<%=YoshiBean.getSize()%>
C.<%=YoshiBean.getProperty("size")%>
D. getPropertyid="YoshiBean"param="size"/> E. getPropertyname="YoshiBean"param="size"/> F. getPropertyid="YoshiBean"property="size"/> G. getPropertyname="YoshiBean"property="size"/> QUESTIONNO: 7 Whichofthefollowingstatementsregardingthelifecycleofasessionbeanarecorrect? 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体系结构? 对应各个部分的开发工作主要包括哪些? 2.XML包括哪些解释技术,区别是什么? 3.JSP有哪些内置对象和动作? 它们的作用分别是什么? 4、SQL问答题 SELECT*FROMTABLE 和 SELECT*FROMTABLE WHERENAMELIKE'%%'ANDADDRLIKE'%%' AND(1_ADDRLIKE'%%'OR2_ADDRLIKE'%%' OR3_ADDRLIKE'%%'OR4_ADDRLIKE'%%') 的检索结果为何不同? 5、SQL问答题 表结构: 1、表名: g_cardapply 字段(字段名/类型/长度): g_applynovarchar8;//申请单号(关键字) g_applydatebigint8;//申请日期 g_statevarchar2;//申请状态 2、表名: g_cardapplydetail 字段(字段名/类型/长度): g_applynovarchar8;//申请单号(关键字) g_namevarchar30;//申请人姓名 g_idcardvarchar18;//申请人身份证号 g_statevarchar2;//申请状态 其中,两个表的关联字段为申请单号。 题目: 1、查询身份证号码为440401*********的申请日期 2、查询同一个身份证号码有两条以上记录的身份证号码及记录个数 3、将身份证号码为440401*********的记录在两个表中的申请状态均改为07 4、删除g_cardapplydetail表中所有姓李的记录 publicclassTest{ publicstaticvoidchangeStr(Stringstr){ str="welcome"; } publicstaticvoidmain(String[]args){ Stringstr="1234"; changeStr(str); System.out.println(str); } } 这一题我想他主要考查static这个关键字,changestr是个静态的方法(类方法)那么str应该也是一个静态成员,所有的对象都是公用这样的一个成员,那么对他的修改应该是可以保持的。 而为什么最后的结果却是初始值1234,我有点迷惑 终于明白了: 按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本。 因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。 按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本。 因此,如果函数修改了该参数,调用代码中的原始值也随之改变。 不管是在c/c++中还是在java函数调用都是传值调用,. 当参数是对象的时候,传递的是对象的引用,这个和c/c++传递指针是一个道理,在函数中改变引用本身,不会改变引用所指向的对象,而在QUESTIONNO: 1中只是改变了引用,所以在main函数中输出还是原来的那个值: 1234 参数是对象时传的是地址。 但str="welcome";相当于str=newString("welcome");,所以原对象没变。 可以参考以下代码: publicclassTest{ publicintss=999; publicTest(ints){ ss=s; } publicstaticvoidchangeStr(Testt){ t.ss=888; } publicstaticvoidmain(String[]args){ Testt=newTest(999); changeStr(t); System.out.println(t.ss); } } publicclassTest{ publicintss=999; publicTest(ints){ ss=s; } publicstaticvoidchangeStr(Testt){ t=newTest(888); } publicstaticvoidmain(String[]args){ Testt=newTest(999); changeStr(t); System.out.println(t.ss); } } QUESTIONNO: 2 1.publicclassTest{ 2.staticbooleanfoo(charc){ 3.System.out.print(c); 4.returntrue; 5.} 6.publicstaticvoidmain(String[]argv){ 7.inti=0; 8.for(foo('A');foo('B')&&(i<2);foo('C')){ 9.i++; 10.foo('D'); 12.} 13.} 14.} Whatistheresult? A.ABDCBDCB B.ABCDABCD C.Compilationfails. D.Anexceptionisthrownatruntime 做一下这个吧! ! 第一题终于清楚了。 对象是传引用的。 但是下面还是有区别 publicclasstest6{ publicintss=999; publictest6(ints){ ss=s; } publicstaticvoidchangeStr(test6t){ t.ss=888; } publicstaticvoidchange(test6t){ t=newtest6(222); } publicstaticvoidmain(String[]args){ test6t=newtest6(999); changeStr(t); System.out.println(t.ss); change(t); System.out.println(t.ss); } } importjavax.swing.JOptionPane; publicclassTest{ publicvoidchangeStr(Stringstr){ str="welcome"; } publicvoidmain(String[]args){ Stringstr="1234"; str="welcome"; //changeStr(str); JOptionPane.showMessageDialog(null,str); } } 如果这样做的话结果是welcome 在我我想说的是在C语言以后所有的参数传递都是值传递,问题是传的值是是什么,而没有什么引用传递之类的东西。 关于输出为1234而不是welcome还有待进一步分析。 我现在去上课了,回来再和大家细说 对第一题的详细分析: Java中函数参数传递是值传递,在C语言以后的都是这样的,关键是传进来的值是什么(这一点我在上面说了到一次)。 ①如果参数是基础类型,如int型的,则传进来的是int型变量的值,这个值放在堆里。 举个例子: voidfun(inti){}; inti=5; fun(i); 传进fun函数的是5; ②如果参数是引用类型。 如String型的,则传进来的是String型变量的值,这个值放在栈里,此值是该变量将要指向的对象的地址。 举个例子: voidfun(Stringstr0){}; Stringstr="Hello"; fun(str); fun()方法调用时第一件事就是,做了一个赋值操作: str0=str; 这个操作的结果就是将str变量的值传给str0变量的值,也就是使得str0也指向str所指向的对象。 对str0所指向的对象做修改操作,也就是对str所指的对象做修改。 有了上面的两点,我想做第一个题目一定是没什么问题的了: 说明: 为了方便分析我把changeStr()方法中的参数名改成了str0。 改动后的代码如下: 1.publicclassTest{ publicstaticvoidchangeStr(Stringstr0){ str0="welcome"; } publicstaticvoidmain(String[]args){ Stringstr="1234"; changeStr(str); System.out.println(str); } } 哎,第一题没那么复杂,都说的离谱了,具体讨论请见TIJ的附录一关于别名和引用那一章. 我们不争论JAVA到底是传值还是传引用,因为两者某种意义上都是正确的.传值的认为传递引用本身是传值行为,这没错,可我们一般把reference当成了对象,所以说成传引用也说得过去,概念就不多说了. 为什么str在changeStr之后没变? 这是因为JAVA对所有的外覆类性(基本类型的对应类)是采用所谓的恒常对象(唯读对象,read-only),这些外覆类中的任何函数行为的调用都不会改变原对象,而是产生一个新对象,这就是为什么我们在需要动态增加String时要用StringBuffer的原因.可对于我们自己所创建的对象,并没有这个"恒常"的特性,所以在这里有个"别名"现象,也就是几个引用同时指向一个对象,任何一个引用对对象的修改都将影响到其他. 在这个例子中,changeStr函数的行为其实产生了一个新的对象,函数内的str是局部性的,它指向新的对象,可对原对象没有产生任何影响. 不知道我的解释清楚了,更具体讨论请见ThinkinginJava 对第一题的详细分析: Java中函数参数传递是值传递,在C语言以后的都是这样的,关键是传进来的值是什么(这一点我在上面说了到一次)。 ①如果参数是基础类型,如int型的,则传进来的是int型变量的值,这个值放在堆里。 举个例子: voidfun(inti){}; inti=5; fun(i); 传进fun函数的是5; ②如果参数是引用类型。 如String型的,则传进来的是String型变量的值,这个值放在栈里,此值是该变量将要指向的对象的地址。 举个例子: voidfun(Stringstr0){}; Stringstr="Hello"; fun(str); fun()方法调用时第一件事就是,做了一个赋值操作: str0=str; 这个操作的结果就是将str变量的值传给str0变量的值,也就是使得str0也指向str所指向的对象。 对str0所指向的对象做修改操作,也就是对str所指的对象做修改。 有了上面的两点,我想做第一个题目一定是没什么问题的了: 说明: 为了方便分析我把changeStr()方法中的参数名改成了str0。 改动后的代码如下: 1.publicclassTest{ 2.publicstaticvoidchangeStr(Stringstr0){ 3.str0="welcome"; 4.} 5.publicstaticvoidmain(String[]args){ 6.Stringstr="1234"; 7.changeStr(str); 8.System.out.println(str); 9.} 10.} 第7行代码执行过程如下: 将str的值赋给str0,使得str0和str指向同一个String类对象1234 而在changeStr()方法中第3行代码执行的结果是将str0值(也就是对象的地址)做了修改,str0的值为String类对象welcome的地址,这样一来,使得str和str0所指向的对象不再是同一个对象了,而且str的值并没有改变,也就是说str还是指向String类对象1234的。 综上所述,程序最终的结果一定是1234。 补充: ziyongkun在2006-05-1010: 08: 00发的贴子里说的不是很对,并不是一个副本的问题,它们会指向同一个对象的。 QUESTIONNO: 2 1.publicclassTest{ 2.staticbooleanfoo(charc){ 3.System.out.print(c); 4.returntrue; 5.} 6.publicstaticvoidmain(String[]argv){ 7.inti=0; 8.for(foo('A');foo('B')&&(i<2);foo('C')){ 9.i++; 10.foo('D'); 12.} 13.} 14.} ======================================================================== 考察的是for语句的执行过程: for(1;2;3) 过程如下: 1; 2; 3; 2; . . . 当i<2时,便不再执行。 其实是基础&细心~~~~~~~ 4、SQL问答题 SELECT*FROMTABLE 和 SELECT*FROMTABLE WHERENAMELIKE'%%'ANDADDRLIKE'%%' AND(1_ADDRLIKE'%%'OR2_ADDRLIKE'%%' OR3_ADDRLIKE'%%'OR4_ADDRLIKE'%%') 的检索结果为何不同? ========================================================= 前者检索全部,后者有三种情况检索不出: NAME=null或ADDR=null或1_ADDRLIKE2_ADDR3_ADDR4_ADDR其一为null. 4、SQL问答题 SELECT*FROMTABLE 和 SELECT*FROMTABLE WHERENAMELIKE'%%'ANDADDRLIKE'%%' AND(1_ADDRLIKE'%%'OR2_ADDRLIKE'%%' OR3_ADDRLIKE'%%'OR4_ADDRLIKE'%%') 的检索结果为何不同? 答: 前者检索所有记录,后者只能检索出NAME和ADDR中非Null的记录。 5、SQL问答题 表结构: 1、表名: g_cardapply 字段(字段名/类型/长度): g_applynovarchar8;//申请单号(关键字) g_applydatebigint8;//申请日期 g_statevarchar2;//申请状态 2、表名: g_cardapplydetail 字段(字段名/类型/长度): g_applynovarc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华为 JAVA 笔试