Java面試筆試題及答案(3)- 簡答題
1. JSP和Servlet有哪些相同點和不同點,他們之間的聯絡是什麼?
JSP是Servlet技術的擴充套件,本質上是Servlet的簡易方式,更強調應用的外表表達。JSP編譯後是"類servlet"。Servlet和JSP最主要的不同點在於,Servlet的應用邏輯是在Java檔案中,並且完全從表示層中的HTML裡分離開來。而JSP的情況是Java和HTML可以組合成一個副檔名為.jsp的檔案。JSP側重於檢視,Servlet主要用於控制邏輯。
2. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一個整數表示式。因此傳遞給 switch 和 case 語句的引數應該是 int、 short、 char 或者 byte。long,string 都不能作用於swtich。
3. 如何利用ServletContext和ServletConfig物件獲得初始化引數
String psw = config.getInitParameter("psw");
ServletContext ss = config.getServletContext();
String ppp = ss.getInitParameter("name");
4. 如何用css約束一個層不可見?
<div style="display:none"> </div> -----表示不可見
<div style="display:block"> </div>------表示可見
5. 在表單中存在一組名稱為checkbox1的多選框,如何才能取得這些多選框內的值?
在頁面中用javaScript方式取值
<script>
function sss(){
var str = document.getElementsByName("checkbox1");
var checkValue = new Array();
for(var i=0;i<str.length;i++){
if(str[i].checked){
alert(str[i].value);
}
}
}
</script>
Function sss()
Var str=document.getElementsByName(“checkbox1”);
Var checkValue=new Array()
For(var i=0;i<str.length;i++){
If(str[i].checked){
Alert(str[i].value);
}
}
在Servlet中取值
String str[] = request.getParameterValues("checkbox1");
6. 說出資料連線池的工作機制是什麼?
J2EE伺服器啟動時會建立一定數量的池連線,並一直維持不少於此數目的池連線。客戶端程式需要連線時,池驅動程式會返回一個未使用的池連線並將其標記為忙。如果當前沒有空閒連線,池驅動程式就新建一定數量的連線,新建連線的數量由配置引數決定。當使用的池連線呼叫完成後,池驅動程式將此連線表記為空閒,其他呼叫就可以使用這個連線。
7. 多執行緒有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼?
多執行緒有兩種實現方法,分別是繼承Thread類與實現Runnable介面
同步的實現方面有兩種,分別是synchronized,wait與notify
8. 一個頁面在開啟時,需要處理一些事情(比如彈出一個廣告頁),需要定義視窗的什麼事件?
<script>
window.onload=function(){…}
</script>
或是
<body onload="">
9. HTML的Form和XFORM的區別
10. 描述forward和redirect的區別
forward是伺服器請求資源,伺服器直接訪問目標地址的URL,目標地址可以接收request 請求引數,然後把結果發給瀏覽器,瀏覽器根本不知道伺服器傳送的內容是從哪兒來的,所以它的位址列中還是原來的地址。
redirect就是服務端根據邏輯,傳送一個狀態碼,告訴瀏覽器重新去請求哪個地址,瀏覽器會重新進行請求,此時不能用request傳值,瀏覽器的位址列會變成新的地址
11. Static變數是什麼含義
static是靜態變數,就是變數值不隨函式執行結束而消失,下次呼叫同一函式時,上次所賦予的值仍存在。
12. 垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收記憶體嗎?有什麼辦法主動通知虛擬機器進行垃圾回收
對於GC來說,當程式設計師建立物件時,GC就開始監控這個物件的地址、大小以及使用情況。通常,GC採用有向圖的方式記錄和管理堆(heap)中的所有物件。通過這種方式確定哪些物件是"可達的",哪些物件是"不可達的"。當GC確定一些物件為"不可達"時,GC就有責任回收這些記憶體空間。可以。程式設計師可以手動執行System.gc(),通知GC執行,但是Java語言規範並不保證GC一定會執行。
13. Overload和Override的區別。Overloaded的方法是否可以改變返回值的型別?
方法的重寫Overriding和過載Overloading是Java多型性的不同表現。重寫Overriding是父類與子類之間多型性的一種表現,過載Overloading是一個類中多型性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫 (Overriding)。子類的物件使用這個方法時,將呼叫子類中的定義,對它而言,父類中的定義如同被“遮蔽”了。如果在一個類中定義了多個同名的方法,它們或有不同的引數個數或有不同的引數型別,則稱為方法的過載(Overloading)。Overloaded的方法是可以改變返回值的型別。
14. 說出Servlet的生命週期,並說出Servlet和CGI的區別
Servlet被伺服器例項化後,容器執行其init方法,請求到達時執行其service方法,service方法自動派遣執行與請求對應的doXXX方法(doGet,doPost)等,當伺服器決定將例項銷燬的時候呼叫其destroy方法。
與cgi的區別在於servlet處於伺服器程序中,它通過多執行緒方式執行其service方法,一個例項可以服務於多個請求,並且其例項一般不會銷燬,而CGI對每個請求都產生新的程序,服務完成後就銷燬,所以效率上低於servlet