閱讀543 返回首頁    go 京東網上商城


華為JAVA麵試題及詳解

今晚強哥說我要多寫代碼,基礎很重要,為了長遠起見,我就開始寫一些麵試題的代碼。


第一題

 

package com.zzk.test;

public class Test {
	public static void main(String[] args) {
		String str="1234";
		changeStr(str);
		System.out.println(str);
	}
	
	public static void changeStr(String str) {
		str="change yes or not?";
	}
}

1234

不會改變

分析:

這個主要涉及到String類型變量的不變性,private final char value[];String類中保存值得成員是這樣定義的,所以在類存堆中new出一個String對象後該對象不能再改變。
  主函數中的str與changestr(String str)中的str是兩個不同的引用,當調用函數時,把主函數中str引用指向的對象賦值給changestr(String str)中的str,即是changestr(String str)中str與主函數中的str指向同一個String對象,當函數中給str賦值是,由於String類型變量的不變性所以不是去改變"1234" (String str = "1234";)這個對象而是去創建另一個新的對象“welcome”(str = "welcome";),而changestr(String str)中的str這個引用指向它,而不是主函數中的str指向它,所以會出現這樣的情況。
  對於String類型變量的賦值,遵循下麵的規則,java中有String pool(我估計是由於String對象的不變性,所以java中有String pool)。
  java中有兩種賦值方式,一種采用字麵值方式的賦值,String s = "aaa"; 查找String pool中是否存在“aaa”這個對象,如果不存在,則在String pool 中創建一個"aaa"對象,然後將String pool中這個對象的地址返回給s這個引用,這樣s會指向String pool 中"aaa"這個對象。如果String pool中已經有這個“aaa”對象時java虛擬機不會創建新的對象,而是將這個對象的地址直接返回。
  另一種方式是String s = new String("aaa"); 首先在String pool 中查找有沒有這個對象,如果已經有了,則不再String pool中創建了,而是在堆中創建該對象,然後返回堆中該對象的地址。如果沒有,則在String pool中創建該對象,並且在堆中也創建該對象,最後返回堆中該對象的地址給s。


改變可以這樣改

package com.zzk.test;

public class Test {
	public static void main(String[] args) {
		String str="1234";
		str=changeStr(str);
		System.out.println(str);
	}
	
	public static String changeStr(String str) {
		str="change?";
		return str;
		
	}
}


輸出:

change?

 

 第二題


package com.zzk.test;

public class Test {
	static boolean foo(char c) {
		System.out.print(c);
		return true;
	}
	
	public static void main(String[] args) {
		int i=0;
		
		for(foo('A');foo('B')&&(i<2);foo('C')) {
			i++;
			foo('D');
		}
	}
}

輸出:

猜測:ABDCBDCB

 對了


分析:

FOR循環裏麵講究的條件要為真,與你的判斷式是什麼沒有關係
就像這裏,雖然是打印的字母,但是卻不是false,所以可以執行
第一次進行循環:
foo('A')打印字母A,(注:這裏不是false條件就默認為true條件)
foo('B')打印字母Bi=0,比較(i < 2),條件為true,進行循環體,foo('D')打印D
foo('C')打印字母C
第二次循環:
foo('B')打印Bi=1,比較(i < 2)true,進行循環體,foo('D')打印D
foo('C')打印字母C
第三次循環:
foo('B')打印字母Bi=2,比較(i < 2)false,退出循環,得結果

第三題

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


此題考查的是繼承重寫問題.
當一個子類重寫父類的方法時,重寫的方法的訪問權限
必須大於等於父類的訪問權限.
在此題中父類中的方法訪問權限為protected,子類隻能是
protected或public.這時A是符合題意的.
由於選項C的形參和父類的不一樣,沒有重寫的效果,所以
在子類出現也是沒問題的.

第四題


1. public class Outer{
2. public void someOuterMethod() {
3. // Line 3
4. }
5. public class Inner{}
6. public static void main( String[]argv ) {
7. Outer o = new Outer();
8. // Line 8
9. }
10. }
Which instantiates an instance of Inner?
A. new Inner(); // At line 3
B. new Inner(); // At line 8
C. new o.Inner(); // At line 8
D. new Outer.Inner(); // At line 8//new Outer().new Inner()

選A

內部類的實例化可以在普通方法裏,也可以在static方法裏實例化.

package com.test.a;

public class Outer
{
    Inner i 
= new Outer.Inner();
    
    
public void method()
    
{
        
new Inner();
    }

    
    
public class Inner{
    }

    
public static void main(String[] args)
    
{
        Outer o 
= new Outer();
        Inner i 
=  o.new Inner();
    }

    
    
static void a()
    
{
        Outer o 
= new Outer();
        Inner i 
= o.new Inner();
    }


}




第五題


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.

 

答案:B


請看J2EE API關於此方法的說明:

Encodes the specified URL for use in the sendRedirect method or, if encoding is not needed, returns the URL unchanged. The implementation of this method includes the logic to determine whether the session ID needs to be encoded in the URL. Because the rules for making this determination can differ from those used to decide whether to encode a normal link, this method is separated from the encodeURL method. 
All URLs sent to the HttpServletResponse.sendRedirect method should be run through 
this method. Otherwise, URL rewriting cannot be used with browsers which do not support cookies. 

 

第六題

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"/>

此題考查的是JavaBean在jsp中的取值方式.
其中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 TagsHTML tagsLogic TagsNested Tags 以及Template Tags等。
  
  3)控製器(Controller)  
  在struts中,基本的控製器組件是ActionServlet類中的實例servelt,實際使用的servlet在配置文件中由一組映射(由ActionMapping類進行描述)進行定義。對於業務邏輯的操作則主要由ActionActionMappingActionForward這幾個組件協調完成的,其中Action扮演了真正的業務邏輯的實現者,ActionMappingActionForward則指定了不同業務邏輯或流程的運行方向。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、exception

 

 

表結構: 

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_applyno 
2、    查詢同一個身份證號碼有兩條以上記錄的身份證號碼及記錄個數 

3、    將身份證號碼為440401430103082的記錄在兩個表中的申請狀態均改為07 
Update g_cardapply. g_state=’07’, g_cardapplydetail .g_state 
4、    刪除g_cardapplydetail表中所有姓李的記錄 


 

 
 create database mianshi
 
use mianshi;
 
create table g_cardapply(
 g_applyno varchar(8),
 g_applydate bigint,
 g_state varchar(20)
)
go
create 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 on
a1.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 on
g_d.g_applyno=g_c.g_applyno and g_idcard='123';更新第一個表的g_state   
 
update g_cardapplydetail set g_state=603 where g_idcard='123';


 

最後更新:2017-04-02 06:52:09

  上一篇:go JAVA IO操作總結——節點流和處理流
  下一篇:go android連接sql2008