




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、1. J2EE是什么?它包括哪些技術(shù)?解答:從整體上講,J2EE是使用Java技術(shù)開發(fā)企業(yè)級應用的工業(yè)標準,它是Java技術(shù)不斷適應和促進企業(yè)級應用過程中的產(chǎn)物。適用于企業(yè)級應用的J2EE,提供一個平臺獨立的、可移植的、多用戶的、安全的和基于標準的企業(yè)級平臺,從而簡化企業(yè)應用的開發(fā)、管理和部署。J2EE是一個標準,而不是一個現(xiàn)成的產(chǎn)品。主要包括以下這些技術(shù):1) Servlet Servlet是Java平臺上的CGI技術(shù)。Servlet在服務器端運行,動態(tài)地生成Web頁面。與傳統(tǒng)的CGI和許多其它類似CGI的技術(shù)相比,Java Servlet具有更高的效率并更容易使用。對于Servlet,重復
2、的請求不會導致同一程序的多次轉(zhuǎn)載,它是依靠線程的方式來支持并發(fā)訪問的。 2)JSP JSP(Java Server Page)是一種實現(xiàn)普通靜態(tài)HTML和動態(tài)頁面輸出混合編碼的技術(shù)。從這一點來看,非常類似Microsoft ASP、PHP等技術(shù)。借助形式上的內(nèi)容和外觀表現(xiàn)的分離,Web頁面制作的任務可以比較方便地劃分給頁面設計人員和程序員,并方便地通過JSP來合成。在運行時態(tài),JSP將會被首先轉(zhuǎn)換成Servlet,并以Servlet的形態(tài)編譯運行,因此它的效率和功能與Servlet相比沒有差別,一樣具有很高的效率。 3) EJB EJB定義了一組可重用的組件:Enterprise Beans。
3、開發(fā)人員可以利用這些組件,像搭積木一樣建立分布式應用。 4)JDBC JDBC(Java Database Connectivity,Java數(shù)據(jù)庫連接)API是一個標準SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)數(shù)據(jù)庫訪問接口,它使數(shù)據(jù)庫開發(fā)人員能夠用標準Java API編寫數(shù)據(jù)庫應用程序。JDBC API主要用來連接數(shù)據(jù)庫和直接調(diào)用SQL命令執(zhí)行各種SQL語句。利用JDBC API可以執(zhí)行一般的SQL語句、動態(tài)SQL語句及帶IN和OUT參數(shù)的存儲過程。Java中的JDBC相當于Microsoft平臺中的ODBC(Open Database Connectiv
4、ity)。2.測試生命周期、測試過程分為幾個階段,以及各階段的含義?解答:軟件測試生命周期一般包括6個階段:1)計劃 2)分析,3)設計,4)構(gòu)建,5)測試周期,6)最后測試和實施,1) 計劃:產(chǎn)品定義階段2). 分析:外部文檔階段3). 設計:文檔架構(gòu)階段4). 構(gòu)建:單元測試階段5). 測試周期:錯誤修正,重復系統(tǒng)測試階段6). 最后的測試和實施:代碼凍結(jié)階段3.您做系統(tǒng)設計用何種工具?解答:Visio, rational rose,power designer等 4. 什么是Web容器?解答:容器就是一種服務程序,在服務器一個端口就有一個提供相應服務的程序,而這個程序就是處理從客戶端發(fā)出
5、的請求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是這樣的容器。5. 運行時異常與一般異常有何異同?解答:異常表示程序運行過程中可能出現(xiàn)的非正常狀態(tài),運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。6. Hibernate中:不看數(shù)據(jù)庫,不看XML文件,不看查詢語句,怎么樣能知道表結(jié)構(gòu)?解答:可以看與XML文件對應的域模型。7.目前幾種主流數(shù)據(jù)庫軟件的應用特點、適用范圍各是什么?解答:國際國內(nèi)的主導關(guān)系型數(shù)據(jù)庫管理系統(tǒng)有SQL Server、ORACLE、S
6、YBASE、INFORMIX和 DB2。本文從性能,可伸縮性和并行性,安全性,操作簡便,使用風險,開放性,易維護性和價格,數(shù)據(jù)庫二次開發(fā)方面比較了SQL Server,Oracle、SYBASE、DB2、INFORMIX 數(shù)據(jù)庫:1)性能SQL Server:老版本多用戶時性能不佳,新版本的性能有了明顯的改善,各項處理能力都有了明顯的提高。保持了多項TPC-C(TPC-C值被廣泛用于衡量C/S環(huán)境下,由服務器和客戶端構(gòu)筑的整體系統(tǒng)的性能,它由事物處理性能委員會(TPC,Transaction Processing Corp)制定,TPC為非贏利性國際組織。)紀錄。Oracle :性能最高, 保
7、持Windows NT下的TPC-C的世界記錄。 SYBASE :性能較高,支持Sun、IBM、HP、Compaq和Veritas的集群設備的特性,實現(xiàn)高可用性。適應于安全性要求極高的系統(tǒng)。 DB2 :適用于數(shù)據(jù)倉庫和在線事物處理,性能較高。 客戶端支持及應用模式。 INFORMIX :性能較高,支持集群,實現(xiàn)高可用性。適應于安全性要求極高的系統(tǒng),尤其是銀行,證券系統(tǒng)的應用。 2)可伸縮性,并行性 SQL Server :以前版本SQL Server并行實施和共存模型并不成熟。很難處理大量的用戶數(shù)和數(shù)據(jù)卷。伸縮性有限。新版本性能有了較大的改善,在Microsoft Advanced Serve
8、rs上有突出的表現(xiàn),超過了他的主要競爭對手。Oracle :平行服務器通過使一組結(jié)點共享同一簇中的工作來擴展Window NT的能力,提供高可用性和高伸縮性的簇的解決方案。如果Windows NT不能滿足需要, 用戶可以把數(shù)據(jù)庫移到UNIX中,具有很好的伸縮性。 SYBASE :新版本具有較好的并行性,速度快,對巨量數(shù)據(jù)無明顯影響,但是技術(shù)實現(xiàn)復雜,需要程序支持,伸縮性有限。 DB2 :DB2具有很好的并行性。DB2把數(shù)據(jù)庫管理擴充到了并行的、多節(jié)點的環(huán)境。數(shù)據(jù)庫分區(qū)是數(shù)據(jù)庫的一部分,包含自己的數(shù)據(jù)、索引、配置文件、和事務日志。數(shù)據(jù)庫分區(qū)有時被稱為節(jié)點或數(shù)據(jù)庫節(jié)點,伸縮性有限。 INFORMI
9、X :采用單進程多線程的技術(shù),具有較好的并行性。但是僅運行于UNIX平臺,伸縮性有限。 3)安全性 SQL server :Microsoft Advanced Server 獲得最高安全認證,服務器平臺的穩(wěn)定性是數(shù)據(jù)庫的穩(wěn)定性的基礎,新版本的SQL的安全性有了極大的提高。 Oracle:獲得最高認證級別的ISO標準認證。 SYBASE :通過Sun公司J2EE認證測試,獲得最高認證級別的ISO標準認證。 DB2 :獲得最高認證級別的ISO標準認證。 INFORMIX :獲得最高認證級別的ISO標準認證。 4)操作簡便 SQL Server :操作簡單,采用圖形界面。管理也很方便,而且編程接口
10、特別友好(它的SQL-DMO讓編程變得非常方便!) ,從易維護性和價格上SQL Server明顯占有優(yōu)勢。 Oracle :較復雜, 同時提供GUI和命令行,在Windows NT和Unix, Linux 下操作相同。對數(shù)據(jù)庫管理人員要求較高。 SYBASE :復雜,使用命令行操作,對數(shù)據(jù)庫管理人員要求較高。 DB2 :操作簡單,同時提供GUI和命令行,在Windows NT和Unix下操作相同。 INFORMIX :使用和管理復雜,命令行操作。對數(shù)據(jù)庫管理人員要求較高。 5)使用風險 SQL Server :完全重寫的代碼,性能和兼容性有了較大的提高,與Oracle,DB2的性能差距明顯減小
11、。該產(chǎn)品的出臺經(jīng)歷了長期的測試,為產(chǎn)品的安全和穩(wěn)定進行了全面的檢測,安全穩(wěn)定性有了明顯的提高。 Oracle :長時間的開發(fā)經(jīng)驗,完全向下兼容,可以安全的進行數(shù)據(jù)庫的升級,在企業(yè),政府中得到廣泛的應用。并且如果在WINNT上無法滿足數(shù)據(jù)的要求,可以安全的把數(shù)據(jù)轉(zhuǎn)移到UNIX上來。SYBASE :開發(fā)時間較長,升級較復雜,穩(wěn)定性較好,數(shù)據(jù)安全有保障。風險小。在安全要求極高的銀行,證券行業(yè)中得到了廣泛的應用。 DB2 :在巨型企業(yè)得到廣泛的應用,向下兼容性好。風險小。 INFORMIX :開發(fā)時間較長,升級較復雜,穩(wěn)定性較好,數(shù)據(jù)安全有保障。風險小。在安全要求極高的銀行,證券行業(yè)中得到了廣泛的應用
12、。 6)開放性 SQL Server:只能在Windows 上運行,C/S結(jié)構(gòu),只支持Windows客戶,可以用ADO,DAO,OLEDB,ODBC連接。Windows9X系列產(chǎn)品是偏重于桌面應用,NT server適合各種大中小型企業(yè)。 操作系統(tǒng)的穩(wěn)定對數(shù)據(jù)庫是十分重要的。Windows平臺的可靠性,安全性經(jīng)過了最高級別的C2認證的。在處理大數(shù)據(jù)量的關(guān)鍵業(yè)務時提供了較好的性能。 Oracle :能在所有主流平臺上運行(包括 Windows)。完全支持所有的工業(yè)標準。采用完全開放策略。多層次網(wǎng)絡計算,支持多種工業(yè)標準,可以用ODBC,JDBC,OCI等網(wǎng)絡客戶連接??梢允箍蛻暨x擇最適合的解決方
13、案。對開發(fā)商全力支持。 SYBASE :能在所有主流平臺上運行,在銀行業(yè)中得到了廣泛的應用。 DB2 :有較好的開放性,最適于海量數(shù)據(jù)。跨平臺,多層結(jié)構(gòu),支持ODBC,JDBC等客戶。在大型的國際企業(yè)中得到最為廣泛的應用,在全球的500家最大的企業(yè)中,大部分采用DB2數(shù)據(jù)庫服務器。 IINFORMIX :僅運行在UNIX平臺,包括SUNOS、HPUX、 ALFAOSF/1。在銀行中得到廣泛的應用。 7)易維護性和價格 SQL Server :從易維護性和價格上SQL Server明顯占有優(yōu)勢。基于Microsoft的一貫風格,SQL Server的圖形管理界面帶來了明顯的易用性, 微軟的數(shù)據(jù)庫
14、管理員培訓進行的比較充分,可以輕松的找到很好的數(shù)據(jù)庫管理員,數(shù)據(jù)庫管理費用比較低,SQL Server的價格也是很低的,但是在License的購買上會抬高價格??傮w來說SQL Server的價格在商用數(shù)據(jù)庫中是最低的。 Oracle :從易維護性和價格上來說Oracle的價格是比較高的,管理比較復雜,由于Oracle的應用很廣泛,經(jīng)驗豐富的Oracle數(shù)據(jù)庫管理員可以比較容易的找到,從而實現(xiàn)Oracle的良好管理。因此Oracle的性能價格比在商用數(shù)據(jù)庫中是最好的。 SYBASE :SYBASE的價格是比較低的,但是SYBASE的在企業(yè)和政府中的應用較少,很難找到經(jīng)驗豐富的管理員,運行管理費用
15、較高。DB2 :價格高, 管理員少,在中國的應用較少,運行管理費用都很高,適用于大型企業(yè)的數(shù)據(jù)倉庫應用。 INFORMIX :價格在這些系統(tǒng)中居于中間,與SYBASE一樣,在企業(yè)和政府中應用較少,僅在銀行中得到了廣泛的應用。經(jīng)驗豐富的管理人員較少,運行管理費用高。 8)數(shù)據(jù)庫二次開發(fā) SQL Server :數(shù)據(jù)庫的二次開發(fā)工具很多,包括Visual C+, Visual Basic等開發(fā)工具,可以實現(xiàn)很好的Windows應用,開發(fā)容易。 Oracle :數(shù)據(jù)庫的二次開發(fā)工具很多,涵蓋了數(shù)據(jù)庫開發(fā)的各個階段,開發(fā)容易。 SYBASE :開發(fā)工具較少,經(jīng)驗豐富的人員很少。 DB2 :在國外巨型企
16、業(yè)得到廣泛的應用,中國的經(jīng)驗豐富的人員很少。 INFORMIX :在銀行業(yè)中得到廣泛的應用,但是在中國的經(jīng)驗豐富的人員很少。8.存儲過程和函數(shù)的區(qū)別解答:從參數(shù)的返回情況來看:如果返回多個參數(shù)值最好使用存儲過程,如果只有一個返回值的話可以使用函數(shù)。從調(diào)用情況來看:如果在SQL語句(DML或SELECT)中調(diào)用的話一定是存儲函數(shù)或存儲的封裝函數(shù)不可以是存儲過程,但調(diào)用存儲函數(shù)的時候還有好多限制以及函數(shù)的純度等級的問題,如果是在過程化語句中調(diào)用的話,就要看你要實現(xiàn)什么樣的功能。函數(shù)一般情況下是用來計算并返回一個計算結(jié)果而存儲過程一般是用來完成特定的數(shù)據(jù)操作(比如修改、插入數(shù)據(jù)庫表或執(zhí)行某些DDL語
17、句等等),所以雖然他們的語法上很相似但用戶在使用他們的時候所需要完成的功能大部分情況下是不同的。9.試述數(shù)據(jù)庫完整保護的主要任務和措施。解答:數(shù)據(jù)庫的完整性保護也就是數(shù)據(jù)庫中數(shù)據(jù)正確性的維護。數(shù)據(jù)庫完整性包括三個內(nèi)容:實體完整性規(guī)則,參照物完整性規(guī)則以及用戶定義完整性規(guī)則。 前兩個是有DBMS自動處理。實體完整性規(guī)則是說針對于基表中的關(guān)鍵字中屬性值不能為空值,是數(shù)據(jù)庫完整性的基本要求,主關(guān)鍵字和元組的唯一性對應。參照物完整性規(guī)則是不允許引用不存在的元組:即基表中的外關(guān)鍵字要么為空,要么關(guān)聯(lián)基表中必存在元組。用戶定義完整性規(guī)則針對具體的數(shù)據(jù)環(huán)境由用戶具體設置的規(guī)則,它反應了具體應用中的語義要求。
18、 一個完整性規(guī)則一般由下面三部分組成:完整性約束條件設置,完整性約束條件的檢查以及完整性約束條件的處理.后兩部分在數(shù)據(jù)庫中一般有相應的模塊處理。另外觸發(fā)器也可以做完整性的保護,但觸發(fā)器大量用于主動性領域。10.請說明SQLServer中delete from tablea & truncate table tablea的區(qū)別解答:兩者都可以用來刪除表中所有的記錄。區(qū)別在于:truncate是DDL操作,它移動HWK,使HWK值為0,不需要 rollback segment .而Delete是DML操作需要rollback segment 且花費較長時間.11. Oracle安裝完成后,
19、如何用命令行啟動和關(guān)閉數(shù)據(jù)庫?解答:打開:STARTUP FORCE RESTRICT PFILE= filename OPEN RECOVER database | MOUNT | NOMOUNT STARTUP OPEN:STARTUP缺省的參數(shù)就是OPEN,打開數(shù)據(jù)庫,允許數(shù)據(jù)庫的訪問。當前實例的控制文件中所描述的所有文件都已經(jīng)打開。 STARTUP MOUNT:MOUNT數(shù)據(jù)庫,僅僅給DBA進行管理操作,不允許數(shù)據(jù)庫的用戶訪問。僅僅只是當前實例的控制文件被打開,數(shù)據(jù)文件未打開。 STARTUP NOMOUNT:僅僅通過初始化文件,分配出SGA區(qū),啟動數(shù)據(jù)庫后臺進程,沒有打開控制文件和數(shù)
20、據(jù)文件。不能訪問任何數(shù)據(jù)庫。 STARTUP PFILE= filename:以filename為初始化文件啟動數(shù)據(jù)庫,不是采用缺省初始化文件。 STARTUP FORCE:中止當前數(shù)據(jù)庫的運行,并開始重新正常的啟動數(shù)據(jù)庫。 STARTUP RESTRICT:只允許具有RESTRICTED SESSION權(quán)限的用戶訪問數(shù)據(jù)庫。 STARTUP RECOVER:數(shù)據(jù)庫啟動,并開始介質(zhì)恢復關(guān)閉SHUTDOWN有四個參數(shù):NORMAL、TRANSACTIONAL、IMMEDIATE、ABORT。缺省不帶任何參數(shù)時表示是NORMAL。命令SHUTDOWN NORMAL:不允許新的連接、等待會話結(jié)束、等
21、待事務結(jié)束、做一個檢查點并關(guān)閉數(shù)據(jù)文件。啟動時不需要實例恢復。 SHUTDOWN TRANSACTIONAL:不允許新的連接、不等待會話結(jié)束、等待事務結(jié)束、做一個檢查點并關(guān)閉數(shù)據(jù)文件。啟動時不需要實例恢復。 SHUTDOWN IMMEDIATE:不允許新的連接、不等待會話結(jié)束、不等待事務結(jié)束、做一個檢查點并關(guān)閉數(shù)據(jù)文件。沒有結(jié)束的事務是自動rollback的。啟動時不需要實例恢復。 SHUTDOWN ABORT:不允許新的連接、不等待會話結(jié)束、不等待事務結(jié)束、不做檢查點且沒有關(guān)閉數(shù)據(jù)文件。啟動時自動進行實例恢復。 另外,對于NORMAL、TRANSACTIONAL、IMMEDIATE,DB B
22、uffer Cache的內(nèi)容寫入了數(shù)據(jù)文件,沒有提交的事務被回滾,所有的資源被釋放,數(shù)據(jù)庫被“干凈”的關(guān)閉。 對于ABORT,DB Buffer Cache的內(nèi)容沒有寫入數(shù)據(jù)文件,沒有提交的事務也沒有回滾。數(shù)據(jù)庫沒有dismount和關(guān)閉,數(shù)據(jù)文件也沒有關(guān)閉。當數(shù)據(jù)庫啟動時,需要通過redo log恢復數(shù)據(jù),通過回滾段對事務回滾,對資源進行釋放。12. 類有哪三個基本特性?各特性的優(yōu)點?解答:類具有封裝性、繼承性和多態(tài)性。封裝性:類的封裝性為類的成員提供公有、缺省、保護和私有等多級訪問權(quán)限,目的是隱藏類中的私有變量和類中方法的實現(xiàn)細節(jié)。繼承性:類的繼承性提供從已存在的類創(chuàng)建新類的機制,繼承(i
23、nheritance)使一個新類自動擁有被繼承類(父類)的全部可繼承的成員。多態(tài)性:類的多態(tài)性提供類中方法執(zhí)行的多樣性,多態(tài)性有兩種表現(xiàn)形式:重載和覆蓋。13.談談對XML的理解?說明Web應用中Web.xml文件的作用?解答:XML(Extensible Markup Language)即可擴展標記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標準通用標記語言)。Xml是Internet環(huán)境中跨平臺的,依賴于內(nèi)容的技術(shù),是當前處理結(jié)構(gòu)化文檔信息的有力工具。擴展標記語言XML是一種簡單的數(shù)據(jù)存儲語言,使用一系列簡單的標記描述數(shù)據(jù)
24、,而這些標記可以用方便的方式建立,雖然XML占用的空間比二進制數(shù)據(jù)要占用更多的空間,但XML極其簡單易于掌握和使用。web.xml的作用是配置歡迎頁,servlet,filter,listener等的。14.jsp有哪些內(nèi)置對象?作用分別是什么?(至少三個)解答:1)request表示HttpServletRequest對象。它包含了有關(guān)瀏覽器請求的信息,并且提供了幾個用于獲取cookie, header和session數(shù)據(jù)的有用的方法。 2)response表示HttpServletResponse對象,并提供了幾個用于設置送回 瀏覽器的響應的方法(如cookies,頭信息等)。 3)out
25、對象是javax.jsp.JspWriter的一個實例,并提供了幾個方法使你能用于向瀏覽器回送輸出結(jié)果。 4)pageContext表示一個javax.servlet.jsp.PageContext對象。它是用于方便存取各種范圍的名字空間、servlet相關(guān)的對象的API,并且包裝了通用的servlet相關(guān)功能的方法。 5)session表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯用戶的狀態(tài)信息。 6)application 表示一個javax.servle.ServletContext對象。這有助于查找有關(guān)servlet引擎和serv
26、let環(huán)境的信息。 7)config表示一個javax.servlet.ServletConfig對象。該對象用于存取servlet實例的初始化參數(shù)。 8)page表示從該頁面產(chǎn)生的一個servlet實例。9)exception 針對錯誤網(wǎng)頁,未捕捉的例外15.事務是什么?有哪些屬性,并簡要說明這些屬性的含義。解答:事務(Transaction)是訪問并可能更新數(shù)據(jù)庫中各種數(shù)據(jù)項的一個程序執(zhí)行單元(unit)。事務通常由高級數(shù)據(jù)庫操縱語言或編程語言(如SQL,C+或Java)書寫的用戶程序的執(zhí)行所引起,并用形如begin transaction和end transaction語句(或函數(shù)調(diào)用)
27、來界定。事務由事務開始(begin transaction)和事務結(jié)束(end transaction)之間執(zhí)行的全體操作組成。事務應該具有4個屬性:原子性、一致性、隔離性、持續(xù)性。這四個屬性通常稱為ACID特性。原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的諸操作要么都做,要么都不做。一致性(consistency)。事務必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。一致性與原子性是密切相關(guān)的。隔離性(isolation)。一個事務的執(zhí)行不能被其他事務干擾。即一個事務內(nèi)部的操作及使用的數(shù)據(jù)對并發(fā)的其他事務是隔離的,并發(fā)執(zhí)行的各個事務之間不能互相干擾。持久性
28、(durability)。持續(xù)性也稱永久性(permanence),指一個事務一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。16、Collection 和 Collections的區(qū)別?解答:Collection是java.util下的接口,它是各種集合的父接口,繼承于它的接口主要有Set 和List;Collections是個java.util下的類,是針對集合的幫助類,提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全化等操作。17、HashMap與TreeMap的區(qū)別?解答:HashMap通過hashcode對其內(nèi)容進行快速查找,而Tr
29、eeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個有序的結(jié)果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)。18、ArrayList和Vector的區(qū)別?解答:同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程不安全的,不是同步的;數(shù)據(jù)增長:當需要增長時,Vector默認增長為原來一培,而ArrayList卻是原來的一半。19、HashMap和Hashtable的區(qū)別?解答:HashMap是Hashtable的輕量級實現(xiàn)(非線程安全的實現(xiàn)),他們都實現(xiàn)了Map接口,主要區(qū)別在于HashMap允許空(null)鍵值(key),由于
30、非線程安全,效率上高于Hashtable。HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現(xiàn)。最大的不同是,Hastable的方法是synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實現(xiàn)同步,而HashMap 就必
31、須為之提供同步。20.請說出ArrayList,Vector, LinkedList的存儲性能和特性解答:ArrayList和Vector都是使用數(shù)組方式存儲數(shù)據(jù),此數(shù)組元素數(shù)大于實際存儲的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數(shù)組元素移動等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現(xiàn)存儲,按序號索引數(shù)據(jù)需要進行前向或后向遍歷,但是插入數(shù)據(jù)時只需要記錄本項的前后項即可,所以插入速度較快。21. 描述J2EE框架的多層結(jié)構(gòu),并簡要說明
32、各層的作用。解答:1) Presentation layer(表示層)a. 表示邏輯(生成界面代碼)b. 接收請求c. 處理業(yè)務層拋出的異常d. 負責規(guī)則驗證(數(shù)據(jù)格式,數(shù)據(jù)非空等)e. 流程控制2) Service layer(服務層/業(yè)務層)a.封裝業(yè)務邏輯處理,并且對外暴露接口b.負責事務,安全等服務3) Persistence layer(持久層)a 封裝數(shù)據(jù)訪問的邏輯,暴露接口b.提供方便的數(shù)據(jù)訪問的方案(查詢語言,API,映射機制等)4)Domain layer(域?qū)樱゛. 業(yè)務對象以及業(yè)務關(guān)系的表示b. 處理簡單的業(yè)務邏輯c. 域?qū)拥膶ο罂梢源┰奖硎緦樱瑯I(yè)務層,持久層軟件分層結(jié)構(gòu)
33、使得代碼維護非常方便,設計明確,各層獨立,專注自己擅長的領域。22.請談談對SOA的認識。解答:面向服務的體系結(jié)構(gòu)(Service-Oriented Architecture,SOA)是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯(lián)系起來。接口是采用中立的方式進行定義的,它應該獨立于實現(xiàn)服務的硬件平臺、操作系統(tǒng)和編程語言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務可以一種統(tǒng)一和通用的方式進行交互。23.簡要描述如何結(jié)合struts、hibernate、spring開發(fā)Web應用?解答:Struts可以將jsp頁面的表單關(guān)聯(lián)起來,就是把JSP頁面的表單數(shù)據(jù)封裝
34、成javaBean,這樣的話,在action中你再也不需要使用傳統(tǒng)的request.getParameter(“name”);還有struts有一個控制器,你在struts編程中的控制器(XxxAction)都是繼承總的ActionServlet,它能集中處理請求,然后轉(zhuǎn)到相關(guān)的頁面。還有struts的表單驗證組件,不用你寫js驗證了,只需要你配置一下文件就可以了。另外struts的令牌機制可以防表單重復提交。Spring 是一個輕量級容器,非侵入性.包含依賴注入,AOP等。它是為了解決企業(yè)應用程序開發(fā)復雜性而創(chuàng)建的??蚣艿闹饕獌?yōu)勢之一就是其分層架構(gòu),分層架構(gòu)允許您選擇使用哪一個組件,同時為
35、J2EE 應用程序開發(fā)提供集成的框架。Hibernate:它可以讓我們以OO的方式操作數(shù)據(jù)庫,這讓我們看到了hibernate的強大之處,體驗到操作數(shù)據(jù)的方便。但hibernate最耀眼之處是hibernate的緩存機制,而不是以OO的方式操作數(shù)據(jù)庫。Hibernate的緩存機制不外乎是一級緩存session,二級緩存sessionFactory,和第三方緩存如ehcache。也就是hibernate的最強大的地方是它的緩存,理解了這個才能真正的理解hibernate,Hibernate的命名查詢/命名參數(shù)查詢,就是將hql語句放在一個單獨的xml文件之中,它仍然讓人們以面向?qū)ο蟮姆绞饺ゲ倏v數(shù)
36、據(jù),而不用在以OO的方式寫著代碼的同時,然后再轉(zhuǎn)變思維,用面向關(guān)系的方式去寫那些sql語句。但hibernate不僅做了這些,它的native sql查詢方式,完全滿足sql語句的偏愛者,它像ibatis一樣,將sql語句放在配置文件之中。24.說明反轉(zhuǎn)控制(IOC)和面向方向編程(AOP)在spring中的應用解答:Spring 核心容器(Core)提供Spring框架的基本功能。核心容器的主要組件是BeanFactory,它是工廠模式的實現(xiàn)。BeanFactory使用控制反轉(zhuǎn)(Ioc)模式將應用程序的配置和依賴性規(guī)范與實際的應用代碼程序分開。Spring的聲明式事務基于AOP實現(xiàn),卻并不需
37、要程序開發(fā)者成為AOP專家,亦可輕易使用Spring的聲明式事務管理。25.請看如下片段:<set name=“address”lazy=“true”inverse=“false”cascade=“all-delete-orphan”><key column = “USERID”> </key><one-to-many class=“com.norteksoft.erm.model.Address”/></ set >解釋lazy、inverse、cascade以及all-delete-orphan屬性的含義;并給出示例代碼,說明在如
38、下組合情況下,對于save、update、delete一對多關(guān)系中的一方對象操作時的區(qū)別:inversecascadetrueall-delete-orphanfalseall-delete-orphantrueallfalsealltruenonefalsenone解答:(一)lazy:延遲加載Lazy的有效期:只有在session打開的時候才有效;session關(guān)閉后lazy就沒效了。lazy策略可以用在:a<class>標簽上:可以取值true/falseb.<property>標簽上,可以取值true/false,這個特性需要類增強c.<set>/&
39、lt;list>等集合上,可以取值為true/false/extrad.<one-to-one>/<many-to-one>等標簽上,可以取值false/proxy/no-proxy1) get和load的區(qū)別:a.get不支持延遲加載,而load支持。b.當查詢特定的數(shù)據(jù)庫中不存在的數(shù)據(jù)時,get會返回null,而load則拋出異常。2) 類(Class)的延遲加載:a. 設置<class>標簽中的lazy=”true”,或是保持默認(即不配置lazy屬性)b. 如果lazy的屬性值為true,那么在使用load方法加載數(shù)據(jù)時,只有確實用到數(shù)據(jù)的時候
40、才會發(fā)出sql語句;這樣有可能減少系統(tǒng)的開銷。3) 集合(collection)的延遲加載:可以取值true,false,extraa.true:默認取值,它的意思是只有在調(diào)用這個集合獲取里面的元素對象時,才發(fā)出查詢語句,加載其集合元素的數(shù)據(jù)b.false:取消懶加載特性,即在加載對象的同時,就發(fā)出第二條查詢語句加載其關(guān)聯(lián)集合的數(shù)據(jù)c.extra:一種比較聰明的懶加載策略,即調(diào)用集合的size/contains等方法的時候,hibernate并不會去加載整個集合的數(shù)據(jù),而是發(fā)出一條聰明的SQL語句,以便獲得需要的值,只有在真正需要用到這些集合元素對象數(shù)據(jù)的時候,才去發(fā)出查詢語句加載所有對象的數(shù)
41、據(jù)4) Hibernate單端關(guān)聯(lián)懶加載策略:即在<one-to-one>/<many-to-one>標簽上可以配置懶加載策略。可以取值為:false/proxy/no-proxya.false:取消懶加載策略,即在加載對象的同時,發(fā)出查詢語句,加載其關(guān)聯(lián)對象xy:這是hibernate對單端關(guān)聯(lián)的默認懶加載策略,即只有在調(diào)用到其關(guān)聯(lián)對象的方法的時候才真正發(fā)出查詢語句查詢其對象數(shù)據(jù),其關(guān)聯(lián)對象是代理類c.no-proxy:這種懶加載特性需要對類進行增強,使用no-proxy,其關(guān)聯(lián)對象不是代理類注意:在class標簽上配置的lazy屬性不會影響到關(guān)聯(lián)對象!(二
42、)inverseinverse是指的關(guān)聯(lián)關(guān)系的控制方向,inverse=false的side(side其實是指inversefalse所位于的class元素)端有責任維護關(guān)系,而inversetrue端無須維護這些關(guān)系(三)cascadecascade指的是層級之間的連鎖操作。在定義關(guān)聯(lián)對象的映射時,使用cascade=”all”,cascade=”save-update”,cascade=”all-delete-orphan”或cascade=”delete”a.如果父對象被保存,所有的子對象會被傳遞到saveOrUpdate()方法去執(zhí)行(cascade=”save-update”)b.如
43、果父對象被傳遞到update()或者saveOrUpdate(),所有的子對象會被傳遞到saveOrUpdate()方法去執(zhí)行(cascade=”save-update”)c.如果一個臨時的子對象被一個持久化的父對象引用了,它會被傳遞到saveOrUpdate()去執(zhí)行 (cascade=”save-update”)d.如果父對象被刪除了,所有的子對象對被傳遞到delete()方法執(zhí)行 (cascade=”delete”)e.如果臨時的子對象不再被持久化的父對象引用,什么都不會發(fā)生(必要時,程序應該明確的刪除這個子對象),除非聲明了cascade=”all-delete-orphan”,在這種
44、情況下,成為“孤兒”的子對象會被刪除。(四) save、update、delete一對多關(guān)系中的一方對象操作時的區(qū)別1)當一方設置inverse=true時,所有由一方發(fā)出的操作都不會關(guān)聯(lián)到多方。2)當一方設置 inverse=false, cascade=all-delete-orphan時,將刪除不再和一方對象關(guān)聯(lián)的所有多方對象。3)當一方設置 inverse=false, cascade=all時,當保存和刪除一方對象時,級聯(lián)保存和刪除所有關(guān)聯(lián)的多方對象。4)當一方設置 inverse=false, cascade=none時,當對一方操作時,不級聯(lián)到關(guān)聯(lián)的多方對象。26.簡單說明什么是
45、遞歸?什么情況會使用?并使用java實現(xiàn)一個簡單的遞歸程序。解答:1)遞歸做為一種算法在程序設計語言中廣泛應用.是指函數(shù)/過程/子程序在運行過程中直接或間接調(diào)用自身而產(chǎn)生的重入現(xiàn)象。2)遞歸算法一般用于解決三類問題:a.數(shù)據(jù)的定義是按遞歸定義的。(Fibonacci(斐波那契)函數(shù))b.問題解法按遞歸算法實現(xiàn)。(回溯)c.數(shù)據(jù)的結(jié)構(gòu)形式是按遞歸定義的。(樹的遍歷,圖的搜索)3).這是一個排列的例子,它所做的工作是將輸入的一個字符串中的所有元素進行排序并輸出,例如:你給出的參數(shù)是”abc” 則程序會輸出: abc acb bac bca cab cba a.算法的出口在于:也就是現(xiàn)在給出的排列元
46、素只有一個時。 b.算法的逼近過程:先確定排列的第一位元素,也就是循環(huán)中所代表的元素, 然后開始減少排列元素,如此下去,直到 public class Foo public static void main(String args) permute(“abc”);public static void permute(String str) char strArray = str.toCharArray();permute(strArray, 0, strArray.length 1);public static void permute(char list, int low, int high
47、) int i;if (low = high) String cout = “”;for (i = 0; i <= high; i+)cout += listi;System.out.println(cout); else for (i = low; i <= high; i+) char temp = listlow;listlow = listi;listi = temp;permute(list, low + 1, high);temp = listlow;listlow = listi;listi = temp;27.列出自己常用的jdk包.解答:JDK常用的package
48、java.lang: 這個是系統(tǒng)的基礎類,比如String等都是這里面的,這個package是唯一一個可以不用import就可以使用的Packagejava.io: 這里面是所有輸入輸出有關(guān)的類,比如文件操作等: 這里面是與網(wǎng)絡有關(guān)的類,比如URL,URLConnection等。java.util : 這個是系統(tǒng)輔助類,特別是集合類Collection,List,Map等。java.sql: 這個是數(shù)據(jù)庫操作的類,Connection, Statememt,ResultSet等28.列出自己常用的jdk中的數(shù)據(jù)結(jié)構(gòu)解答:線性表,鏈表,哈希表是常用的數(shù)據(jù)結(jié)構(gòu)。29List、Map、Set三個接口
49、存儲元素時各有什么特點?解答:1)List是有序的Collection,使用此接口能夠精確的控制每個元素插入的位置。用戶能夠使用索引(元素在List中的位置,類似于數(shù)組下標)來訪問List中的元素,這類似于Java的數(shù)組。2)Set是一種不包含重復的元素的Collection,即任意的兩個元素e1和e2都有e1.equals(e2)=false,Set最多有一個null元素。3)Map接口 :請注意,Map沒有繼承Collection接口,Map提供key到value的映射30. 簡述基于Struts框架Web應用的工作流程解答:在web應用啟動時就會加載初始化ActionServlet,Ac
50、tionServlet從struts-config.xml文件中讀取配置信息,把它們存放到各種配置對象中, 當ActionServlet接收到一個客戶請求時,將執(zhí)行如下流程. 1)檢索和用戶請求匹配的ActionMapping實例,如果不存在,就返回請求路徑無效信息; 2)如果ActionForm實例不存在,就創(chuàng)建一個ActionForm對象,把客戶提交的表單數(shù)據(jù)保存到ActionForm對象中; 3)根據(jù)配置信息決定是否需要表單驗證.如果需要驗證,就調(diào)用ActionForm的validate()方法; 4)如果ActionForm的validate()方法返回null或返回一個不包含Acti
51、onMessage的ActionErrors對象, 就表示表單驗證成功; 5)ActionServlet根據(jù)ActionMapping所包含的映射信息決定將請求轉(zhuǎn)發(fā)給哪個Action,如果相應的Action實例不存在,就先創(chuàng)建這個實例,然后調(diào)用Action的execute()方法; 6)Action的execute()方法返回一個ActionForward對象,ActionServlet在把客戶請求轉(zhuǎn)發(fā)給ActionForward對象指向的JSP組件; 7)ActionForward對象指向JSP組件生成動態(tài)網(wǎng)頁,返回給客戶;31. 在項目中用過Spring的哪些方面?及用過哪些Ajax框架?
52、解答:在項目使用過Spring IOC ,AOP,DAO,ORM,還有上下文環(huán)境。在項目使用過Ext,Juery等Ajax框架.32、abstract class和interface有什么區(qū)別?解答:聲明方法的存在而不去實現(xiàn)它的類被叫做抽象類(abstract class),它用于要創(chuàng)建一個體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實現(xiàn)該類的情況。不能創(chuàng)建abstract 類的實例。然而可以創(chuàng)建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現(xiàn),否則它們也是抽象類。取而代之,在子
53、類中實現(xiàn)該方法。知道其行為的其它類可以在類中實現(xiàn)這些方法。接口(interface)是抽象類的變體。新型多繼承性可通過實現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,所有成員變量都是public static final的。一個類可以實現(xiàn)多個接口,當類實現(xiàn)接口時,必須實現(xiàn)接口的所有方法。抽象類在Java語言中表示的是一種單繼承的關(guān)系,對于interface 來說則不然,并不要求interface的實現(xiàn)者和interface定義在概念本質(zhì)上是一致的,僅僅是實現(xiàn)了interface定義的契約而已。;抽象類中可以定義自己的成員變量,也可以包含非抽象的方法,而在接口中只能有靜態(tài)的常量,所有方法必須是
54、抽象的;實現(xiàn)抽象類時可以只實現(xiàn)其中的部分方法,而要是實現(xiàn)一個接口的話就必須實現(xiàn)這個接口中的所有抽象方法。33.MVC模式中M,V,C每個代表意義,并簡述在Struts中MVC的表現(xiàn)方式。解答:MVC是Model-View-Controller 的縮寫,Model代表的是應用的業(yè)務邏輯(通過JavaBean,EJB組件實現(xiàn)),View 是應用的表示層(由JSP頁面產(chǎn)生)Controller是通過應用的處理過程控制,(一般是一個servert)通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的組件實現(xiàn),這些組件可以進行交互和重用。在Struts框架中Controller功能由ActionSe
55、rvlet和ActionMapping對象構(gòu)成,核心是一個Servlet類型的對象ActionServlet,它用來接收客戶端的請求。ActionServlet包括一組基于配置的ActionMapping對象,每個ActionMapping對象實現(xiàn)了一個請求到一個具體的Model部分的Action處理器對象之間的映射。Model部分由Action和ActionForm對象構(gòu)成。所有的Action處理器對象都是開發(fā)者從Struts的Action類派生的子類。Action處理器對象封裝了具體的處理邏輯,調(diào)用業(yè)務邏輯模塊,并且把響應提交到合適的View組件以產(chǎn)生響應。Struts提供的ActionF
56、orm組件對象可以通過定義屬性描述客戶端表單數(shù)據(jù),開發(fā)者可以從它派生子類對象,并利用它和Struts提供的自定義標記庫相結(jié)合,可以實現(xiàn)對客戶端的表單數(shù)據(jù)的良好封裝和支持,Action處理器對象可以直接對它進行讀寫,而不再需要和request、response對象進行數(shù)據(jù)交互。通過ActionForm組件對象實現(xiàn)了對View和Model之間交互的支持(View部分是通過JSP技術(shù)實現(xiàn)的)。Struts提供了自定義的標記庫,通過這些自定義標記庫可以非常容易地和系統(tǒng)的Model部分交互,通過使用這些自定義標記庫創(chuàng)建的JSP表單,可以實現(xiàn)對Model部分中的ActionForm的映射,完成對用戶數(shù)據(jù)的封裝。34java語言中public、private、protected三個關(guān)鍵字的用法,重寫和重載的區(qū)別。解答:作用域 當前類 同包 子類 其它public protected × default × × private × × ×重寫:發(fā)生在父子類之間,方法名相同,參數(shù)的類型、個數(shù)、順序相同,返回值相同,訪問權(quán)限不能更封閉,拋出異常不能寬泛;重載:發(fā)生在同一個類中,方法名相同,但是參數(shù)不同(類型不同或個數(shù)不同或參數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公共政策與經(jīng)濟關(guān)系2025年國際金融理財師考試試題及答案
- 健全風險控制的年度工作框架計劃
- 急診文書書寫規(guī)范的培訓方式計劃
- 制定前臺工作月度總結(jié)報告計劃
- 會展現(xiàn)場管理案例分析與策略
- 團支部活動策劃方案
- 新技能學習的月度安排計劃
- 小語種證書考試的題型分析試題及答案
- 關(guān)注銀行從業(yè)職業(yè)前景的試題及答案
- 常見錯誤解析特許金融分析師試題及答案
- 中小學教師資格證面試課件講義
- Oracle-EBS生產(chǎn)制造解決方案
- 植物生理學第十三章植物的逆境生理課件
- 宮頸癌護理查房
- 施工單位人員退場制度
- 漢譯巴利三藏相應部3-蘊篇
- 建筑外窗抗風壓性能計算書
- 年產(chǎn)萬噸酒精發(fā)酵車間設計
- 生物化學與分子生物學人衛(wèi)版教材全集
- 照片里的故事
- 土木工程畢業(yè)設計框架結(jié)構(gòu)教學樓計算書
評論
0/150
提交評論