1. 程式人生 > >java筆試面試題(五)

java筆試面試題(五)

oot 控件庫 rect 地址 edi javascrip apach getc mat

每日一句: 你未必出類拔萃,但一定與眾不同。

1. 說說你使用過哪些ajax技術和框架,說它們的區別
AJAX(Asynchronous JavaScript And XML,異步JavaScript和XML),是創建交互式Web應用程序主要開發技術之一,互聯網中也有大量的關於AJAX的礦建,本次匯總了常用的11個:
(1)jQuery
jQuery是一個輕量級的JavaScript庫,兼容CSS3,還兼容各種瀏覽器。jQuery使用戶能方便地處理HTML document、events、實現動畫效果,並且方便的為網站提供AJAX交互。
(2)MooTools
MooTools是一個簡潔、模塊化、面向對象的JavaScript庫。它能夠幫助你更快、更簡單的編寫可擴展和兼容性較強的JavaScript代碼。MooTools跟prototypejs相類似,語法幾乎一樣。但它提供的功能要比prototypejs多,而且更強大。比如增加了動畫特效、拖拽效果等。

(3)Prototypejs
Prototypejs是Sam Stephenson寫的一個非常優雅的JavaScript基礎類庫,對JavaScript做了大量的擴展,旨在簡化動態Web應用程序的開發,Prototypejs很好的支持了AJAX,國內外有多個基於此類庫實現的效果庫,也做的很好。
(4)ASP.NET AJAX
ASP.NET AJAX是一個完整的開發框架,容易與現有的ASP.NET程序相結合,通常實現復雜的功能只需要在頁面中拖幾個控件,而不必了解深層次的工作原理,初次之外服務器端編程的ASP.NET AJAX Control Toolkit含有大量的獨立AJAX控件和對ASP.NET原有服務器控件的AJAX功能擴展,實現起來也非常方便。
(5)Apache Wicket
是一個針對於java的web開發框架,與Struts、WebWork、Typestry類似。其特點在於對HTML和代碼進行了有效的分離(有利於程序員和美工的合作),基於規則的配置(減少了XML等配置文件的使用),學習曲線較低(開發方式與C/S相似),更加易於調試(錯誤類型比較少,而且容易定位)。
(6)Dojo Tookit
Dojo是一個強大的面向對象的JavaScript框架。主要由三大模塊構成:Core、Dijit、DojoX。Core提供AJAX、events、packaging、CSS-based querying、animations、JSON等相關操作API,Dijit是一個可更換皮膚、基於模板的webUI控件庫,DojoX包括一些創新/新穎的代碼和控件:DateGrid、charts、離線應用、跨瀏覽器矢量繪圖等。
(7)DWR(Direct Web Remoting)
是一個java庫,可以幫助開發者輕松實現服務器端的java和客戶端的JavaScript相互操作、彼此調用。
(8)Spry Framework
Adobe Spry是一個面向Web設計人員而不是開發人員的AJAX框架,它使得設計人員不需要了解復雜的AJAX技巧也能設計一個HTML頁面中創建豐富體驗成為可能。

(9)YUI(Yahoo User Interface)
是由雅虎開發的一個開源的JavaScript函數庫,它采用了AJAX、DHTML和DOM等諸多技術,YUI包含多種程序工具、函數庫以及網頁操作界面,能夠更快速的開發互動性高並且豐富的網站應用程序。
(10)GWT(Google Web Toolkit)
是一個開源的java開發框架,可以使得不會使用第二種瀏覽器語言的開發人員編寫Google地圖和Gmail等AJAX應用程序是更加輕松。
(11)ZK Framework
ZK是一套開源、兼容XUL/HEML標準、使用該框架,你無需編寫JavaScript代碼就可以創建一個支持Web2.0的富有互聯網應用程序(RIA)。其最大的好處是在設計ajax網絡應用程序時,輕松簡便的操作就像設計桌面應用程序一樣。ZK包含了一個一AJAX為基礎、事件驅動、高互動性的引擎,同時還提供了多樣豐富、可重復使用的XUL與HTML組件,以及以XML為基礎的使用接口設計語言。
2. Tomcat的優化經驗
去掉對web.xml的監視,把jsp提前編輯成Servlet。有富余物理內存的情況,加大Tomcat使用的jvm的內存。
3. HTTP請求的GET和POST方式的區別
(1)傳輸數據格式
GET請求,請求的數據參數會附加在URL之後,以?分隔URL和傳輸數據,多個參數用&連接。URL的編碼格式采用的是ASCII編碼,而不是Unicode,即是說所有的非ASCII字符都要編碼之後再傳輸。
POST請求:POST請求會把請求的數據放置在HTTP請求包的包體中。因此GET請求的傳輸數據會暴露在地址欄中,而POST不會。
(2)傳輸數據大小
在HTTP規範中,沒有對URL的長度和傳輸的數據大小進行限制。但是在實際開發過程中,對於GET,特定的瀏覽器和服務器對URL的長度有限制。因此在使用GET請求時,傳輸數據會受到URL長度的限制。
對於POST,由於不是URL傳值,理論上是不會受到限制的,但是實際上各個服務器會規定對POST提交的數據大小進行限制,Apache、IIS都有各自的配置。
(3)安全性
POST的安全性比GET 的高。
(4)HTTP中的get、POST、soap協議都是在HTTP上運行的。
4. Servlet的生存周期?
Servlet是有良好的生存期的定義,包括加載和實例化、初始化、處理請求以及服務結束。這個生存期由javax.servlet.Servlet接口的init、service和destroy方法表達。
Servlet被服務器實例化後,容器運行其init方法,請求到達時運行service方法,service方法自動派遣運行與請求對應的doXXX方法(doGet,doPost)等,當服務器決定將實例銷毀的時候用destroy方法。
5.Servlet的基本架構

public class ServletName extend HttpServlet{
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

    }
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

    }
}

6. Servlet中forward()和redirect()的區別
前者僅是容器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向後的地址;後者則是完全的跳轉,瀏覽器將會得到跳轉的地址,並重新發送請求鏈接,這樣在瀏覽器的地址欄中可以看到跳轉後的鏈接地址。所以前者更加高效,在前者可以滿足需要時,盡量使用forward方法,並且,這樣也有助於隱藏實際的鏈接。在有些情況下需要跳轉到一個其他的服務器上的資源,則比徐榮sendRedirect()方法。
7. 什麽情況下調用doGet()和doPost()?
jsp頁面中的from標簽裏的method屬性為get時調用doGet(),是post則調用doPost().
8. Request對象的主要方法:
setAttribute(String name, Object obj):設置名字為name的request的參數值;
getAttribute(String name):返回由name指定的屬性值;
getAttributeNames():返回request對象所有屬性的名字的集合,結果是一個枚舉的實例;
getCookies():返回客戶端的所有cookies對象,結果是一個cookies數組;
getCharacterEncoding():返回請求中的字符編碼方式;
getContentLength():返回請求body的長度;
getHeader(String name):獲得HTTP協議定義的文件頭信息;
getHeaders(String name):返回指定名字的request Header的所有值,結果是一個枚舉實例;
getHeaderNames():返回所有request Header的名字,結果是枚舉實例;
getInputStream():返回請求的輸入流,用於獲得請求中的數據;
getMethod():獲得客戶端向服務器傳送數據的方法;
getParameter(String name):獲得客戶端傳送給服務器端由name指定的參數值;
getParameterNames() : 獲得客戶端傳送給服務器端的所有參數的名字,結果是枚舉實例;
getParameterValues(String name):獲得由name指定參數的所有值;
getProtocol():獲得協議名稱;
getQueryString():獲得查詢字符串;
getRequestURI():獲得發送請求字符串的客戶端地址;
getRemoteAddr():獲得客戶端的IP地址;
getRemoteHost():獲得客戶端的名字;
getSession([Boolean create]):返回和請求相關的session;
getServerName():獲得服務器的名字;
getServletParh():獲得客戶端所請求的腳本文件的路徑;
getServerPort():獲得服務器的端口號;
removeAttribute(String name):刪除請求中的一個屬性。
9. jsp有哪些內置對象?
request:客戶端請求,此請求包含來自GET/POST請求的參數;
response:網頁傳回客戶端的響應;
pageContext:網頁屬性管理;
session:與請求有關的會話期;
application:servlet正在執行的內容;
out:用來傳送回應的輸出;
config:servlet的架構部件;
page:jsp網頁本身;
exception: 針對網頁錯誤,未捕獲的例外。
10. 頁面間對象傳遞的方法
request,session,application,cookie等。
11. jsp和servlet有哪些相同點和不同點,有什麽聯系
JSP是servlet技術的擴展,本質上是servlet的簡易方式,jsp更強調應用的外表表達,編譯後是“類servlet”。servlet和jsp最主要的不同點在於,servlet的應用邏輯是在java文件中,並且完全從表示層中的HTML裏分離開來,而jsp的情況是java和HTML可以組合成一個擴展名為.jsp的文件。jsp側重於視圖,servlet主要用於控制邏輯。

java筆試面試題(五)