2012年軟考程序員第6套經(jīng)典面試題及答案

字號(hào):

為大家收集整理了《2012年軟考程序員第6套經(jīng)典面試題及答案》供大家參考,希望對(duì)大家有所幫助?。?!
    1、servlet的生命周期web容器加載servlet,生命周期開始。通過(guò)調(diào)用servlet的init()方法進(jìn)行servlet的初始化。通過(guò)調(diào)用service()方法實(shí)現(xiàn),根據(jù)請(qǐng)求的不同調(diào)用不同的do***()方法。結(jié)束服務(wù),web容器調(diào)用servlet的destroy()方 法。
    2、如何現(xiàn)實(shí)servlet的單線程模式 <%@ page isThreadSafe=”false”%>
    3、頁(yè)面間對(duì)象傳遞的方法 request,session,application,cookie等
    4、JSP和Servlet有哪些相同點(diǎn)和不同點(diǎn),他們之間的聯(lián)系是什么?
    JSP是Servlet技術(shù)的擴(kuò)展,本質(zhì)上是Servlet 的簡(jiǎn)易方式,更強(qiáng)調(diào)應(yīng)用的外表表達(dá)。JSP編譯后是"類servlet"。Servlet和JSP最主要的不同點(diǎn)在于,Servlet的應(yīng)用邏輯是在 Java文件中,并且完全從表示層中的HTML里分離開來(lái)。而JSP的情況是Java和HTML可以組合成一個(gè)擴(kuò)展名為.jsp的文件。JSP側(cè)重于視 圖,Servlet主要用于控制邏輯。
    5、四種會(huì)話跟蹤技術(shù) cookie,url重寫,session,隱藏域65,jsp的四種范圍
    page否是代表與一個(gè)頁(yè)面相關(guān)的對(duì)象和屬性。一個(gè)頁(yè)面由一個(gè)編譯好的 Java servlet 類(可以帶有任何的 include 指令,但是沒(méi)有 include 動(dòng)作)表示。這既包括 servlet 又包括被編譯成 servlet 的 JSP 頁(yè)面
    request是是代表與 Web 客戶機(jī)發(fā)出的一個(gè)請(qǐng)求相關(guān)的對(duì)象和屬性。一個(gè)請(qǐng)求可能跨越多個(gè)頁(yè)面,涉及多個(gè) Web 組件(由于 forward 指令和 include 動(dòng)作的關(guān)系)
    session是是代表與用于某個(gè) Web 客戶機(jī)的一個(gè)用戶體驗(yàn)相關(guān)的對(duì)象和屬性。一個(gè) Web 會(huì)話可以也經(jīng)常會(huì)跨越多個(gè)客戶機(jī)請(qǐng)求
    application是是代表與整個(gè) Web 應(yīng)用程序相關(guān)的對(duì)象和屬性。這實(shí)質(zhì)上是跨越整個(gè) Web 應(yīng)用程序,包括多個(gè)頁(yè)面、請(qǐng)求和會(huì)話的一個(gè)全局作用域
    6、Request對(duì)象的主要方法:
    setAttribute(String name,Object):設(shè)置名字為name的request的參數(shù)值
    getAttribute(String name):返回由name指定的屬性值
    getAttributeNames():返回request對(duì)象所有屬性的名字集合,結(jié)果是一個(gè)枚舉的實(shí)例
    getCookies():返回客戶端的所有Cookie對(duì)象,結(jié)果是一個(gè)Cookie數(shù)組
    getCharacterEncoding():返回請(qǐng)求中的字符編碼方式
    getContentLength():返回請(qǐng)求的Body的長(zhǎng)度
    getHeader(String name):獲得HTTP協(xié)議定義的文件頭信息
    getHeaders(String name):返回指定名字的request Header的所有值,結(jié)果是一個(gè)枚舉的實(shí)例
    getHeaderNames():返回所以request Header的名字,結(jié)果是一個(gè)枚舉的實(shí)例
    getInputStream():返回請(qǐng)求的輸入流,用于獲得請(qǐng)求中的數(shù)據(jù)
    getMethod():獲得客戶端向服務(wù)器端傳送數(shù)據(jù)的方法
    getParameter(String name):獲得客戶端傳送給服務(wù)器端的有name指定的參數(shù)值
    getParameterNames():獲得客戶端傳送給服務(wù)器端的所有參數(shù)的名字,結(jié)果是一個(gè)枚舉的實(shí)例
    getParameterValues(String name):獲得有name指定的參數(shù)的所有值
    getProtocol():獲取客戶端向服務(wù)器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱
    getQueryString():獲得查詢字符串
    getRequestURI():獲取發(fā)出請(qǐng)求字符串的客戶端地址
    getRemoteAddr():獲取客戶端的IP地址
    getRemoteHost():獲取客戶端的名字
    getSession([Boolean create]):返回和請(qǐng)求相關(guān)Session
    getServerName():獲取服務(wù)器的名字
    getServletPath():獲取客戶端所請(qǐng)求的腳本文件的路徑
    getServerPort():獲取服務(wù)器的端口號(hào)
    removeAttribute(String name):刪除請(qǐng)求中的一個(gè)屬性
    7、J2EE是技術(shù)還是平臺(tái)還是框架?J2EE本身是一個(gè)標(biāo)準(zhǔn),一個(gè)為企業(yè)分布式應(yīng)用的開發(fā)提供的標(biāo)準(zhǔn)平臺(tái)。
    J2EE也是一個(gè)框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技術(shù)。
    8、我們?cè)趙eb應(yīng)用開發(fā)過(guò)程中經(jīng)常遇到輸出某種編碼的字符,如iso8859-1等,如何輸出一個(gè)某種編碼的字符串?
    Public String translate (String str) { String tempStr = ""; try { tempStr = new String(str.getBytes("ISO-8859-1"), "GBK"); tempStr = tempStr.trim(); } catch (Exception e) { System.err.println(e.getMessage()); } return tempStr; }
    9、簡(jiǎn)述邏輯操作(&,|,^)與條件操作(&&,||)的區(qū)別。區(qū)別主要答兩點(diǎn):a.條件操作只能操作布爾型的,而邏輯操作不僅可以操作布爾型,而且可以操作數(shù)值型b.邏輯操作不會(huì)產(chǎn)生短路
    10、XML文檔定義有幾種形式?它們之間有何本質(zhì)區(qū)別?解析XML文檔有哪幾種方式?
    a: 兩種形式 dtd schema,b: 本質(zhì)區(qū)別:schema本身是xml的,可以被XML解析器解析(這也是從DTD上發(fā)展schema的根本目的),c:有DOM,SAX,STAX等 DOM:處理大型文件時(shí)其性能下降的非常厲害。這個(gè)問(wèn)題是由DOM的樹結(jié)構(gòu)所造成的,這種結(jié)構(gòu)占用的內(nèi)存較多,而且DOM必須在解析文件之前把整個(gè)文檔裝 入內(nèi)存,適合對(duì)XML的隨機(jī)訪問(wèn) SAX:不現(xiàn)于DOM,SAX是事件驅(qū)動(dòng)型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個(gè)文件。當(dāng)遇到像文件開頭,文檔結(jié)束,或者標(biāo)簽 開頭與標(biāo)簽結(jié)束時(shí),它會(huì)觸發(fā)一個(gè)事件,用戶通過(guò)在其回調(diào)事件中寫入處理代碼來(lái)處理XML文件,適合對(duì)XML的順序訪問(wèn) STAX:Streaming API for XML (StAX)