大數據面試題(四)
281.列舉常見的運行時異常
答:ClassCastException(類轉換異常)
比如 Object obj=new Object(); String s=(String)obj;?
IndexOutOfBoundsException(下標越界異常)
NullPointerException(空指針異常)
ArrayStoreException(數據存儲異常,操作數組時類型不一致)
BufferOverflowException(IO操作時出現(xiàn)的緩沖區(qū)上溢異常)
InputMismatchException(輸入類型不匹配異常)
ArithmeticException(算術異常)
注意:運行時異常都是RuntimeException子類異常。
282.下面關于 Java.lang.Exception類的說法正確的是()
A.繼承自 Throwable
B.不支持Serializable
C.繼承自 AbstractSet
D.繼承自FitelnputStream
答案:A
分析:Throwable是Exception和Error的父類,Exception雖然沒有實現(xiàn)Serializable接口,但是其父類Throwable已經實現(xiàn)了該接口,因此Exception也支持Serializable。
283.Unsupported major.minor version 52是什么異常,怎么造成的,如何解決?
答:問題的根本原因是工程中某個jar包的版本(jar包編譯時的所用的jdk版本)高于工程build path中jdk的版本,這個是不兼容的! 編程中遇到此異常Unsupported major.minor version 52.0(根據版本號,這里可以為其他數值,52是1.8jdk jar包與 1.8以下低版本jdk不匹配),在將build path中jdk的版本調整與jar包匹配后,解決異常。
284.try{}里有一個return語句,那么緊跟在這個try后的finally{}里的code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后?
答:會執(zhí)行,在方法返回調用者前執(zhí)行。Java允許在finally中改變返回值的做法是不好的,因為如果存在finally代碼塊,try中的return語句不會立馬返回調用者,而是記錄下返回值待finally代碼塊執(zhí)行完畢之后再向調用者返回其值,然后如果在finally中修改了返回值,這會對程序造成很大的困擾,C#中就從語法上規(guī)定不能做這樣的事。?
(也許你的答案是在return之前,但往更細地說,我的答案是在return中間執(zhí)行,請看下面程序代碼的運行結果:

執(zhí)行結果
運行結果是1,為什么呢?主函數調用子函數并得到結果的過程,好比主函數準備一個空罐子,當子函數要返回結果時,先把結果放在罐子里,然后再將程序邏輯返回到主函數。所謂返回,就是子函數說,我不運行了,你主函數繼續(xù)運行吧,這沒什么結果可言,結果是在說這話之前放進罐子里的。
285.Java 語言如何進行異常處理,關鍵字:throws、throw、try、catch、finally分別如何使用?
答:Java 通過面向對象的方法進行異常處理,把各種不同的異常進行分類,并提供了良好的接口。在Java 中,每個異常都是一個對象,它是Throwable 類或其子類的實例。當一個方法出現(xiàn)異常后便拋出一個異常對象,該對象中包含有異常信息,調用這個對象的方法可以捕獲到這個異常并進行處理。Java 的異常處理是通過5 個關鍵詞來實現(xiàn)的:try、catch、throw、throws和finally。一般情況下是用try來執(zhí)行一段程序,如果出現(xiàn)異常,系統(tǒng)會拋出(throw)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最后(finally)由缺省處理器來處理;try用來指定一塊預防所有“異常”的程序;catch 子句緊跟在try塊后面,用來指定你想要捕捉的“異?!钡念愋停籺hrow 語句用來明確地拋出一個“異?!?;throws用來標明一個成員函數可能拋出的各種“異常”;finally 為確保一段代碼不管發(fā)生什么“異常”都被執(zhí)行一段代碼;可以在一個成員函數調用的外面寫一個try語句,在這個成員函數內部寫另一個try語句保護其他代碼。每當遇到一個try 語句,“異常”的框架就放到棧上面,直到所有的try語句都完成。如果下一級的try語句沒有對某種“異?!边M行處理,棧就會展開,直到遇到有處理這種“異?!钡膖ry 語句。?
286.運行時異常與受檢異常有何異同?
答:異常表示程序運行過程中可能出現(xiàn)的非正常狀態(tài),運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤,只要程序設計得沒有問題通常就不會發(fā)生。受檢異常跟程序運行的上下文環(huán)境有關,即使程序設計無誤,仍然可能因使用的問題而引發(fā)。Java編譯器要求方法必須聲明拋出可能發(fā)生的受檢異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。異常和繼承一樣,是面向對象程序設計中經常被濫用的東西,神作《Effective Java》中對異常的使用給出了以下指導原則:
不要將異常處理用于正常的控制流(設計良好的API不應該強迫它的調用者為了正常的控制流而使用異常)
對可以恢復的情況使用受檢異常,對編程錯誤使用運行時異常
避免不必要的使用受檢異常(可以通過一些狀態(tài)檢測手段來避免異常發(fā)生)
優(yōu)先使用標準的異常
每個方法拋出的異常都要有文檔
保持異常的原子性
不要在catch中忽略掉捕獲到的異常?
(異常表示程序運行過程中可能出現(xiàn)的非正常狀態(tài),運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。)
287.類ExampleA 繼承Exception,類ExampleB 繼承ExampleA
有如下代碼片斷:

請問執(zhí)行此段代碼的輸出是什么?
答:輸出:ExampleA。(根據里氏代換原則[能使用父類型的地方一定能使用子類型],抓取ExampleA類型異常的catch塊能夠抓住try塊中拋出的ExampleB類型的異常)
補充: 比此題略復雜的一道面試題如下所示(此題的出處是《Java編程思想》),說出你的答案吧!

輸出為:
Caught Annoyance
Caught Sneeze
Hello World!
288.Error和Exception的區(qū)別

Error類,表示僅靠程序本身無法恢復的嚴重錯誤,比如說內存溢出、動態(tài)鏈接異常、虛擬機錯誤。應用程序不應該拋出這種類型的對象。假如出現(xiàn)這種錯誤,除了盡力使程序安全退出外,在其他方面是無能為力的。所以在進行程序設計時,應該更關注Exception類。
Exception類,由Java應用程序拋出和處理的非嚴重錯誤,比如所需文件沒有找到、零作除數,數組下標越界等。它的各種不同子類分別對應不同類型異常??煞譃閮深悾篊hecked異常和Runtime異常
289.Java異常處理try-catch-finally的執(zhí)行過程
try-catch-finally程序塊的執(zhí)行流程以及執(zhí)行結果比較復雜。
基本執(zhí)行過程如下:
1)程序首先執(zhí)行可能發(fā)生異常的try語句塊。
2)如果try語句沒有出現(xiàn)異常則執(zhí)行完后跳至finally語句塊執(zhí)行;
3)如果try語句出現(xiàn)異常,則中斷執(zhí)行并根據發(fā)生的異常類型跳至相應的catch語句塊執(zhí)行處理。
4)catch語句塊可以有多個,分別捕獲不同類型的異常。
5)catch語句塊執(zhí)行完后程序會繼續(xù)執(zhí)行finally語句塊。
finally語句是可選的,如果有的話,則不管是否發(fā)生異常,finally語句都會被執(zhí)行。需要注意的是即使try和catch塊中存在return語句,finally語句也會執(zhí)行,是在執(zhí)行完finally語句后再通過return退出。
290.異常處理中throws和throw的區(qū)別
1)作用不同:
throw用于程序員自行產生并拋出異常;
throws用于聲明在該方法內拋出了異常
2) 使用的位置不同:
throw位于方法體內部,可以作為單獨語句使用;
throws必須跟在方法參數列表的后面,不能單獨使用。
3)內容不同:
throw拋出一個異常對象,且只能是一個;
throws后面跟異常類,而且可以有多個。
Web方面相關:
291.WEB應用中如果有.class和.jar類型的文件一般分別應該放在什么位置?
答:.class文件放在WEB-INF/classes文件下,.jar文件放在WEB-INF/lib文件夾下
292.元素中有一個輸入框(< input type='text' name=”username”id=”username”value=””/>,請用JavaScript語言寫一行代碼,取得這個輸入框中的值。
答:document.getElementById(“username”).value;
293.簡單描述一下Servlet與JSP的的相同點和區(qū)別點。
區(qū)別:
JSP是在HTML代碼里寫JAVA代碼,框架是HTML;而Servlet是在JAVA代碼中寫HTML代碼,本身是個JAVA類。
JSP使人們把顯示和邏輯分隔成為可能,這意味著兩者的開發(fā)可并行進行;而Servlet并沒有把兩者分開。
Servlet獨立地處理靜態(tài)表示邏輯與動態(tài)業(yè)務邏輯.這樣,任何文件的變動都需要對此服務程序重新編譯;JSP允許用特殊標簽直接嵌入到HTML頁面, HTML內容與JAVA內容也可放在單獨文件中,HTML內容的任何變動會自動編譯裝入到服務程序.
Servlet需要在web.xml中配置,而JSP無需配置。
目前JSP主要用在視圖層,負責顯示,而Servlet主要用在控制層,負責調度
聯(lián)系:
都是Sun公司推出的動態(tài)網頁技術。
先有Servlet,針對Servlet缺點推出JSP。JSP是Servlet的一種特殊形式,每個JSP頁面就是一個Servlet實例——JSP頁面由系統(tǒng)翻譯成Servlet,Servlet再負責響應用戶請求。
294.請簡單描述下幾個您熟悉JavaScript庫,它們有哪些作用和特點?
JavaScript 高級程序設計(特別是對瀏覽器差異的復雜處理),通常很困難也很耗時。為了應對這些調整,許多的 JavaScript庫應運而生。這些 JavaScript 庫常被稱為 JavaScript 框架。
jQuery:
Ext JS - 可定制的 widget,用于構建富因特網應用程序(rich Internet applications)。
Prototype
MooTools。
YUI - Yahoo! User Interface Framework,涵蓋大量函數的大型庫,從簡單的 JavaScript 功能到完整的 internet widget。
295.簡單描述HTML,CSS,Javascript在Web開發(fā)中分別起什么作用?
1、什么是HTML(超文本標記語言 Hyper Text Markup Language),HTML 是用來描述網頁的一種語言。
2、CSS(層疊樣式表 Cascading Style Sheets),樣式定義如何顯示 HTML 元素,語法為:selector {property:value} (選擇符 {屬性:值})
3、JavaScript是一種腳本語言,其源代碼在發(fā)往客戶端運行之前不需經過編譯,而是將文本格式的字符代碼發(fā)送給瀏覽器由瀏覽器解釋運行
對于一個網頁,HTML定義網頁的結構,CSS描述網頁的樣子,JavaScript設置一個很經典的例子是說HTML就像 一個人的骨骼、器官,而CSS就是人的皮膚,有了這兩樣也就構成了一個植物人了,加上javascript這個植物人就可以對外界刺激做出反應,可以思 考、運動、可以給自己整容化妝(改變CSS)等等,成為一個活生生的人。
如果說HTML是肉身、CSS就是皮相、Javascript就是靈魂。沒有Javascript,HTML+CSS是植物人,沒有Javascript、CSS是個毀容的植物人。
如果說HTML是建筑師,CSS就是干裝修的,Javascript是魔術師。
296.當DOM加載完成后要執(zhí)行的函數,下面哪個是正確的()
A.JQuery(expression, [context])B.JQuery(html, [ownerDocument])C.JQuery(callback)
答案:C
297.舉例說明JAVA中如何解析xml,不同方式有和優(yōu)缺點?
答:1. DOM(Document Object Model)
DOM是用與平臺和語言無關的方式表示XML文檔的官方W3C標準。DOM是以層次結構組織的節(jié)點或信息片斷的集合。這個層次結構允許開發(fā)人員在樹中尋找特定信息。分析該結構通常需要加載整個文檔和構造層次結構,然后才能做任何工作。由于它是基于信息層次的,因而DOM被認為是基于樹或基于對象的。
【優(yōu)點】
①允許應用程序對數據和結構做出更改。
②訪問是雙向的,可以在任何時候在樹中上下導航,獲取和操作任意部分的數據。
【缺點】
①通常需要加載整個XML文檔來構造層次結構,消耗資源大。
2. SAX(Simple API for XML)
SAX處理的優(yōu)點非常類似于流媒體的優(yōu)點。分析能夠立即開始,而不是等待所有的數據被處理。而且,由于應用程序只是在讀取數據時檢查數據,因此不需要將數據存儲在內存中。這對于大型文檔來說是個巨大的優(yōu)點。事實上,應用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。一般來說,SAX還比它的替代者DOM快許多。
選擇DOM還是選擇SAX? 對于需要自己編寫代碼來處理XML文檔的開發(fā)人員來說, 選擇DOM還是SAX解析模型是一個非常重要的設計決策。 DOM采用建立樹形結構的方式訪問XML文檔,而SAX采用的是事件模型。
DOM解析器把XML文檔轉化為一個包含其內容的樹,并可以對樹進行遍歷。用DOM解析模型的優(yōu)點是編程容易,開發(fā)人員只需要調用建樹的指令,然后利用navigation APIs訪問所需的樹節(jié)點來完成任務。可以很容易的添加和修改樹中的元素。然而由于使用DOM解析器的時候需要處理整個XML文檔,所以對性能和內存的要求比較高,尤其是遇到很大的XML文件的時候。由于它的遍歷能力,DOM解析器常用于XML文檔需要頻繁的改變的服務中。
SAX解析器采用了基于事件的模型,它在解析XML文檔的時候可以觸發(fā)一系列的事件,當發(fā)現(xiàn)給定的tag的時候,它可以激活一個回調方法,告訴該方法制定的標簽已經找到。SAX對內存的要求通常會比較低,因為它讓開發(fā)人員自己來決定所要處理的tag.特別是當開發(fā)人員只需要處理文檔中所包含的部分數據時,SAX這種擴展能力得到了更好的體現(xiàn)。但用SAX解析器的時候編碼工作會比較困難,而且很難同時訪問同一個文檔中的多處不同數據。
【優(yōu)勢】
①不需要等待所有數據都被處理,分析就能立即開始。
②只在讀取數據時檢查數據,不需要保存在內存中。
③可以在某個條件得到滿足時停止解析,不必解析整個文檔。
④效率和性能較高,能解析大于系統(tǒng)內存的文檔。
【缺點】
①需要應用程序自己負責TAG的處理邏輯(例如維護父/子關系等),文檔越復雜程序就越復雜。
②單向導航,無法定位文檔層次,很難同時訪問同一文檔的不同部分數據,不支持XPath。
3. JDOM(Java-based Document Object Model)
JDOM的目的是成為Java特定文檔模型,它簡化與XML的交互并且比使用DOM實現(xiàn)更快。由于是第一個Java特定模型,JDOM一直得到大力推廣和促進。正在考慮通過“Java規(guī)范請求JSR-102”將它最終用作“Java標準擴展”。從2000年初就已經開始了JDOM開發(fā)。
JDOM與DOM主要有兩方面不同。首先,JDOM僅使用具體類而不使用接口。這在某些方面簡化了API,但是也限制了靈活性。第二,API大量使用了Collections類,簡化了那些已經熟悉這些類的Java開發(fā)者的使用。
JDOM文檔聲明其目的是“使用20%(或更少)的精力解決80%(或更多)Java/XML問題”(根據學習曲線假定為20%)。JDOM對于大多數Java/XML應用程序來說當然是有用的,并且大多數開發(fā)者發(fā)現(xiàn)API比DOM容易理解得多。JDOM還包括對程序行為的相當廣泛檢查以防止用戶做任何在XML中無意義的事。然而,它仍需要您充分理解XML以便做一些超出基本的工作(或者甚至理解某些情況下的錯誤)。這也許是比學習DOM或JDOM接口都更有意義的工作。
JDOM自身不包含解析器。它通常使用SAX2解析器來解析和驗證輸入XML文檔(盡管它還可以將以前構造的DOM表示作為輸入)。它包含一些轉換器以將JDOM表示輸出成SAX2事件流、DOM模型或XML文本文檔。JDOM是在Apache許可證變體下發(fā)布的開放源碼。
【優(yōu)點】
①使用具體類而不是接口,簡化了DOM的API。
②大量使用了Java集合類,方便了Java開發(fā)人員。
【缺點】
①沒有較好的靈活性。
②性能較差。
4. DOM4J(Document Object Model for Java)
雖然DOM4J代表了完全獨立的開發(fā)結果,但最初,它是JDOM的一種智能分支。它合并了許多超出基本XML文檔表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文檔或流化文檔的基于事件的處理。它還提供了構建文檔表示的選項,它通過DOM4J API和標準DOM接口具有并行訪問功能。從2000下半年開始,它就一直處于開發(fā)之中。
為支持所有這些功能,DOM4J使用接口和抽象基本類方法。DOM4J大量使用了API中的Collections類,但是在許多情況下,它還提供一些替代方法以允許更好的性能或更直接的編碼方法。直接好處是,雖然DOM4J付出了更復雜的API的代價,但是它提供了比JDOM大得多的靈活性。
在添加靈活性、XPath集成和對大文檔處理的目標時,DOM4J的目標與JDOM是一樣的:針對Java開發(fā)者的易用性和直觀操作。它還致力于成為比JDOM更完整的解決方案,實現(xiàn)在本質上處理所有Java/XML問題的目標。在完成該目標時,它比JDOM更少強調防止不正確的應用程序行為。
DOM4J是一個非常非常優(yōu)秀的Java XML API,具有性能優(yōu)異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件。如今你可以看到越來越多的Java軟件都在使用DOM4J來讀寫XML,特別值得一提的是連Sun的JAXM也在用DOM4J.
【優(yōu)點】
①大量使用了Java集合類,方便Java開發(fā)人員,同時提供一些提高性能的替代方法。
②支持XPath。
③有很好的性能。
【缺點】
①大量使用了接口,API較為復雜。
二、比較
1. DOM4J性能最好,連Sun的JAXM也在用DOM4J。目前許多開源項目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J來讀取XML配置文件。如果不考慮可移植性,那就采用DOM4J.
2. JDOM和DOM在性能測試時表現(xiàn)不佳,在測試10M文檔時內存溢出,但可移植。在小文檔情況下還值得考慮使用DOM和JDOM.雖然JDOM的開發(fā)者已經說明他們期望在正式發(fā)行版前專注性能問題,但是從性能觀點來看,它確實沒有值得推薦之處。另外,DOM仍是一個非常好的選擇。DOM實現(xiàn)廣泛應用于多種編程語言。它還是許多其它與XML相關的標準的基礎,因為它正式獲得W3C推薦(與基于非標準的Java模型相對),所以在某些類型的項目中可能也需要它(如在JavaScript中使用DOM)。
3. SAX表現(xiàn)較好,這要依賴于它特定的解析方式-事件驅動。一個SAX檢測即將到來的XML流,但并沒有載入到內存(當然當XML流被讀入時,會有部分文檔暫時隱藏在內存中)。
我的看法:如果XML文檔較大且不考慮移植性問題建議采用DOM4J;如果XML文檔較小則建議采用JDOM;如果需要及時處理而不需要保存數據則考慮SAX。但無論如何,還是那句話:適合自己的才是最好的,如果時間允許,建議大家講這四種方法都嘗試一遍然后選擇一種適合自己的即可。
298.char型變量中能不能存儲一個中文漢字?
答:1.java采用unicode編碼,2個字節(jié)(16位)來表示一個字符, 無論是漢字還是數字,字母,或其他語言都可以存儲。
2.char 在java中是2個字節(jié),所以可以存儲中文
299.一個類可以實現(xiàn)多個接口,但只能繼承一個抽象類。
下面接著再說說兩者在應用上的區(qū)別:
接口更多的是在系統(tǒng)架構設計方法發(fā)揮作用,主要用于定義模塊之間的通信契約。而抽象類在代碼實現(xiàn)方面發(fā)揮作用,可以實現(xiàn)代碼的重用,例如,模板方法設計模式是抽象類的一個典型應用,假設某個項目的所有Servlet類都要用相同的方式進行權限判斷、記錄訪問日志和處理異常,那么就可以定義一個抽象的基類,讓所有的Servlet都繼承這個抽象基類,在抽象基類的service方法中完成權限判斷、記錄訪問日志和處理異常的代碼,在各個子類中只是完成各自的業(yè)務邏輯代碼,偽代碼如下:
、

?
備注:這道題的思路是先從總體解釋抽象類和接口的基本概念,然后再比較兩者的語法細節(jié),最后再說兩者的應用區(qū)別。比較兩者語法細節(jié)區(qū)別的條理是:先從一個類中的構造方法、普通成員變量和方法(包括抽象方法),靜態(tài)變量和方法,繼承性等6個方面逐一去比較回答,接著從第三者繼承的角度的回答,特別是最后用了一個典型的例子來展現(xiàn)自己深厚的技術功底。
300.比較一下Java 和JavaSciprt
答:JavaScript 與Java是兩個公司開發(fā)的不同的兩個產品。Java 是原Sun 公司推出的面向對象的程序設計語言,特別適合于互聯(lián)網應用程序開發(fā);而JavaScript是Netscape公司的產品,為了擴展Netscape瀏覽器的功能而開發(fā)的一種可以嵌入Web頁面中運行的基于對象和事件驅動的解釋性語言,它的前身是LiveScript;而Java 的前身是Oak語言。
下面對兩種語言間的異同作如下比較:
1)基于對象和面向對象:Java是一種真正的面向對象的語言,即使是開發(fā)簡單的程序,必須設計對象;JavaScript是種腳本語言,它可以用來制作與網絡無關的,與用戶交互作用的復雜軟件。它是一種基于對象(Object-Based)和事件驅動(Event-Driven)的編程語言。因而它本身提供了非常豐富的內部對象供設計人員使用;
2)解釋和編譯:Java 的源代碼在執(zhí)行之前,必須經過編譯;JavaScript 是一種解釋性編程語言,其源代碼不需經過編譯,由瀏覽器解釋執(zhí)行;
3)強類型變量和類型弱變量:Java采用強類型變量檢查,即所有變量在編譯之前必須作聲明;JavaScript中變量聲明,采用其弱類型。即變量在使用前不需作聲明,而是解釋器在運行時檢查其數據類型;
4)代碼格式不一樣。
補充:上面列出的四點是原來所謂的標準答案中給出的。其實Java和JavaScript最重要的區(qū)別是一個是靜態(tài)語言,一個是動態(tài)語言。目前的編程語言的發(fā)展趨勢是函數式語言和動態(tài)語言。在Java中類(class)是一等公民,而JavaScript中函數(function)是一等公民。對于這種問題,在面試時還是用自己的語言回答會更加靠譜。?
301.什么時候用assert?
答:assertion(斷言)在軟件開發(fā)中是一種常用的調試方式,很多開發(fā)語言中都支持這種機制。一般來說,assertion用于保證程序最基本、關鍵的正確性。assertion檢查通常在開發(fā)和測試時開啟。為了提高性能,在軟件發(fā)布后, assertion檢查通常是關閉的。在實現(xiàn)中,斷言是一個包含布爾表達式的語句,在執(zhí)行這個語句時假定該表達式為true;如果表達式計算為false,那么系統(tǒng)會報告一個AssertionError。
斷言用于調試目的:
assert(a > 0); // throws an AssertionError if a <= 0
斷言可以有兩種形式:
assert Expression1;
assert Expression1 : Expression2 ;
Expression1 應該總是產生一個布爾值。
Expression2 可以是得出一個值的任意表達式;這個值用于生成顯示更多調試信息的字符串消息。
斷言在默認情況下是禁用的,要在編譯時啟用斷言,需使用source 1.4 標記:
javac -source 1.4 Test.java
要在運行時啟用斷言,可使用-enableassertions 或者-ea 標記。
要在運行時選擇禁用斷言,可使用-da 或者-disableassertions 標記。
要在系統(tǒng)類中啟用斷言,可使用-esa 或者-dsa 標記。還可以在包的基礎上啟用或者禁用斷言??梢栽陬A計正常情況下不會到達的任何位置上放置斷言。斷言可以用于驗證傳遞給私有方法的參數。不過,斷言不應該用于驗證傳遞給公有方法的參數,因為不管是否啟用了斷言,公有方法都必須檢查其參數。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試后置條件。另外,斷言不應該以任何方式改變程序的狀態(tài)。?
302.UML是什么?UML中有哪些圖?
答:UML是統(tǒng)一建模語言(Unified Modeling Language)的縮寫,它發(fā)表于1997年,綜合了當時已經存在的面向對象的建模語言、方法和過程,是一個支持模型化和軟件系統(tǒng)開發(fā)的圖形化語言,為軟件開發(fā)的所有階段提供模型化和可視化支持。使用UML可以幫助溝通與交流,輔助應用設計和文檔的生成,還能夠闡釋系統(tǒng)的結構和行為。UML定義了多種圖形化的符號來描述軟件系統(tǒng)部分或全部的靜態(tài)結構和動態(tài)結構,包括:用例圖(use case diagram)、類圖(class diagram)、時序圖(sequence diagram)、協(xié)作圖(collaboration diagram)、狀態(tài)圖(statechart diagram)、活動圖(activity diagram)、構件圖(component diagram)、部署圖(deployment diagram)等。在這些圖形化符號中,有三種圖最為重要,分別是:用例圖(用來捕獲需求,描述系統(tǒng)的功能,通過該圖可以迅速的了解系統(tǒng)的功能模塊及其關系)、類圖(描述類以及類與類之間的關系,通過該圖可以快速了解系統(tǒng))、時序圖(描述執(zhí)行特定任務時對象之間的交互關系以及執(zhí)行順序,通過該圖可以了解對象能接收的消息也就是說對象能夠向外界提供的服務)。
用例圖:

?

?

303.XML 文檔定義有幾種形式?它們之間有何本質區(qū)別?解析XML 文檔有哪幾種方式?
答: XML文檔定義分為DTD和Schema兩種形式;其本質區(qū)別在于Schema本身也是一個XML文件,可以被XML解析器解析。對XML的解析主要有DOM(文檔對象模型)、SAX、StAX(JDK 1.6中引入的新的解析XML的方式,Streaming API for XML) 等,其中DOM處理大型文件時其性能下降的非常厲害,這個問題是由DOM 的樹結構所造成的,這種結構占用的內存較多,而且DOM 必須在解析文件之前把整個文檔裝入內存,適合對XML 的隨機訪問(典型的用空間換取時間的策略);SAX是事件驅動型的XML解析方式,它順序讀取XML文件,不需要一次全部裝載整個文件。當遇到像文件開頭,文檔結束,或者標簽開頭與標簽結束時,它會觸發(fā)一個事件,用戶通過在其回調事件中寫入處理代碼來處理XML文件,適合對XML 的順序訪問;如其名稱所暗示的那樣,StAX把重點放在流上。實際上,StAX與其他方法的區(qū)別就在于應用程序能夠把XML作為一個事件流來處理。將XML作為一組事件來處理的想法并不新穎(事實上 SAX 已經提出來了),但不同之處在于StAX允許應用程序代碼把這些事件逐個拉出來,而不用提供在解析器方便時從解析器中接收事件的處理程序。?
304.你在項目中哪些地方用到了XML?
答: XML的主要作用有兩個方面:數據交換(曾經被稱為業(yè)界數據交換的事實標準,現(xiàn)在此項功能在很多時候都被JSON取代)和信息配置。在做數據交換時,XML將數據用標簽組裝成起來,然后壓縮打包加密后通過網絡傳送給接收者,接收解密與解壓縮后再從XML文件中還原相關信息進行處理。目前很多軟件都使用XML來存儲配置信息,很多項目中我們通常也會將作為配置的硬代碼(hard code)寫在XML文件中,Java的很多框架也是這么做的。?
305.用JavaScript實現(xiàn)用正則表達式驗證,某個字符串是合法的6位數字的郵編的函數

306.請使用JQuery將頁面上的所有元素邊框設置為2pix寬的虛線?
$(“*”).css(“border”,”2px dashed”)
307.如何設定JQuery異步調用還是同步調用?
答案:調用jQuery中的ajax函數,設置其async屬性來表明是異步還是同步,如下:
$.ajax({
async:true//表示異步,false表示同步
})
308.說出3條以上firefox和IE的瀏覽器兼容問題?
答案:兼容firefox的 outerHTML,F(xiàn)F中沒有outerHtml的方法
IE下,可以使用()或[]獲取集合類對象;Firefox下,只能使用[]獲取集合類對象.解決方法:統(tǒng)一使用[]獲取集合類對象.
IE下,可以使用獲取常規(guī)屬性的方法來獲取自定義屬性,也可以使用getAttribute()獲取自定義屬性;Firefox下,只能使用getAttribute()獲取自定義屬性.解決方法:統(tǒng)一通過getAttribute()獲取自定義屬性
309.請用Jquery語言寫出ajax請求或者post請求代碼

310.body中的onload ()函數和jQuery中document.ready()有什么區(qū)別?
答案:ready 事件的觸發(fā),表示文檔結構已經加載完成(不包含圖片等非文字媒體文件)
onload 事件的觸發(fā),表示頁面包含圖片等文件在內的所有元素都加載完成。
311.jQuery中有哪幾種類型的選擇器?
答案:
基本選擇器
層次選擇器
基本過濾選擇器
內容過濾選擇器
可見性過濾選擇器
屬性過濾選擇器
子元素過濾選擇器
表單選擇器
表單過濾選擇器
312.EasyUI中datagrid刷新當前數據的方法?
答案:使用reload()即可
313.分別寫出一個div居中和其中的內容居中的css屬性設置
Div居中:
margin:auto 0px;
內容居中:
text-align:center;
314.概述一下session與cookie的區(qū)別
答案:
存儲角度:
Session是服務器端的數據存儲技術,cookie是客戶端的數據存儲技術
解決問題角度:
Session解決的是一個用戶不同請求的數據共享問題,cookie解決的是不同請求的請求數據的共享問題
生命周期角度:
Session的id是依賴于cookie來進行存儲的,瀏覽器關閉id就會失效
Cookie可以單獨的設置其在瀏覽器的存儲時間。
315.JavaScript 中 null和 undefined 是否有區(qū)別?有哪些區(qū)別?
答案:
賦值角度說明:
null 表示此處沒有值,undefined表示此處定義了但是沒有賦值
從數據轉換角度:
Null在做數值轉換時會被轉換為0,undefined會被轉換為NaN
316.Servlet中的doPost和doGet方法有什么區(qū)別?它們在傳遞和獲取參數上有什么區(qū)別?
答案:
區(qū)別:doPost用來處理post請求,doGet用來處理get請求,獲取參數:獲取的參數是相同的都是HttpServletRequest \HttpServletResponse
317.請寫出一段jQuery代碼,實現(xiàn)把當前頁面中所有的a元索中class 屬性為“view-link”的鏈接都改為在新窗口中打開
答案:$(“a[class=view-link]”).attr(“target”,”_blank”)
318.如下JavaScript代碼的輸出為:

319.Jquery中’.get()’與’.eq()’的區(qū)別
eq返回的是一個jquery對象 get返回的是一個html對象
320.如何給weblogic定內存的大?。?/p>
在啟動Weblogic的腳本中(位于所在Domian對應服務器目錄下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以調整最小內存為32M,最大200M
以下是小編整理的一些關于大數據方面的一些面試題,希望會給大家?guī)韼椭?/p>
歡迎大家留言討論!