华为java面试题

来源:互联网 发布:licecap mac 官方 编辑:程序博客网 时间:2024/05/03 15:51
华为面试题QUESTION NO:1publicclass Test1 {    public static void changeStr(String str){        str="welcome";    }    publicstaticvoid main(String[] args) {         String str="1234";        changeStr(str);        System.out.println(str);    }}//输出结果:1234QUESTION NO:2public class Test2 {    static boolean foo(char c) {       System.out.print(c);       returntrue;    }    public static void main(String[] argv) {       int i = 0;       //for(65;88&&(i<2);67)       for (foo('A'); foo('B') && (i < 2); foo('C')) {           i++;           foo('D');       }    }}What is the result?A. ABDCBDCBB. ABCDABCDC. Compilation fails.D. An exception is thrown at runtime.//输出结果是:ABDCBDCB第一次进行循环:foo('A')打印字母A,(注:这里不是false条件就默认为true条件)foo('B')打印字母B,i=0,比较(i < 2),条件为true,进行循环体,foo('D')打印D//注意:&&还具有短路的功能foo('C')打印字母C第二次循环:foo('B')打印B,i=1,比较(i < 2)为true,进行循环体,foo('D')打印Dfoo('C')打印字母C第三次循环:foo('B')打印字母B,i=2,比较(i < 2)为false,退出循环,得结果QUESTION NO: 3 1. class A {2. protected int method1(int a, int b) { return 0; }3. }Which two are valid in a class that extends class A? (Choose two)A. public int method1(int a, int b) { return 0; }B. private int method1(int a, int b) { return 0; }C. private int method1(int a, long b) { return 0; }D. public short method1(int a, int b) { return 0; }E. static protected int method1(int a, int b) { return 0; }//答案 A、C//这里是写了一个重载方法,因为参数类型不一致,不会报错privateint method1(int a, long b) { return 0; }   //可见性可以增大,但是不能够缩小,正确publicint method1(int a, int b) { return 0; }//can not reduce the visibility of the inherited method from A//即不能够使从类A中继续来的方法的可见性降低  //private int method1(int a, int b) { return 0; }   //This static method cannot hide the instance method from A//静态方法不能够隐藏继承于A的实例//static protected int method1(int a, int b) { return 0; }   //返回类型与A中的该方法不一致//public short method1(int a, int b) { return 0; }QUESTION NO: 4 1. public class Outer{2. public void someOuterMethod() {3. // Line 34. }5. public class Inner{}6. public static void main( String[]argv ) {7. Outer o = new Outer();8. // Line 89. }10. } Which instantiates an instance of Inner?A. new Inner(); // At line 3B. new Inner(); // At line 8C. new o.Inner(); // At line 8D. new Outer.Inner(); // At line 8//new Outer().new Inner()是正确的//答案:A答案如下:public class Outer {    public void someOuterMethod() {       // Line 3       new Inner();//放在这里不出错//此处为什么不用创建外部类实例就能创建内部类实例//因为这相当于是外部类的成员函数,隐含了this    }    public class Inner {    }     public static void main(String[] argv) {       Outer o= new Outer();       // Line 8       //o不能够被解释成为一种类型,出错       //new o.Inner();//在静态方法中为什么要先创建外部类实例才能创建内部类的实例?//在定义的时候采用的是非static 的//所以在static方法中必须要新建一个实例再创建对应实例的内部类       /**        *下面两种用法,都报下面的错误:        *NoenclosinginstanceoftypeOuterisaccessible.        *Mustqualifytheallocationwithanenclosinginstance        *oftypeOuter(e.g.x.newA()wherexisaninstanceofOuter)        */          //new Outer.Inner();       //new Inner();          }}QUESTION NO: 5 Which method is used by a servlet to place its session ID in a URL that is written to the servlet’s response output stream?(译:那个方法是servlet用于将其session ID入在一个URL中,该URL写入servlet的响应输出流)A. The encodeURL method of the HttpServletRequest interface.B. The encodeURL method of the HttpServletResponse interface.C. The rewriteURL method of the HttpServletRequest interface.D. The rewriteURL method of the HttpServletResponse interface.//答案:BJava Servlet API 中引用 Session 机制来追踪客户的状态。Servlet API 中定义了 javax.servlet.http.HttpSession 接口,Servlet 容器必须实现这个接口。当一个 Session 开始时,Servlet 容器将创建一个 HttpSession 对象,Servlet 容器为 HttpSession 分配一个唯一标识符,称为 Session ID。Servlet 容器将 Session ID 作为 Cookie 保存在客户的浏览器中。每次客户发出 HTTP 请求时,Servlet 容器可以从 HttpRequest 对象中读取 Session ID,然后根据 Session ID 找到相应的 HttpSession 对象,从而获取客户的状态信息。     当客户端浏览器中禁止 Cookie,Servlet 容器无法从客户端浏览器中取得作为 Cookie 的 Session ID,也就无法跟踪客户状态。     Java Servlet API 中提出了跟踪 Session 的另一种机制,如果客户端浏览器不支持 Cookie,Servlet 容器可以重写客户请求的 URL,把 Session ID 添加到 URL 信息中。     HttpServletResponse 接口提供了重写 URL 的方法:public java.lang.String encodeURL(java.lang.String url)    该方法的实现机制为:     ● 先判断当前的 Web 组件是否启用 Session,如果没有启用 Session,直接返回参数 url。     ● 再判断客户端浏览器是否支持 Cookie,如果支持 Cookie,直接返回参数 url;如果不支持 Cookie,就在参数 url 中加入 Session ID 信息,然后返回修改后的 url。     我们可以对网页中的链接稍作修改,解决以上问题:     修改前:  <a href=“maillogin.jsp“>    修改后:         <a href=“<%=response.encodeURL(“maillogin.jsp“)%>“> QUESTION NO: 6 Which two are equivalent? (Choose two)A. <%= YoshiBean.size%>B. <%= YoshiBean.getSize()%>C. <%= YoshiBean.getProperty("size")%>D. <jsp:getProperty id="YoshiBean" param="size"/>E. <jsp:getProperty name="YoshiBean" param="size"/>F. <jsp:getProperty id="YoshiBean" property="size"/>G. <jsp:getProperty name="YoshiBean" property="size"/>//答案:C、G第二部分:概念题 1.               描述Struts体系结构?对应各个部分的开发工作主要包括哪些?Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的体系结构与工作原理如下图2所示:    1)模型(Model)    在Struts的体系结构中,模型分为两个部分:系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组Actinform Bean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。    2)视图(View)    视图主要由JSP建立,struts包含扩展自定义标签库(TagLib),可以简化创建完全国际化用户界面的过程。目前的标签库包括:Bean Tags、HTML tags、Logic Tags、Nested Tags 以及Template Tags等。    3)控制器(Controller)    在struts中,基本的控制器组件是ActionServlet类中的实例servelt,实际使用的servlet在配置文件中由一组映射(由ActionMapping类进行描述)进行定义。对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成的,其中Action扮演了真正的业务逻辑的实现者,ActionMapping与ActionForward则指定了不同业务逻辑或流程的运行方向。struts-config.xml 文件配置控制器。 2.    XML包括哪些解释技术,区别是什么?包括:DOM(Document Object Modal)文档对象模型,SAX(Simple API for XML)。DOM是一次性将整个文档读入内存操作,如果是文档比较小,读入内存,可以极大提高操作的速度,但如果文档比较大,那么这个就吃力了。所以此时SAX应用而生,它不是一次性的将整个文档读入内存,这对于处理大型文档就比较就力了 3.    JSP有哪些内置对象和动作?它们的作用分别是什么?JSP共有以下9种基本内置组件:request 用户端请求,此请求会包含来自GET/POST请求的参数response 网页传回用户端的回应pageContext 网页的属性是在这里管理session 与请求有关的会话期application servlet 正在执行的内容out 用来传送回应的输出config servlet的构架部件page JSP网页本身exception 针对错误网页,未捕捉的例外常用的组件:request、response、out、session、application、exception4、SQL问答题 SELECT * FROM TABLE 和 SELECT * FROM TABLE WHERE NAME LIKE '%%' AND ADDR LIKE '%%' AND (1_ADDR LIKE '%%' OR 2_ADDR LIKE '%%' OR 3_ADDR LIKE '%%' OR 4_ADDR LIKE '%%' ) 的检索结果为何不同?答:    我做了一下测试,在ACCESS里面,用它的查询,这样会和在MYSQL得到不同的结果,各位不妨试试,我昨天就是在ACCESS里用SQL查询,得到的结果为空,就是没有记录;而在MYSQL里面,条件为空的记录不显示,其它的都显示。  5、SQL问答题 表结构: 1、    表名:g_cardapply字段(字段名/类型/长度):g_applyno        varchar   8;//申请单号(关键字)g_applydate     bigint     8;//申请日期g_state        varchar     2;//申请状态 2、    表名:g_cardapplydetail字段(字段名/类型/长度):g_applyno        varchar     8;//申请单号(关键字)g_name        varchar     30;//申请人姓名g_idcard        varchar     18;//申请人身份证号g_state        varchar     2;//申请状态其中,两个表的关联字段为申请单号。 题目:1、    查询身份证号码为440401430103082的申请日期Select g_cardapply.g_ applydate from g_cardapply, g_cardapplydetail where g_cardapplydetail.g_idcard=’’ and g_cardapply.g_applyno=g_cardapplydetail.g_applyno2、    查询同一个身份证号码有两条以上记录的身份证号码及记录个数 3、    将身份证号码为440401430103082的记录在两个表中的申请状态均改为07Update g_cardapply. g_state=’07’, g_cardapplydetail .g_state4、    删除g_cardapplydetail表中所有姓李的记录 ------------------------******测试******-----------------  create database mianshi use mianshi; create table g_cardapply( g_applyno varchar(8), g_applydate bigint, g_state varchar(20))gocreate table g_cardapplydetail( g_applyno varchar(8), g_name varchar(30), g_idcard varchar(18), g_state varchar(20)) 1、select a1.g_applydate from g_cardapply as a1 inner join g_cardapplydetail a2 ona1.g_applyno=a2.g_applyno where a2.g_idcard="123" ; 2、select g_idcard,count(g_idcard) from g_cardapplydetail group by g_idcard having count(g_idcard)>=2; 3、update g_cardapply set g_state=603 from g_cardapply as g_d inner join g_cardapplydetail as g_c ong_d.g_applyno=g_c.g_applyno and g_idcard='123';更新第一个表的g_state    update g_cardapplydetail set g_state=603 where g_idcard='123';

0 0