1. 程式人生 > >Java面試筆試題及答案(3)- 簡答題

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,waitnotify

8. 一個頁面在開啟時,需要處理一些事情(比如彈出一個廣告頁),需要定義視窗的什麼事件?

<script>

        window.onload=function(){…}

</script>

或是

<body onload="">

9. HTML的Form和XFORM的區別

10. 描述forwardredirect的區別

forward是伺服器請求資源,伺服器直接訪問目標地址的URL,目標地址可以接收request 請求引數,然後把結果發給瀏覽器,瀏覽器根本不知道伺服器傳送的內容是從哪兒來的,所以它的位址列中還是原來的地址。
redirect就是服務端根據邏輯,傳送一個狀態碼,告訴瀏覽器重新去請求哪個地址,瀏覽器會重新進行請求,此時不能用request傳值,瀏覽器的位址列會變成新的地址

11. Static變數是什麼含義

   static是靜態變數,就是變數值不隨函式執行結束而消失,下次呼叫同一函式時,上次所賦予的值仍存在。

12. 垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收記憶體嗎?有什麼辦法主動通知虛擬機器進行垃圾回收

對於GC來說,當程式設計師建立物件時,GC就開始監控這個物件的地址、大小以及使用情況。通常,GC採用有向圖的方式記錄和管理堆(heap)中的所有物件。通過這種方式確定哪些物件是"可達的",哪些物件是"不可達的"。當GC確定一些物件為"不可達"時,GC就有責任回收這些記憶體空間。可以。程式設計師可以手動執行System.gc(),通知GC執行,但是Java語言規範並不保證GC一定會執行。

13. OverloadOverride的區別。Overloaded的方法是否可以改變返回值的型別?

   方法的重寫Overriding和過載OverloadingJava多型性的不同表現。重寫Overriding是父類與子類之間多型性的一種表現,過載Overloading是一個類中多型性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫 (Overriding)。子類的物件使用這個方法時,將呼叫子類中的定義,對它而言,父類中的定義如同被“遮蔽”了。如果在一個類中定義了多個同名的方法,它們或有不同的引數個數或有不同的引數型別,則稱為方法的過載(Overloading)Overloaded的方法是可以改變返回值的型別。

14. 說出Servlet的生命週期,並說出ServletCGI的區別

Servlet被伺服器例項化後,容器執行其init方法,請求到達時執行其service方法service方法自動派遣執行與請求對應的doXXX方法doGet,doPost)等,當伺服器決定將例項銷燬的時候呼叫其destroy方法。
cgi的區別在於servlet處於伺服器程序中,它通過多執行緒方式執行其service方法,一個例項可以服務於多個請求,並且其例項一般不會銷燬,而CGI對每個請求都產生新的程序,服務完成後就銷燬,所以效率上低於servlet