java基礎(chǔ)常見面試題
Java面試中,有哪些常見的面試題呢?你準(zhǔn)備好了嗎?提前了解面試問(wèn)題很有必要,以下是小編幫你們整理的java基礎(chǔ)常見面試題,一起來(lái)學(xué)習(xí)啦。
java基礎(chǔ)常見面試題(一)
1. 類有哪三個(gè)基本特性?各特性的優(yōu)點(diǎn)?
解答:類具有封裝性、繼承性和多態(tài)性。
封裝性:類的封裝性為類的成員提供公有、缺省、保護(hù)和私有等多級(jí)訪問(wèn)權(quán)限,目的是隱藏類中的私有變量和類中方法的實(shí)現(xiàn)細(xì)節(jié)。
繼承性:類的繼承性提供從已存在的類創(chuàng)建新類的機(jī)制,繼承(inheritance)使一個(gè)新類自動(dòng)擁有被繼承類(父類)的全部可繼承的成員。
多態(tài)性:類的多態(tài)性提供類中方法執(zhí)行的多樣性,多態(tài)性有兩種表現(xiàn)形式:重載和覆蓋。
2.談?wù)剬?duì)XML的理解?說(shuō)明Web應(yīng)用中Web.xml文件的作用?
解答:XML(Extensible Markup Language)即可擴(kuò)展標(biāo)記語(yǔ)言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言)。Xml是Internet環(huán)境中跨平臺(tái)的,依賴于內(nèi)容的技術(shù),是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具。擴(kuò)展標(biāo)記語(yǔ)言XML是一種簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)語(yǔ)言,使用一系列簡(jiǎn)單的標(biāo)記描述數(shù)據(jù),而這些標(biāo)記可以用方便的方式建立,雖然XML占用的空間比二進(jìn)制數(shù)據(jù)要占用更多的空間,但XML極其簡(jiǎn)單易于掌握和使用。
web.xml的作用是配置歡迎頁(yè),servlet,filter,listener等的。
3.jsp有哪些內(nèi)置對(duì)象?作用分別是什么?(至少三個(gè))
解答:
1)request表示HttpServletRequest對(duì)象。它包含了有關(guān)瀏覽器請(qǐng)求的信息,并且提供了幾個(gè)用于獲取cookie, header和session數(shù)據(jù)的有用的方法。
2)response表示HttpServletResponse對(duì)象,并提供了幾個(gè)用于設(shè)置送回 瀏覽器的響應(yīng)的方法(如cookies,頭信息等)。
3)out對(duì)象是javax.jsp.JspWriter的一個(gè)實(shí)例,并提供了幾個(gè)方法使你能用于向?yàn)g覽器回送輸出結(jié)果。
4)pageContext表示一個(gè)javax.servlet.jsp.PageContext對(duì)象。它是用于方便存取各種范圍的名字空間、servlet相關(guān)的對(duì)象的API,并且包裝了通用的servlet相關(guān)功能的方法。
5)session表示一個(gè)請(qǐng)求的javax.servlet.http.HttpSession對(duì)象。Session可以存貯用戶的狀態(tài)信息。
6)application 表示一個(gè)javax.servle.ServletContext對(duì)象。這有助于查找有關(guān)servlet引擎和servlet環(huán)境的信息。
7)config表示一個(gè)javax.servlet.ServletConfig對(duì)象。該對(duì)象用于存取servlet實(shí)例的初始化參數(shù)。
8)page表示從該頁(yè)面產(chǎn)生的一個(gè)servlet實(shí)例。
9)exception 針對(duì)錯(cuò)誤網(wǎng)頁(yè),未捕捉的例外
java基礎(chǔ)常見面試題(二)
1、事務(wù)是什么?有哪些屬性,并簡(jiǎn)要說(shuō)明這些屬性的含義。
解答:事務(wù)(Transaction)是訪問(wèn)并可能更新數(shù)據(jù)庫(kù)中各種數(shù)據(jù)項(xiàng)的一個(gè)程序執(zhí)行單元(unit)。
事務(wù)通常由高級(jí)數(shù)據(jù)庫(kù)操縱語(yǔ)言或編程語(yǔ)言(如SQL,C++或Java)書寫的用戶程序的執(zhí)行所引起,并用形如begin transaction和end transaction語(yǔ)句(或函數(shù)調(diào)用)來(lái)界定。事務(wù)由事務(wù)開始(begin transaction)和事務(wù)結(jié)束(end transaction)之間執(zhí)行的全體操作組成。
事務(wù)應(yīng)該具有4個(gè)屬性:原子性、一致性、隔離性、持續(xù)性。這四個(gè)屬性通常稱為ACID特性。
原子性(atomicity)。一個(gè)事務(wù)是一個(gè)不可分割的工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。
一致性(consistency)。事務(wù)必須是使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。一致性與原子性是密切相關(guān)的。
隔離性(isolation)。一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)并發(fā)的其他事務(wù)是隔離的,并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾。
持久性(durability)。持續(xù)性也稱永久性(permanence),指一個(gè)事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來(lái)的其他操作或故障不應(yīng)該對(duì)其有任何影響。
2、Collection 和 Collections的區(qū)別?
解答:Collection是java.util下的接口,它是各種集合的父接口,繼承于它的接口主要有Set 和List;Collections是個(gè)java.util下的類,是針對(duì)集合的幫助類,提供一系列靜態(tài)方法實(shí)現(xiàn)對(duì)各種集合的搜索、排序、線程安全化等操作。
3、HashMap與TreeMap的區(qū)別?
解答:HashMap通過(guò)hashcode對(duì)其內(nèi)容進(jìn)行快速查找,而TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個(gè)有序的結(jié)果你就應(yīng)該使用TreeMap(HashMap中元素的排列順序是不固定的)。
4、ArrayList和Vector的區(qū)別?
解答:同步性:Vector是線程安全的,也就是說(shuō)是同步的,而ArrayList是線程不安全的,不是同步的;數(shù)據(jù)增長(zhǎng):當(dāng)需要增長(zhǎng)時(shí),Vector默認(rèn)增長(zhǎng)為原來(lái)一培,而ArrayList卻是原來(lái)的一半。
java基礎(chǔ)常見面試題(三)
1、HashMap和Hashtable的區(qū)別?
解答:HashMap是Hashtable的輕量級(jí)實(shí)現(xiàn)(非線程安全的實(shí)現(xiàn)),他們都實(shí)現(xiàn)了Map接口,主要區(qū)別在于HashMap允許空(null)鍵值(key),由于非線程安全,效率上高于Hashtable。HashMap允許將null作為一個(gè)entry的key或者value,而Hashtable不允許。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。
因?yàn)閏ontains方法容易讓人引起誤解。Hashtable繼承自Dictionary類,而HashMap是Java1.2引進(jìn)的Map interface的一個(gè)實(shí)現(xiàn)。最大的不同是,Hastable的方法是synchronize的,而HashMap不是,在多個(gè)線程訪問(wèn)Hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap 就必須為之提供同步。
2.請(qǐng)說(shuō)出ArrayList,Vector, LinkedList的存儲(chǔ)性能和特性
解答:ArrayList和Vector都是使用數(shù)組方式存儲(chǔ)數(shù)據(jù),此數(shù)組元素?cái)?shù)大于實(shí)際存儲(chǔ)的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號(hào)索引元素,但是插入元素要涉及數(shù)組元素移動(dòng)等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實(shí)現(xiàn)存儲(chǔ),按序號(hào)索引數(shù)據(jù)需要進(jìn)行前向或后向遍歷,但是插入數(shù)據(jù)時(shí)只需要記錄本項(xiàng)的前后項(xiàng)即可,所以插入速度較快。
3.請(qǐng)談?wù)剬?duì)SOA的認(rèn)識(shí)。
解答:面向服務(wù)的體系結(jié)構(gòu)(Service-Oriented Architecture,SOA)是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過(guò)這些服務(wù)之間定義良好的接口和契約聯(lián)系起來(lái)。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務(wù)可以一種統(tǒng)一和通用的方式進(jìn)行交互。
4.簡(jiǎn)要描述如何結(jié)合struts、hibernate、spring開發(fā)Web應(yīng)用?
解答:Struts可以將jsp頁(yè)面的表單關(guān)聯(lián)起來(lái),就是把JSP頁(yè)面的表單數(shù)據(jù)封裝成javaBean,這樣的話,在action中你再也不需要使用傳統(tǒng)的request.getParameter(“name”);還有struts有一個(gè)控制器,你在struts編程中的控制器(XxxAction)都是繼承總的ActionServlet,它能集中處理請(qǐng)求,然后轉(zhuǎn)到相關(guān)的頁(yè)面。還有struts的表單驗(yàn)證組件,不用你寫js驗(yàn)證了,只需要你配置一下文件就可以了。另外struts的令牌機(jī)制可以防表單重復(fù)提交。
Spring 是一個(gè)輕量級(jí)容器,非侵入性.包含依賴注入,AOP等。它是為了解決企業(yè)應(yīng)用程序開發(fā)復(fù)雜性而創(chuàng)建的??蚣艿闹饕獌?yōu)勢(shì)之一就是其分層架構(gòu),分層架構(gòu)允許您選擇使用哪一個(gè)組件,同時(shí)為 J2EE 應(yīng)用程序開發(fā)提供集成的框架。
Hibernate:它可以讓我們以O(shè)O的方式操作數(shù)據(jù)庫(kù),這讓我們看到了hibernate的強(qiáng)大之處,體驗(yàn)到操作數(shù)據(jù)的方便。但hibernate最耀眼之處是hibernate的緩存機(jī)制,而不是以O(shè)O的方式操作數(shù)據(jù)庫(kù)。Hibernate的緩存機(jī)制不外乎是一級(jí)緩存session,二級(jí)緩存sessionFactory,和第三方緩存如ehcache。也就是hibernate的最強(qiáng)大的地方是它的緩存,理解了這個(gè)才能真正的理解hibernate,Hibernate的命名查詢/命名參數(shù)查詢,就是將hql語(yǔ)句放在一個(gè)單獨(dú)的xml文件之中,它仍然讓人們以面向?qū)ο蟮姆绞饺ゲ倏v數(shù)據(jù),而不用在以O(shè)O的方式寫著代碼的同時(shí),然后再轉(zhuǎn)變思維,用面向關(guān)系的方式去寫那些sql語(yǔ)句。但hibernate不僅做了這些,它的native sql查詢方式,完全滿足sql語(yǔ)句的偏愛者,它像ibatis一樣,將sql語(yǔ)句放在配置文件之中。
看了“java基礎(chǔ)常見面試題”