java集合常見面試題
Java技術(shù)員面試中,常見的面試題你有了解了嗎?面試前的準備對面試者來說很重要,以下是小編幫你們整理的java集合常見面試題,一起來學(xué)習(xí)啦。
java集合常見面試題篇一
1. J2EE是什么?它包括哪些技術(shù)?
解答:從整體上講,J2EE是使用Java技術(shù)開發(fā)企業(yè)級應(yīng)用的工業(yè)標準,它是Java技術(shù)不斷適應(yīng)和促進企業(yè)級應(yīng)用過程中的產(chǎn)物。適用于企業(yè)級應(yīng)用的J2EE,提供一個平臺獨立的、可移植的、多用戶的、安全的和基于標準的企業(yè)級平臺,從而簡化企業(yè)應(yīng)用的開發(fā)、管理和部署。J2EE是一個標準,而不是一個現(xiàn)成的產(chǎn)品。
主要包括以下這些技術(shù):
1) Servlet Servlet是Java平臺上的CGI技術(shù)。Servlet在服務(wù)器端運行,動態(tài)地生成Web頁面。與傳統(tǒng)的CGI和許多其它類似CGI的技術(shù)相比,Java Servlet具有更高的效率并更容易使用。對于Servlet,重復(fù)的請求不會導(dǎo)致同一程序的多次轉(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頁面制作的任務(wù)可以比較方便地劃分給頁面設(shè)計人員和程序員,并方便地通過JSP來合成。在運行時態(tài),JSP將會被首先轉(zhuǎn)換成Servlet,并以Servlet的形態(tài)編譯運行,因此它的效率和功能與Servlet相比沒有差別,一樣具有很高的效率。
3) EJB
EJB定義了一組可重用的組件:Enterprise Beans。開發(fā)人員可以利用這些組件,像搭積木一樣建立分布式應(yīng)用。
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ù)庫應(yīng)用程序。JDBC API主要用來連接數(shù)據(jù)庫和直接調(diào)用SQL命令執(zhí)行各種SQL語句。利用JDBC API可以執(zhí)行一般的SQL語句、動態(tài)SQL語句及帶IN和OUT參數(shù)的存儲過程。Java中的JDBC相當(dāng)于Microsoft平臺中的ODBC(Open Database Connectivity)。
2.測試生命周期、測試過程分為幾個階段,以及各階段的含義?
解答:軟件測試生命周期一般包括6個階段:1)計劃 2)分析,3)設(shè)計,4)構(gòu)建,5)測試周期,6)最后測試和實施,
1) 計劃:產(chǎn)品定義階段
2). 分析:外部文檔階段
3). 設(shè)計:文檔架構(gòu)階段
4). 構(gòu)建:單元測試階段
5). 測試周期:錯誤修正,重復(fù)系統(tǒng)測試階段
6). 最后的測試和實施:代碼凍結(jié)階段
3.您做系統(tǒng)設(shè)計用何種工具?
解答:Visio, rational rose,power designer等
4. 什么是Web容器?
解答:容器就是一種服務(wù)程序,在服務(wù)器一個端口就有一個提供相應(yīng)服務(wù)的程序,而這個程序就是處理從客戶端發(fā)出的請求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是這樣的容器。
5. 運行時異常與一般異常有何異同?
解答:異常表示程序運行過程中可能出現(xiàn)的非正常狀態(tài),運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。
6. Hibernate中:不看數(shù)據(jù)庫,不看XML文件,不看查詢語句,怎么樣能知道表結(jié)構(gòu)?
解答:可以看與XML文件對應(yīng)的域模型。
java集合常見面試題篇二
1.存儲過程和函數(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語句等等),所以雖然他們的語法上很相似但用戶在使用他們的時候所需要完成的功能大部分情況下是不同的。
2.試述數(shù)據(jù)庫完整保護的主要任務(wù)和措施。
解答:數(shù)據(jù)庫的完整性保護也就是數(shù)據(jù)庫中數(shù)據(jù)正確性的維護。數(shù)據(jù)庫完整性包括三個內(nèi)容:實體完整性規(guī)則,參照物完整性規(guī)則以及用戶定義完整性規(guī)則。 前兩個是有DBMS自動處理。
實體完整性規(guī)則是說針對于基表中的關(guān)鍵字中屬性值不能為空值,是數(shù)據(jù)庫完整性的基本要求,主關(guān)鍵字和元組的唯一性對應(yīng)。
參照物完整性規(guī)則是不允許引用不存在的元組:即基表中的外關(guān)鍵字要么為空,要么關(guān)聯(lián)基表中必存在元組。
用戶定義完整性規(guī)則針對具體的數(shù)據(jù)環(huán)境由用戶具體設(shè)置的規(guī)則,它反應(yīng)了具體應(yīng)用中的語義要求。 一個完整性規(guī)則一般由下面三部分組成:完整性約束條件設(shè)置,完整性約束條件的檢
查以及完整性約束條件的處理.后兩部分在數(shù)據(jù)庫中一般有相應(yīng)的模塊處理。另外觸發(fā)器也可以做完整性的保護,但觸發(fā)器大量用于主動性領(lǐng)域。
3.請說明SQLServer中delete from tablea & truncate table tablea的區(qū)別
解答:兩者都可以用來刪除表中所有的記錄。區(qū)別在于:truncate是DDL操作,它移動HWK,使HWK值為0,不需要 rollback segment .而Delete是DML操作需要rollback segment 且花費較長時間.
4. Oracle安裝完成后,如何用命令行啟動和關(guān)閉數(shù)據(jù)庫?
解答:
打開:STARTUP [FORCE] [RESTRICT] [PFILE= filename] [OPEN [RECOVER][ database] | MOUNT | NOMOUNT] STARTUP OPEN:STARTUP缺省的參數(shù)就是OPEN,打開數(shù)據(jù)庫,允許數(shù)據(jù)庫的訪問。當(dāng)前實例的控制文件中所描述的所有文件都已經(jīng)打開。 STARTUP MOUNT:MOUNT數(shù)據(jù)庫,僅僅給DBA進行管理操作,不允許數(shù)據(jù)庫的用戶訪問。僅僅只是當(dāng)前實例的控制文件被打開,數(shù)據(jù)文件未打開。 STARTUP NOMOUNT:僅僅通過初始化文件,分配出SGA區(qū),啟動數(shù)據(jù)庫后臺進程,沒有打開控制文件和數(shù)據(jù)文件。不能訪問任何數(shù)據(jù)庫。 STARTUP PFILE= filename:以filename為初始化文件啟動數(shù)據(jù)庫,不是采用缺省初始化文件。 STARTUP FORCE:中止當(dāng)前數(shù)據(jù)庫的運行,并開始重新正常的啟動數(shù)據(jù)庫。 STARTUP RESTRICT:只允許具有RESTRICTED SESSION權(quán)限的用戶訪問數(shù)據(jù)庫。 STARTUP RECOVER:數(shù)據(jù)庫啟動,并開始介質(zhì)恢復(fù)
關(guān)閉
SHUTDOWN有四個參數(shù):NORMAL、TRANSACTIONAL、IMMEDIATE、ABORT。缺省不帶任何參數(shù)時表示是NORMAL。
命令SHUTDOWN NORMAL:不允許新的連接、等待會話結(jié)束、等待事務(wù)結(jié)束、做一個檢查點并關(guān)閉數(shù)據(jù)文件。啟動時不需要實例恢復(fù)。 SHUTDOWN TRANSACTIONAL:不允許新的連接、不等待會話結(jié)束、等待事務(wù)結(jié)束、做一個檢查點并關(guān)閉數(shù)據(jù)文件。啟動時不需要實例恢復(fù)。 SHUTDOWN IMMEDIATE:不允許新的連接、不等待會話結(jié)束、不等待事務(wù)結(jié)束、做一個檢查點并關(guān)閉數(shù)據(jù)文件。沒有結(jié)束的事務(wù)是自動rollback的。啟動時不需要實例恢復(fù)。 SHUTDOWN ABORT:不允許新的連接、不等待會話結(jié)束、不等待事務(wù)結(jié)束、不做檢查點且沒有關(guān)閉數(shù)據(jù)文件。啟動時自動進行實例恢復(fù)。 另外,對于NORMAL、TRANSACTIONAL、IMMEDIATE,DB Buffer Cache的內(nèi)容寫入了數(shù)據(jù)文件,沒有提交的事務(wù)被回滾,所有的資源被釋放,數(shù)據(jù)庫被“干凈”的關(guān)閉。 對于ABORT,DB Buffer Cache的內(nèi)容沒有寫入數(shù)據(jù)文件,沒有提交的事務(wù)也沒有回滾。數(shù)據(jù)庫沒有dismount和關(guān)閉,數(shù)據(jù)文件也沒有關(guān)閉。當(dāng)數(shù)據(jù)庫啟動時,需要通過redo log恢復(fù)數(shù)據(jù),通過回滾段對事務(wù)回滾,對資源進行釋放。
5. 類有哪三個基本特性?各特性的優(yōu)點?
解答:類具有封裝性、繼承性和多態(tài)性。
封裝性:類的封裝性為類的成員提供公有、缺省、保護和私有等多級訪問權(quán)限,目的是隱藏類中的私有變量和類中方法的實現(xiàn)細節(jié)。
繼承性:類的繼承性提供從已存在的類創(chuàng)建新類的機制,繼承(inheritance)使一個新類自動擁有被繼承類(父類)的全部可繼承的成員。
多態(tài)性:類的多態(tài)性提供類中方法執(zhí)行的多樣性,多態(tài)性有兩種表現(xiàn)形式:重載和覆蓋。
java集合常見面試題篇三
1.談?wù)剬ML的理解?說明Web應(yīng)用中Web.xml文件的作用?
解答:XML(Extensible Markup Language)即可擴展標記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標準通用標記語言)。Xml是Internet環(huán)境中跨平臺的,依賴于內(nèi)容的技術(shù),是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具。擴展標記語言XML是一種簡單的數(shù)據(jù)存儲語言,使用一系列簡單的標記描述數(shù)據(jù),而這些標記可以用方便的方式建立,雖然XML占用的空間比二進制數(shù)據(jù)要占用更多的空間,但XML極其簡單易于掌握和使用。
web.xml的作用是配置歡迎頁,servlet,filter,listener等的。
2.jsp有哪些內(nèi)置對象?作用分別是什么?(至少三個)
解答:
1)request表示HttpServletRequest對象。它包含了有關(guān)瀏覽器請求的信息,并且提供了幾個用于獲取cookie, header和session數(shù)據(jù)的有用的方法。
2)response表示HttpServletResponse對象,并提供了幾個用于設(shè)置送回 瀏覽器的響應(yīng)的方法(如cookies,頭信息等)。
3)out對象是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引擎和servlet環(huán)境的信息。
7)config表示一個javax.servlet.ServletConfig對象。該對象用于存取servlet實例的初始化參數(shù)。
8)page表示從該頁面產(chǎn)生的一個servlet實例。
9)exception 針對錯誤網(wǎng)頁,未捕捉的例外
3.事務(wù)是什么?有哪些屬性,并簡要說明這些屬性的含義。
解答:事務(wù)(Transaction)是訪問并可能更新數(shù)據(jù)庫中各種數(shù)據(jù)項的一個程序執(zhí)行單元(unit)。
事務(wù)通常由高級數(shù)據(jù)庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執(zhí)行所引起,并用形如begin transaction和end transaction語句(或函數(shù)調(diào)用)來界定。事務(wù)由事務(wù)開始(begin transaction)和事務(wù)結(jié)束(end transaction)之間執(zhí)行的全體操作組成。
事務(wù)應(yīng)該具有4個屬性:原子性、一致性、隔離性、持續(xù)性。這四個屬性通常稱為ACID特性。
原子性(atomicity)。一個事務(wù)是一個不可分割的工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。
一致性(consistency)。事務(wù)必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。一致性與原子性是密切相關(guān)的。
隔離性(isolation)。一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對并發(fā)的其他事務(wù)是隔離的,并發(fā)執(zhí)行的各個事務(wù)之間不能互相干擾。
持久性(durability)。持續(xù)性也稱永久性(permanence),指一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來的其他操作或故障不應(yīng)該對其有任何影響。
4、Collection 和 Collections的區(qū)別?
解答:Collection是java.util下的接口,它是各種集合的父接口,繼承于它的接口主要有Set 和List;Collections是個java.util下的類,是針對集合的幫助類,提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全化等操作。
5、HashMap與TreeMap的區(qū)別?
解答:HashMap通過hashcode對其內(nèi)容進行快速查找,而TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個有序的結(jié)果你就應(yīng)該使用TreeMap(HashMap中元素的排列順序是不固定的)。
6、ArrayList和Vector的區(qū)別?
解答:同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程不安全的,不是同步的;數(shù)據(jù)增長:當(dāng)需要增長時,Vector默認增長為原來一培,而ArrayList卻是原來的一半。
7、HashMap和Hashtable的區(qū)別?
解答:HashMap是Hashtable的輕量級實現(xiàn)(非線程安全的實現(xiàn)),他們都實現(xiàn)了Map接口,主要區(qū)別在于HashMap允許空(null)鍵值(key),由于非線程安全,效率上高于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 就必須為之提供同步。
8.請說出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ù)時只需要記錄本項的前后項即可,所以插入速度較快。
看了“java集合常見面試題”的人還看過:
1.
2.
3.
4.
5.