




已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
JAVA 面試題匯總目錄目錄l概念題1一、JAVA基礎(chǔ)11)面向?qū)ο蟮奶卣?2)什么是OOP?什么是類?請對比類和對象實(shí)例之間的關(guān)系。13)簡述類與對象的概念24)什么是屬性與方法?25)什么是封裝?26)描述一下JVM加載class文件的原理機(jī)制27)Java程序怎么優(yōu)化?28)一個.java源文件中是否可以包括多個類(不是內(nèi)部類)?有什么限制?29)char型變量中能不能存貯一個中文漢字310)邏輯操作符 (&,|,)與條件操作符(&,|)的區(qū)別311)Math.round(11.5)等於多少? Math.round(-11.5)等於多少?312)Java有沒有g(shù)oto?313)int 和 Integer 的區(qū)別314)如何將數(shù)值型字符轉(zhuǎn)換為數(shù)字?如何去小數(shù)四舍五入保留小數(shù)點(diǎn)后兩位。315)short s1 = 1; s1 = s1 + 1;和short s1 = 1; s1 += 1;有什么錯誤316)float f=3.4是否正確?417)String 和StringBuffer的區(qū)別418)String是否是最基本的數(shù)據(jù)類型,能否被繼承419)String s = new String(xyz);創(chuàng)建了幾個String Object?420)數(shù)組有沒有l(wèi)ength()這個方法? String有沒有l(wèi)ength()這個方法?421)排序都有哪幾種方法?用JAVA實(shí)現(xiàn)一個快速排序422)swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上523)在JAVA中,如何跳出當(dāng)前的多重嵌套循環(huán)?524)關(guān)于日期和時(shí)間的幾個問題525)一個對象被當(dāng)作參數(shù)傳遞到一個方法,是值傳遞還是引用傳遞526)什么時(shí)候用assert?527)GC是什么? 為什么要有GC?528)垃圾回收的優(yōu)點(diǎn)和原理529)垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法主動通知虛擬機(jī)進(jìn)行垃圾回收?630)java中會存在內(nèi)存泄漏嗎,請簡單描述631)java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承,他們分別是哪些類?632)文件和目錄(I/O)操作633)什么是java序列化?如何實(shí)現(xiàn)java序列化?734)JAVA事件委托機(jī)制的概念735)談?wù)勀銓wing的MVC模式的理解?736)MVC結(jié)構(gòu)在JTable中怎樣實(shí)現(xiàn)的,這種結(jié)構(gòu)有什么好處?8二、類與繼承937)說出一些常用的類,包,接口,請各舉5個938)接口有什么優(yōu)點(diǎn)?939)靜態(tài)變量和實(shí)例變量的區(qū)別940)是否可以從一個static方法內(nèi)部發(fā)出對非static方法的調(diào)用?941)java 有幾種修飾符?分別用來修飾什么?942)作用域public,private,protected,以及不寫時(shí)的區(qū)別1043)final, finally, finalize的區(qū)別1044)內(nèi)部類可以引用他包含類的成員嗎?有沒有什么限制?1045)匿名內(nèi)部類是否可以繼承其它類?是否可以實(shí)現(xiàn)接口?1046)java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么?1147)Overload和Override的區(qū)別,Overloaded的方法能否改變返回值的類型?1148)abstract class和interface的區(qū)別1149)接口是否可繼承接口? 抽象類是否可實(shí)現(xiàn)接口? 抽象類是否可繼承實(shí)體類?1150)abstract的method是否可同時(shí)是static或native或synchronized?1151)構(gòu)造器Constructor是否可被override1152)寫clone()方法時(shí),通常都有一行代碼,是什么?1253)Object類的概述12三、異常1354)Java中的異常處理機(jī)制的簡單原理和應(yīng)用。1355)JAVA語言如何進(jìn)行異常處理,關(guān)鍵字:throws,throw,try,catch,finally分別代表什么意義?在try塊中可以拋出異常嗎?1356)error和exception的區(qū)別1357)運(yùn)行時(shí)異常與一般異常的區(qū)別1458)給我一個你最常見到的runtime exception(運(yùn)行時(shí)異常)1459)try 里有一個return語句,那finally 里的代碼會不會被執(zhí)行?在return前還是后執(zhí)行?14四、集合1560)集合類都有哪些1561)介紹JAVA中的Collection FrameWork1562)ArrayList和Vector的區(qū)別1563)HashMap和Hashtable的區(qū)別1564)Collection 和 Collections的區(qū)別1665)說出ArrayList,Vector, LinkedList的存儲性能和特性1666)heap和stack的區(qū)別1667)List, Set, Map是否繼承自Collection接口?1668)List, Set, Map三個接口,存取元素時(shí),各有什么特點(diǎn)?1669)Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢? 是用=還是equals()? 它們有何區(qū)別?1770)兩個對象值相同(x.equals(y) = true),但卻可有不同的hash code,這句話對不對17五、多線程1871)啟動一個線程是用run()還是start()?1872)sleep() 和 wait() 的區(qū)別1873)stop()和suspend()方法為何不推薦使用?1874)同步和異步有何異同,在什么情況下分別使用他們1875)當(dāng)一線程進(jìn)入一對象的一個synchronized方法后,其它線程可否進(jìn)入此對象的其它方法1876)線程同步的方法1977)多線程有幾種實(shí)現(xiàn)方法1978)線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之間的關(guān)系1979)簡述synchronized和java.util.concurrent.locks.Lock的異同1980)多線程的優(yōu)點(diǎn)19六、JDBC及數(shù)據(jù)庫相關(guān)2181)Class.forName的作用?為什么要用?2182)JDBC調(diào)用數(shù)據(jù)庫的基本步驟2183)說出數(shù)據(jù)連接池的工作機(jī)制是什么?2184)JDO是什么?2185)動態(tài)查詢?nèi)绾螌?shí)現(xiàn)?表的結(jié)構(gòu)變化后,如果不需要修改程序,如何設(shè)計(jì)和實(shí)現(xiàn)查詢?2186)如何優(yōu)化數(shù)據(jù)庫,如何提高數(shù)據(jù)庫的性能?2187)設(shè)計(jì)數(shù)據(jù)庫應(yīng)注意那些問題2288)表與表之間的關(guān)聯(lián)關(guān)系2289)主鍵和外鍵的區(qū)別2290)名詞解釋:批、觸發(fā)器、事務(wù)、鎖、子查詢、索引、視圖、存儲過程2291)游標(biāo)的作用?如何知道游標(biāo)已經(jīng)到了最后?2392)事前觸發(fā)和事后觸發(fā)有何區(qū)別?語句級觸發(fā)和行級觸發(fā)有何區(qū)別?2393)數(shù)據(jù)庫設(shè)計(jì)的必要性及設(shè)計(jì)步驟2494)什么是數(shù)據(jù)模型?什么是規(guī)范化?2495)談?wù)剶?shù)據(jù)庫設(shè)計(jì)的三范式24七、JSP和Servlet2596)forward 和sendRedirect的區(qū)別2597)JSP中動態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別2598)JSP的內(nèi)置對象及方法2599)JSP的常用指令25100)說出Servlet的生命周期,并說出Servlet和CGI的區(qū)別26101)什么情況下調(diào)用doGet()和doPost()26102)如何現(xiàn)實(shí)servlet的單線程模式26103)描述Cookie和Session的作用,區(qū)別和各自的應(yīng)用范圍,Session工作原理26104)頁面間對象傳遞的方法27105)JSP和Servlet有哪些相同點(diǎn)和不同點(diǎn),他們之間的聯(lián)系27106)四種會話跟蹤技術(shù)27107)Request對象的主要方法27108)Servlet執(zhí)行時(shí)一般實(shí)現(xiàn)哪幾個方法28109)說出在JSP頁面里是怎么分頁的?28八、J2EE基礎(chǔ)29110)J2EE是什么?29111)J2EE中常用的名詞解釋29112)名詞解釋:WEB SERVICE、JAXP、JAXM、SOAP、UDDI、WSDL30113)J2EE是技術(shù)還是平臺還是框架?30114)XML文檔定義有幾種形式?它們之間有何本質(zhì)區(qū)別?解析XML文檔有哪幾種方式?30115)你在項(xiàng)目中用到了xml技術(shù)的哪些方面?如何實(shí)現(xiàn)的?31116)j2ee常用的設(shè)計(jì)模式?說明工廠模式31九、STRUTS32117)MVC的各個部分都有那些技術(shù)來實(shí)現(xiàn)?如何實(shí)現(xiàn)?32118)概述struts,以及struts如何實(shí)現(xiàn)MVC架構(gòu)的?32119)簡單描述STRUTS的主要功能32120)Struts的處理流程32十、EJB34121)EJB2.0有哪些內(nèi)容?分別用在什么場合? EJB2.0和EJB1.1的區(qū)別?34122)EJB與JAVA BEAN的區(qū)別?34123)EJB是基于哪些技術(shù)實(shí)現(xiàn)的?并說出SessionBean和EntityBean,StatefulBean和StatelessBean的區(qū)別34124)EJB包括SessionBean和EntityBean,說出他們的生命周期,及如何管理事務(wù)的?35125)EJB的角色和三個對象35126)EJB容器提供的服務(wù)35127)EJB規(guī)范規(guī)定EJB中禁止的操作有哪些?35128)remote接口和home接口主要作用36129)bean 實(shí)例的生命周期36130)EJB的激活機(jī)制36131)EJB的幾種類型36132)客服端調(diào)用EJB對象的幾個基本步驟36133)EJB需直接實(shí)現(xiàn)它的業(yè)務(wù)接口或Home接口嗎,請簡述理由36十一、應(yīng)用服務(wù)器37134)應(yīng)用服務(wù)器有那些?37135)應(yīng)用服務(wù)器與WEB 服務(wù)器的區(qū)別?37136)如何給weblogic指定大小的內(nèi)存?37137)如何設(shè)定的weblogic的熱啟動模式(開發(fā)模式)與產(chǎn)品發(fā)布模式?37138)如何啟動時(shí)不需輸入用戶名與密碼?37139)在weblogic管理制臺中對一個應(yīng)用域進(jìn)行jms及ejb或連接池等相關(guān)信息進(jìn)行配置后,實(shí)際保存在什么文件中?37140)說說weblogic中一個Domain的缺省目錄結(jié)構(gòu)37141)在weblogic中發(fā)布ejb需涉及到哪些配置文件37142)如何在weblogic中進(jìn)行ssl配置與客戶端的認(rèn)證配置或說說j2ee(標(biāo)準(zhǔn))進(jìn)行ssl的配置38143)如何查看在weblogic中已經(jīng)發(fā)布的EJB?38l改錯題391)392)393)394)395)406)407)408)419)4110)4111)42l編程題441)在控制臺中輸入一個字符串,然后按照逆序打印出來442)設(shè)計(jì)4個線程,其中兩個線程每次對j增加1,另外兩個線程對j每次減少1。寫出程序。443)將一個鍵盤輸入的數(shù)字轉(zhuǎn)化成中文輸出(例如:輸入1234567,輸出:一百二拾三萬四千五百六拾七),請用java語言編一段程序?qū)崿F(xiàn)!454)寫一個Singleton出來495)我們在web應(yīng)用開發(fā)過程中經(jīng)常遇到輸出某種編碼的字符,如iso8859-1等,如何輸出一個某種編碼的字符串506)現(xiàn)在輸入n個數(shù)字,以逗號,分開;然后可選擇升或者降序排序;按提交鍵就在另一頁面顯示按什么排序,結(jié)果為,提供reset517)繼承時(shí)候類的執(zhí)行順序問題,一般都是選擇題,問你將會打印出什么?528)同上,關(guān)于內(nèi)部類的實(shí)現(xiàn)方式529)關(guān)于內(nèi)部類實(shí)現(xiàn)的一道選擇題5310)用JAVA實(shí)現(xiàn)一種排序5411)編寫一個截取字符串的函數(shù),輸入為一個字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串。 但是要保證漢字不被截半個,如“我ABC”4,應(yīng)該截為“我AB”,輸入“我ABC漢DEF”,6,應(yīng)該輸出為“我ABC”而不是“我ABC+漢的半個”。5512)用JAVA SOCKET編程,讀服務(wù)器幾個字符,再寫入本地顯示5613)寫一段Jdbc連Oracle的程序,并實(shí)現(xiàn)數(shù)據(jù)查詢.5814)ORACLE大數(shù)據(jù)量下的分頁解決方法。一般用截取ID方法,還有是三層嵌套方法。6015)用JAVA解析XML的方式.6116)用jdom解析xml文件時(shí)如何解決中文問題?如何解析?63l其它651)描述一下你最常用的編程風(fēng)格。65 V JAVA 面試題匯總JAVA基礎(chǔ)l 概念題一、 JAVA基礎(chǔ)1) 面向?qū)ο蟮奶卣?. 抽象:抽象就是忽略一個主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象包括兩個方面,一是過程抽象,二是數(shù)據(jù)抽象。2.繼承:繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。派生類可以從它的基類那里繼承方法和實(shí)例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。3.封裝:封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的訪問只能通過已定義的界面。面向?qū)ο笥?jì)算始于這個基本概念,即現(xiàn)實(shí)世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護(hù)的接口訪問其他對象。4.多態(tài):多態(tài)性是指允許不同類的對象對同一消息作出響應(yīng)。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。2) 什么是OOP?什么是類?請對比類和對象實(shí)例之間的關(guān)系。OOP是Object_oriented Programming(面向?qū)ο缶幊?的縮寫。這主要是為了區(qū)別于以前的面向過程的程序設(shè)計(jì)!指的是用對象的觀點(diǎn)來組織與構(gòu)建系統(tǒng),它綜合了功能抽象和數(shù)據(jù)抽象,這樣可以減少數(shù)據(jù)之間的耦合性和代碼的出錯幾率。使用面向?qū)ο缶幊碳夹g(shù)可以使得軟件開發(fā)者按照現(xiàn)實(shí)世界里人們思考問題的模式編寫代碼,可以讓軟件開發(fā)者更好地利用代碼直接表達(dá)現(xiàn)實(shí)中存在的對象,將問題空間直接映射到解空間!類:即class 在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,專門用“類”來表示用戶定義的抽象數(shù)據(jù)類型(user_defined abstract type)。它將具有相同狀態(tài)、操作和訪問機(jī)制的多個對象進(jìn)行了抽象。類具有繼承、數(shù)據(jù)隱藏和多態(tài)三種主要特性。利用類的這三種特性可以更好地表示現(xiàn)實(shí)世界中事物。類是同一類對象實(shí)例的共性的抽象,對象是類的實(shí)例化。對象通常作為計(jì)算機(jī)模擬思維,表示真實(shí)世界的抽象,一個對象就像一個軟件模塊,可以為用戶提供一系列的服務(wù)-可以改變對象的狀態(tài)、測試、傳遞消息等。類定義了對象的實(shí)現(xiàn)細(xì)節(jié)或數(shù)據(jù)結(jié)構(gòu)。類是靜態(tài)的,對象是動態(tài)的,對象可以看作是運(yùn)行中的類。類負(fù)責(zé)產(chǎn)生對象,可以將類當(dāng)成生產(chǎn)對象的工廠(Object factory)3) 簡述類與對象的概念所謂對象就是真實(shí)世界中的實(shí)體,對象與實(shí)體是一一對應(yīng)的,也就是說現(xiàn)實(shí)世界中每一個實(shí)體都是一個對象,它是一種具體的概念。類是具備某些共同特征的實(shí)體的集合,它是一種抽象的概念,用程序設(shè)計(jì)的語言來說,類是一種抽象的數(shù)據(jù)類型,它是對所具有相同特征實(shí)體的抽象。4) 什么是屬性與方法?不同對象具有相同特點(diǎn),就可能抽象為一定的類,那么這些特點(diǎn)基本上可以分為兩類,一類是描述對象靜態(tài)狀態(tài)的,就是對象的屬性,在程序設(shè)計(jì)中,可以稱之為變量;另一類是描述對象的動作,就是對象的方法,在程序設(shè)計(jì)中我們稱之為函數(shù)。屬性和方法是一個對象所具備的兩大基本要素,也是我們后面編程工作的核心。5) 什么是封裝?只要有足夠的方法,就沒必要直接去操作對象屬性,只要調(diào)用這些方法就可以實(shí)現(xiàn)要完成的任務(wù),這種現(xiàn)象稱為封裝,它通過對象方法對其屬性的操作把對象屬性封裝在一個對象內(nèi)部,對象與外界打交道全部通過其自身的方法來實(shí)現(xiàn),有效的把對象屬性隱藏在對象內(nèi)部。6) 描述一下JVM加載class文件的原理機(jī)制JVM中類的裝載是由ClassLoader和它的子類來實(shí)現(xiàn)的,Java ClassLoader 是一個重要的Java運(yùn)行時(shí)系統(tǒng)組件。它負(fù)責(zé)在運(yùn)行時(shí)查找和裝入類文件的類。7) Java程序怎么優(yōu)化?答:提高JAVA的性能,一般考慮如下的四個主要方面:1、程序設(shè)計(jì)的方法和模式 2、AVA布署的環(huán)境。3、JAVA應(yīng)用程序的實(shí)現(xiàn)4、硬件和操作系統(tǒng) 為了提高JAVA程序的性能,需要遵循如下的六個步驟。 a) 明確對性能的具體要求 b) 了解當(dāng)前程序的性能 c) 找到程序的性能瓶頸 d) 采取適當(dāng)?shù)拇胧﹣硖岣咝阅?e) 只進(jìn)行某一方面的修改來提高性能 f) 返回到步驟c) 繼續(xù)作類似的工作,一直達(dá)到要求的性能為止。8) 一個.java源文件中是否可以包括多個類(不是內(nèi)部類)?有什么限制?可以。必須只有一個類名與文件名相同。9) char型變量中能不能存貯一個中文漢字能夠定義成為一個中文的,因?yàn)閖ava中以unicode編碼,一個char占16個字節(jié),所以放一個中文是沒問題的1)2)3)4)5)6)7)8)9)10) 邏輯操作符 (&,|,)與條件操作符(&,|)的區(qū)別1. 條件操作符:只能用于關(guān)系運(yùn)算,會產(chǎn)生短路,即該符號左邊的表達(dá)式可以確定整個關(guān)系表達(dá)式的值時(shí),便不再運(yùn)算右邊的表達(dá)式 2. 邏輯操作符:不僅可以用于關(guān)系運(yùn)算,還可以用于位運(yùn)算。不會產(chǎn)生短路,即無論左邊表達(dá)式取什么值都要運(yùn)算右邊的表達(dá)式11) Math.round(11.5)等於多少? Math.round(-11.5)等於多少?Math.round(11.5)等于12;Math.round(-11.5)等于-11。1)2)3)4)5)6)7)8)9)10)11)12) Java有沒有g(shù)oto?Java中的保留字,現(xiàn)在沒有在Java中使用。13) int 和 Integer 的區(qū)別Java 提供兩種不同的類型:引用類型和原始類型(基本數(shù)據(jù)類型)。int是java的原始類型,Integer是java為int提供的封裝類。Java為每個原始類型提供了封裝類:Boolean-Booleanchar-Characterbyte-Byteshort-Shortint-Integerlong-Longfloat-Floatdouble-Double引用類型和原始類型具有不同的特征和方法,它們包括:大小和速度問題,這種類型以哪種類型的數(shù)據(jù)結(jié)構(gòu)存儲等。當(dāng)引用類型和原始類型用作某個類的實(shí)例數(shù)據(jù)時(shí)所指定的缺省值不同:對象引用實(shí)例變量的缺省值為 null,而原始類型實(shí)例變量的缺省值與它們的類型有關(guān)。14) 如何將數(shù)值型字符轉(zhuǎn)換為數(shù)字?如何去小數(shù)四舍五入保留小數(shù)點(diǎn)后兩位。1、Integer.parseInt(“111”);Double.parseDouble(“11.22”);2、doublenum=2.625; doubletmp=Math.round(num*100)/100d;15) short s1 = 1; s1 = s1 + 1;和short s1 = 1; s1 += 1;有什么錯誤short s1 = 1; s1 = s1 + 1;有錯,數(shù)據(jù)庫類型不匹配short s1 = 1; s1 += 1;沒有錯誤16) float f=3.4是否正確?不正確。精度不準(zhǔn)確,應(yīng)該用強(qiáng)制類型轉(zhuǎn)換,如下所示:float f=(float)3.4或者 float f = 3.4f;17) String 和StringBuffer的區(qū)別String類提供了數(shù)值不可改變的字符串,而StringBuffer類提供的字符串可以進(jìn)行修改。當(dāng)你知道字符數(shù)據(jù)要改變的時(shí)候你就可以使用StringBuffer。典型地,你可以使用 StringBuffer來動態(tài)構(gòu)造字符數(shù)據(jù)。18) String是否是最基本的數(shù)據(jù)類型,能否被繼承不是。基本數(shù)據(jù)類型包括byte、short、int、long、char、float、double和boolean。String類是final類型的,因此不可以繼承這個類、不能修改這個類。19) String s = new String(xyz);創(chuàng)建了幾個String Object?創(chuàng)建了兩個String Object對象xyz本身作為字符常量,在匯編語言中應(yīng)該作為常量放在數(shù)據(jù)段,Java有一個類似數(shù)據(jù)段的constant pool保存這個常量,在classloader加載這個類的時(shí)候就把xyz和這個類的其他一些信息放在constant pool。new String(xyz)根據(jù)常量xyz在heap上創(chuàng)建String對象。所以,一共兩個對象20) 數(shù)組有沒有l(wèi)ength()這個方法? String有沒有l(wèi)ength()這個方法?數(shù)組沒有l(wèi)ength()這個方法,有l(wèi)ength的屬性。String有l(wèi)ength()這個方法。21) 排序都有哪幾種方法?用JAVA實(shí)現(xiàn)一個快速排序排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸并排序,分配排序(箱排序、基數(shù)排序)快速排序的偽代碼。/ /使用快速排序方法對a 0 :n- 1 排序從a 0 :n- 1 中選擇一個元素作為m i d d l e,該元素為支點(diǎn)把余下的元素分割為兩段left 和r i g h t,使得l e f t中的元素都小于等于支點(diǎn),而right 中的元素都大于等于支點(diǎn)遞歸地使用快速排序方法對left 進(jìn)行排序遞歸地使用快速排序方法對right 進(jìn)行排序所得結(jié)果為l e f t + m i d d l e + r i g h t22) swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上switch(expr1)中,expr1是一個整數(shù)表達(dá)式。因此傳遞給 switch 和 case 語句的參數(shù)應(yīng)該是 int、 short、 char 或者 byte。Long,string 都不能作用于swtich。23) 在JAVA中,如何跳出當(dāng)前的多重嵌套循環(huán)?用break; return 方法。24) 關(guān)于日期和時(shí)間的幾個問題1、如何取得年、月、日,小時(shí)、分、秒:Date dat=new Date();dat.getYear();dat.getMonth();dat.getDay();dat.getHours();.2、如何取得從1970年到現(xiàn)在的毫秒數(shù):long now=dat.getTime();3、如何格式化日期DateFormate df=DateFormate.getInstance();df.Format(dat);25) 一個對象被當(dāng)作參數(shù)傳遞到一個方法,是值傳遞還是引用傳遞是值傳遞。Java 編程語言只有值傳遞參數(shù)。當(dāng)一個對象實(shí)例作為一個參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是對該對象的引用。對象的內(nèi)容可以在被調(diào)用的方法中改變,但對象的引用是永遠(yuǎn)不會改變的。26) 什么時(shí)候用assert?assertion (斷言)在軟件開發(fā)中是一種常用的調(diào)試方式,很多開發(fā)語言中都支持這種機(jī)制。在實(shí)現(xiàn)中,assertion就是在程序中的一條語句,它對一個 boolean表達(dá)式進(jìn)行檢查,一個正確程序必須保證這個boolean表達(dá)式的值為true;如果該值為false,說明程序已經(jīng)處于不正確的狀態(tài)下,系統(tǒng)將給出警告或退出。一般來說,assertion用于保證程序最基本、關(guān)鍵的正確性。assertion檢查通常在開發(fā)和測試時(shí)開啟。為了提高性能,在軟件發(fā)布后,assertion檢查通常是關(guān)閉的。27) GC是什么? 為什么要有GC?GC是垃圾收集的意思(Gabage Collection),內(nèi)存處理是編程人員容易出現(xiàn)問題的地方,忘記或者錯誤的內(nèi)存回收會導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java提供的GC功能可以自動監(jiān)測對象是否超過作用域從而達(dá)到自動回收內(nèi)存的目的,Java語言沒有提供釋放已分配內(nèi)存的顯示操作方法。28) 垃圾回收的優(yōu)點(diǎn)和原理垃圾回收可以有效的防止內(nèi)存泄露,有效的使用可以使用的內(nèi)存。垃圾回收器通常是作為一個單獨(dú)的低級別的線程運(yùn)行,不可預(yù)知的情況下對內(nèi)存堆中已經(jīng)死亡的或者長時(shí)間沒有使用的對象進(jìn)行清楚和回收,程序員不能實(shí)時(shí)的調(diào)用垃圾回收器對某個對象或所有對象進(jìn)行垃圾回收。29) 垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法主動通知虛擬機(jī)進(jìn)行垃圾回收?對于GC來說,當(dāng)程序員創(chuàng)建對象時(shí),GC就開始監(jiān)控這個對象的地址、大小以及使用情況。通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對象。通過這種方式確定哪些對象是可達(dá)的,哪些對象是不可達(dá)的。當(dāng)GC確定一些對象為不可達(dá)時(shí),GC就有責(zé)任回收這些內(nèi)存空間??梢浴3绦騿T可以手動執(zhí)行System.gc(),通知GC運(yùn)行,但是Java語言規(guī)范并不保證GC一定會執(zhí)行。30) java中會存在內(nèi)存泄漏嗎,請簡單描述會。如:int i,i2; return (i-i2); /when i為足夠大的正數(shù),i2為足夠大的負(fù)數(shù)。結(jié)果會造成溢位,導(dǎo)致錯誤。Java的一個重要優(yōu)點(diǎn)就是通過垃圾收集器(Garbage Collection,GC)自動管理內(nèi)存的回收,程序員不需要通過調(diào)用函數(shù)來釋放內(nèi)存。因此,很多程序員認(rèn)為Java不存在內(nèi)存泄漏問題,或者認(rèn)為即使有內(nèi)存泄漏也不是程序的責(zé)任,而是GC或JVM的問題。其實(shí),這種想法是不正確的,因?yàn)镴ava也存在內(nèi)存泄露,但它的表現(xiàn)與C+不同。31) java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承,他們分別是哪些類?字節(jié)流,字符流。字節(jié)流繼承于InputStream、 OutputStream,字符流繼承于InputStreamReader 、OutputStreamWriter。32) 文件和目錄(I/O)操作1、如何列出某個目錄下的所有文件,如何列出某個目錄下的所有子目錄:public void listFile(String rp) File file=new File(rp); File list=file.listFiles(); for(int i=0;ilist.length;i+) if (listi.isDirectory() new ListFiles().listFile(listi.toString(); else listFileStr+=listi.getAbsolutePath()+rn; System.out.println(listi.getAbsolutePath(); 2、判斷一個文件或目錄是否存在:File file=new File(“c:aa.txt”);if(file.exists()System.out.print(“存在”);3、如何讀寫文件讀:BufferdReader br = new BufferdReader(new FileReader(“c:aa.txt”);br.readLine();寫:BufferdWriter bw = new BufferdWriter (new FileWriter(“c:aa.txt”);bw.write(“Hello”);33) 什么是java序列化?如何實(shí)現(xiàn)java序列化?序列化就是一種用來處理對象流的機(jī)制,所謂對象流也就是將對象的內(nèi)容進(jìn)行流化??梢詫α骰蟮膶ο筮M(jìn)行讀寫操作,也可將流化后的對象傳輸于網(wǎng)絡(luò)之間。序列化是為了解決在對對象流進(jìn)行讀寫操作時(shí)所引發(fā)的問題。序列化的實(shí)現(xiàn):將需要被序列化的類實(shí)現(xiàn)Serializable接口,該接口沒有需要實(shí)現(xiàn)的方法,implements Serializable只是為了標(biāo)注該對象是可被序列化的,然后使用一個輸出流(如:FileOutputStream)來構(gòu)造一個 ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數(shù)為obj的對象寫出(即保存其狀態(tài)),要恢復(fù)的話則用輸入流。34) JAVA事件委托機(jī)制的概念java 事件委托機(jī)制的概念:一個源產(chǎn)生一個事件并將它送到一個或多個監(jiān)聽器那里。在這種方案中,監(jiān)聽器簡單的等待,直到它收到一個事件。一旦事件被接受,監(jiān)聽器將處理這個事件,然后返回。35) 談?wù)勀銓wing的MVC模式的理解?Swing號稱是完全按照MVC的思路來進(jìn)行設(shè)計(jì)的。在設(shè)計(jì)開始前,Swing的希望能夠達(dá)到的目標(biāo)就包括:模型驅(qū)動(Model-Driven)的編程方式。提供一套單一的API,但是能夠支持多種視感(look-and-feel),為用戶提供不同的界面。嚴(yán)格的說,Swing中的MVC實(shí)際上是MVC的一個變體:M-VC。 Swing中只顯示的定義了Model接口,而在一個UI對象中集成了視圖和控制器的部分機(jī)制。View和Control比較松散的交叉組合在一起,而更多的控制邏輯是在事件監(jiān)聽者部分引入的。但是,這并沒有妨礙在Swing中體現(xiàn)MVC的精髓。事實(shí)上,在Swing的開發(fā)初期,Swing確實(shí)是按照標(biāo)準(zhǔn)的MVC模式來設(shè)計(jì)的,但是很快的問題就出現(xiàn)了:View和Controller實(shí)際上是緊密耦合的,很難作出一個能夠適應(yīng)不同View的一般化的Controller來,而且,一般也沒有很大的必要。36) MVC結(jié)構(gòu)在JTable中怎樣實(shí)現(xiàn)的,這種結(jié)構(gòu)有什么好處?在JTable中不存儲它的單元數(shù)據(jù),它的所有實(shí)例把它們的單元值交給實(shí)現(xiàn)了TableModel接口的對象來維護(hù)和管理,所以在MVC結(jié)構(gòu)中,Jtable的表格主要體現(xiàn)了一個V的作用,其表格將數(shù)據(jù)變化體現(xiàn)出來,而數(shù)據(jù)模型則體現(xiàn)了M的作用,封裝數(shù)據(jù)和業(yè)務(wù)邏輯。在這種MVC結(jié)構(gòu)中,表示層和邏輯層分離,各部分可相互獨(dú)立進(jìn)行開發(fā),便于開發(fā)和維護(hù),提高了開發(fā)效率。 68 JAVA 面試題匯總類與繼承二、 類與繼承37) 說出一些常用的類,包,接口,請各舉5個常用的類:String,BufferedReader,Integer,ArrayList,Vector常用的包:java.lang ,java.awt ,java.io ,java.util ,java.sql常用的接口:Collection,List,Map,Serializable,Runnable38) 接口有什么優(yōu)點(diǎn)?答:接口有以下優(yōu)點(diǎn):1、接口只是一個框架而沒有實(shí)現(xiàn),因此在接口定義時(shí)不需要考慮接口中的方法如何實(shí)現(xiàn)。2、利用接口可達(dá)到實(shí)現(xiàn)多繼承的目地。3、可以在不暴露對象的類的前提下,暴露對象的編程接口。4、不用強(qiáng)迫類關(guān)系在無關(guān)類中截獲相似處(采用適配器就可以了)。5、聲明想執(zhí)行的一個或多個方法。39) 靜態(tài)變量和實(shí)例變量的區(qū)別靜態(tài)變量也稱作類變量,由static修飾,如:static int ss; ss就是靜態(tài)變量,它只能通過類來訪問。實(shí)例變量沒有static修飾符,它只能通過實(shí)例對象來訪問。同一類的不同的實(shí)例對象有自己的實(shí)例變量,但是它們共享同一個靜態(tài)變量。當(dāng)一個實(shí)例對象修改了它的實(shí)例變量時(shí),不會影響其他的實(shí)例對象。如果一個實(shí)例對象修改了靜態(tài)變量,則會影響其他的對象實(shí)例。40) 是否可以從一個static方法內(nèi)部發(fā)出對非static方法的調(diào)用?不可以,如果其中包含對象的method(),不能保證對象初始化.41) java 有幾種修飾符?分別用來修飾什么?答:(注:修飾符是影響類、變量及成員方法的生存空間和可訪問性的關(guān)鍵字)修飾符類 成員方法 成員變量 局部變量abstract static public protected private private protected synchronized native volatile final transient 42) 作用域public,private,protected,以及不寫時(shí)的區(qū)別區(qū)別如下:作用域 當(dāng)前類 同包 子孫類不同包public protected friendly private 不寫時(shí)默認(rèn)為friendly43) final, finally, finalize的區(qū)別1.final :用于聲明屬性,方法和類,分別表示屬性不可變(為常量),方法不可覆蓋(不可重寫),類不可繼承。2.finally:是異常處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行。3.finalize:是Object類的一個方法,在垃圾收集器執(zhí)行的時(shí)候會調(diào)用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時(shí)的其他資源回收,例如關(guān)閉文件等。44) 內(nèi)部類可以引用他包含類的成員嗎?有沒有什么限制?根據(jù)內(nèi)部類是否為static分為兩種討論:1.靜態(tài)內(nèi)部類可以有靜態(tài)和非靜態(tài)的成員,但它們只能訪問包含類的靜態(tài)成員2.非靜態(tài)內(nèi)部類不能有靜態(tài)成員,它可以訪問包含類的任何成員,無論它們有什么訪問屬性。它還可以訪問包含類下任何靜態(tài)內(nèi)部類的靜態(tài)成員45) 匿名內(nèi)部類是否可以繼承其它類?是否可以實(shí)現(xiàn)接口?可以繼承其他類,也可以實(shí)現(xiàn)接口。46) java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么?方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。47) Overload和Override的區(qū)別,Overloaded的方法能否改變返回值的類型?方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時(shí),將調(diào)用子類中的定義,對它而言,父類中的定義如同被屏蔽了。如果在一個類中定義了多個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。48) abstract class和interface的區(qū)別聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽象類(abstract class),它用于要創(chuàng)建一個體現(xiàn)某些基本行為的類,并為該類聲明方法。不能創(chuàng)建abstract 類的實(shí)例。然而可以創(chuàng)建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract 類的子類為它們父類中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類。接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實(shí)現(xiàn)與子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類的任何對象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來決定某對象的類是否實(shí)現(xiàn)了接口。49) 接口是否可繼承接口? 抽象類是否可實(shí)現(xiàn)接口? 抽象類是否可繼承實(shí)體類?接口可以繼承接口。抽象類可以實(shí)現(xiàn)接口,抽象類可繼承實(shí)體類,但前提是實(shí)體類必須有明確的構(gòu)造函數(shù)。50) abstract的method是否可同時(shí)是static或native或synchronized?都不能51) 構(gòu)造器Constructor是否可被override構(gòu)造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。52) 寫clone()方法時(shí),通常都有一行代碼,是什么?Clone 有缺省行為,super.clone();他負(fù)責(zé)產(chǎn)生正確大小的空間,并逐位復(fù)制。53) Object類的概述Object類是所有其他的類的超類,Object的一個變量可以引用任何其他類的對象。因?yàn)閿?shù)組是作為類實(shí)現(xiàn)的,所以O(shè)bject的一個變量也可以引用任何數(shù)組,它包括以下幾種方法:clone() equals() finalize() getClass() hashCode() notify() notifyAll() toString() wait()JAVA 面試題匯總異常三、 異常1)2)3)4)5)6)7)8)9)10)11)12)13)14)15)16)17)18)19)20)21)22)23)24)25)26)27)28)29)30)31)32)33)34)35)36)37)38)39)40)41)42)43)44)45)46)47)48)49)50)51)52)53)54) Java中的異常處理機(jī)制的簡單原理和應(yīng)用。當(dāng)JAVA 程序違反了JAVA的語義規(guī)則時(shí),JAVA虛擬機(jī)就會將發(fā)生的錯誤表示為一個異常。違反語義規(guī)則包括2種情況。一種是JAVA類庫內(nèi)置的語義檢查。例如數(shù)組下標(biāo)越界,會引發(fā)IndexOutOfBoundsException;訪問null的對象時(shí)會引發(fā)NullPointerException。另一種情況就是JAVA允許程序員擴(kuò)展這種語義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時(shí)用throw關(guān)鍵字引發(fā)異常。所有的異常都是 java.lang.Thowable的子類。55) JAVA語言如何進(jìn)行異常處理,關(guān)鍵字:throws,throw,try,catch,finally分別代表什么意義?在try塊中可以拋出異常嗎?Java 通過面向?qū)ο蟮姆椒ㄟM(jìn)行異常處理,把各種不同的異常進(jìn)行分類,并提供了良好的接口。在Java中,每個異常都是一個對象,它是Throwable類或其它子類的實(shí)例。當(dāng)一個方法出現(xiàn)異常后便拋出一個異常對象,該對象中包含有異常信息,調(diào)用這個對象的方法可以捕獲到這個異常并進(jìn)行處理。Java的異常處理是通過5個關(guān)鍵詞來實(shí)現(xiàn)的:try、catch、throw、throws和finally。一般情況下是用try來執(zhí)行一段程序,如果出現(xiàn)異常,系統(tǒng)會拋出(throws)一個異常,這時(shí)候你可以通過它的類型來捕捉(catch)它,或最后(finally)由缺省處理器來處理。用try來指定一塊預(yù)防所有異常的程序。緊跟在try程序后面,應(yīng)包含一個catch子句來指定你想要捕捉的異常的類型。throw語句用來明確地拋出一個異常。throws用來標(biāo)明一個成員函數(shù)可能拋出的各種異常。finally為確保一段代碼不管發(fā)生什么異常都被執(zhí)行一段代碼??梢栽谝粋€成員函數(shù)調(diào)用的外面寫一個try語句,在這個成員函數(shù)內(nèi)部寫另一個try語句保護(hù)其他代碼。每當(dāng)遇到一個try語句,異常的框架就放到堆棧上面,直到所有的try語句都完成。如果下一級的try語句沒有對某種異常進(jìn)行處理,堆棧就會展開,直到遇到有處理這種異常的try語句。56) error和exception的區(qū)別error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問題。比如說內(nèi)存溢出。不可能指望程序能處理這樣的情況。exception 表示一種設(shè)計(jì)或?qū)崿F(xiàn)問題。也就是說,它表示如果程序運(yùn)行正常,從不會發(fā)生的情況。一般要求程序?qū)ζ溥M(jìn)行捕獲及處理。57) 運(yùn)行時(shí)異常與一般異常的區(qū)別異常表示程序運(yùn)行過程中可能出現(xiàn)的非正常狀態(tài),運(yùn)行時(shí)異常表示虛擬機(jī)的通常操作中可能遇到的異常,是一種常見運(yùn)行錯誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運(yùn)行時(shí)異常,但是并不要求必須聲明拋出未被捕獲的運(yùn)行時(shí)異常。58) 給我一個你最常見到的runtime exception(運(yùn)行時(shí)異常)ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCast
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 炎黃職業(yè)技術(shù)學(xué)院《城市軌道交通設(shè)備》2023-2024學(xué)年第二學(xué)期期末試卷
- 前臺文員的信息保密制度建設(shè)計(jì)劃
- 鹽城市亭湖區(qū)重點(diǎn)達(dá)標(biāo)名校2025屆初三年級第二學(xué)期期中考試數(shù)學(xué)試題含解析
- 2025-2030中國魚干行業(yè)發(fā)展分析及發(fā)展趨勢預(yù)測與投資風(fēng)險(xiǎn)研究報(bào)告
- 2025年新鄉(xiāng)道路貨運(yùn)從業(yè)資格證模擬考試官方題下載
- 審計(jì)新質(zhì)生產(chǎn)力最早
- 2025年涼山州從業(yè)資格證模擬考試題貨運(yùn)考題
- 大學(xué)職業(yè)規(guī)劃書1000字
- 大學(xué)生活感悟演講稿
- 2025年公務(wù)員行政能力測試試題及答案
- 作文素材----片段式作文
- 偵探推理題(含答案)
- 應(yīng)用生態(tài)學(xué)PPT課件
- 熱塑性聚酯彈性體(TPEE)
- 畢業(yè)論文機(jī)電一體化發(fā)展歷程及其面臨的形勢和任務(wù)
- 家具廠首件檢驗(yàn)記錄表
- 《狐假虎威》(公開課)(課堂PPT)
- 半導(dǎo)體分立器件制造公司績效制度范文
- 凝汽器灌水查漏方案及措施
- 【那個女孩歌詞陶喆】陶喆那個女孩歌詞分配
- 弧焊(3)電弧焊焊條
評論
0/150
提交評論