freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java開發(fā)人員面試寶典-文庫吧

2025-07-15 00:13 本頁面


【正文】 的實例對象。含有abstract方法的類必須定義為abstract class,abstract class類中的方法不必是抽象的。abstract class類中定義抽象方法必須在具體(Concrete)子類中實現(xiàn),所以,不能有抽象構(gòu)造方法或抽象靜態(tài)方法。如果的子類沒有實現(xiàn)抽象父類中的所有抽象方法,那么子類也必須定義為abstract類型。接口(interface)可以說成是抽象類的一種特例,接口中的所有方法都必須是抽象的。接口中的方法定義默認(rèn)為public abstract類型,接口中的成員變量類型默認(rèn)為public static final。下面比較一下兩者的語法區(qū)別:1. 抽象類可以有構(gòu)造方法,接口中不能有構(gòu)造方法。2. 抽象類中可以有普通成員變量,接口中沒有普通成員變量3. 抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。4. 抽象類中的抽象方法的訪問類型可以是public,protected和默認(rèn)類型,但接口中的抽象方法只能是public類型的,并且默認(rèn)即為public abstract類型。5. 抽象類中可以包含靜態(tài)方法,接口中不能包含靜態(tài)方法6. 抽象類和接口中都可以包含靜態(tài)成員變量,抽象類中的靜態(tài)成員變量的訪問類型可以任意,但接口中定義的變量只能是public static final類型,并且默認(rèn)即為public static final類型。7. 一個類可以實現(xiàn)多個接口,但只能繼承一個抽象類。下面接著再說說兩者在應(yīng)用上的區(qū)別:接口更多的是在系統(tǒng)架構(gòu)設(shè)計方法發(fā)揮作用,主要用于定義模塊之間的通信契約;而抽象類在代碼實現(xiàn)方面發(fā)揮作用,可以實現(xiàn)代碼的重用。 新建對象有幾種方式1. 使用new關(guān)鍵字2. 使用反射,調(diào)用newInstance3. 使用clone方法4. 使用序列化與反序列化5. 動態(tài)代理(Proxy類和CGLIB) amp。和amp。amp。的區(qū)別amp。和amp。amp。都可以用作邏輯與的運算符,amp。amp。為短路與,amp。不是短路與。另外amp??梢宰鰹檎麛?shù)的位運算符例1:對于if(str != nullamp。amp。 !(“”))表達(dá)式,當(dāng)str為null時,后面的表達(dá)式不會執(zhí)行,所以不會出現(xiàn)NullPointerException如果將amp。amp。改為amp。,則會拋出NullPointerException異常。例2:If(x==33 amp。++y0) y會增長,if(x==33 amp。amp。 ++y0)不會增長。備注:這道題先說兩者的共同點,再說出amp。amp。和amp。的特殊之處,并列舉一些經(jīng)典的例子來表明自己理解透徹深入、實際經(jīng)驗豐富。 面向?qū)ο笫裁刺匦詫τ诿嫦驅(qū)ο蟮奶匦裕话阌袃煞N說法:一種是有三大特性,分別是封裝,繼承,多態(tài),一種說法是有四大特性,封裝,繼承,多態(tài),抽象。講三大特性的時候更多一些,注意,這里的提問方式是面向?qū)ο蟮奶匦?,而不是Java的特性。 面向?qū)ο笾卸鄳B(tài)特性多態(tài)是面向?qū)ο蠛苤匾囊粋€特性,轉(zhuǎn)型是多態(tài)的具體體現(xiàn)。多態(tài)還包括重載和重寫。轉(zhuǎn)型:轉(zhuǎn)型分為向上轉(zhuǎn)型和向下轉(zhuǎn)型。向上轉(zhuǎn)型是子類對象轉(zhuǎn)換成父類對象,直接轉(zhuǎn)就可以,向下轉(zhuǎn)型是父類對象轉(zhuǎn)換成子類對象,這需要強轉(zhuǎn),在轉(zhuǎn)換過程中要保證此父類對象“本體”是由子類對象實例化的。重載:重載發(fā)生在同一個類中,在該類中如果存在多個同名方法,但是方法的參數(shù)類型和個數(shù)不一樣,那么說明該方法被重載了。重寫:重寫發(fā)生在子類繼承父類的關(guān)系中,父類中的方法被子類繼承,方法名,返回值類型,參數(shù)完全一樣,但是方法體不一樣,那么說明父類中的該方法被子類重寫了。 List,set,Collection,Collections List和Set都是接口,他們都繼承于接口Collection,List是一個有序的可重復(fù)的集合,而Set的無序的不可重復(fù)的集合。Collection是集合的頂層接口,Collections是一個封裝了眾多關(guān)于集合操作的靜態(tài)方法的工具類,因為構(gòu)造方法是私有的,所以不能實例化。 List接口實現(xiàn)類有ArrayList,LinkedList,Vector。ArrayList和Vector是基于數(shù)組實現(xiàn)的,所以查詢的時候速度快,而在進行增加和刪除的時候速度較慢LinkedList是基于鏈?zhǔn)酱鎯Y(jié)構(gòu),所以在進行查詢的時候速度較慢但在進行增加和刪除的時候速度較快。又因為Vector是線程安全的,所以他和ArrayList相比而言,查詢效率要低。 線程和進程的區(qū)別 進程定義的是應(yīng)用程序與應(yīng)用程序之間的邊界,通常來說一個進程就代表一個與之對應(yīng)的應(yīng)用程序。不同的進程之間不能共享代碼和數(shù)據(jù)空間,而同一進程的不同線程可以共享代碼和數(shù)據(jù)空間。 一個進程可以包括若干個線程,同時創(chuàng)建多個線程來完成某項任務(wù),便是多線程。實現(xiàn)線程的兩種方式:繼承Thread類,實現(xiàn)Runable接口。 Jvm內(nèi)存結(jié)構(gòu)Java虛擬機的內(nèi)存結(jié)構(gòu)分為堆(heap)和棧(stack),堆里面存放是對象實例也就是new出來的對象。棧里面存放的是基本數(shù)據(jù)類型以及引用數(shù)據(jù)類型的地址。對于所謂的常量是存儲在方法區(qū)的常量池里面。堆是先進先出棧是先進后出 內(nèi)存泄露和內(nèi)存溢出內(nèi)存泄露 (memory leak),是指應(yīng)用程序在申請內(nèi)存后,無法釋放已經(jīng)申請的內(nèi)存空間。一次內(nèi)存泄露危害可以忽略,但如果任其發(fā)展最終會導(dǎo)致內(nèi)存溢出(out of memory)。如讀取文件后流要進行及時的關(guān)閉以及對數(shù)據(jù)庫連接的釋放。內(nèi)存溢出(out of memory)是指應(yīng)用程序在申請內(nèi)存時,沒有足夠的內(nèi)存空間供其使用。如我們在項目中對于大批量數(shù)據(jù)的導(dǎo)入,采用分段批量提交的方式。 解析xml文件的幾種技術(shù)解析xml的幾種技術(shù)1. dom4j 、 dom4jdom4j是一個Java的XML API,類似于jdom,用來讀寫XML文件的。dom4j是一個非常優(yōu)秀的Java XML API,具有性能優(yōu)異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件。 saxSAX(simple API for XML)是一種XML解析的替代方法。相比于DOM,SAX是一種速度更快,更有效的方法。它逐行掃描文檔,一邊掃描一邊解析。而且相比于DOM,SAX可以在解析文檔的任意時刻停止解析,但任何事物都有其相反的一面,對于SAX來說就是操作復(fù)雜。 JaxbJAXB(Java Architecture for XML Binding) 是一個業(yè)界的標(biāo)準(zhǔn),是一項可以根據(jù)XML Schema產(chǎn)生Java類的技術(shù)。該過程中,JAXB也提供了將XML實例文檔反向生成Java對象樹的方法,并能將Java對象樹的內(nèi)容重新寫到XML實例文檔。從另一方面來講,JAXB提供了快速而簡便的方法將XML模式綁定到Java表示,從而使得Java開發(fā)者在Java應(yīng)用程序中能方便地結(jié)合XML數(shù)據(jù)和處理函數(shù)。 Dom4j與sax之間的對比dom4j不適合大文件的解析,因為它是一下子將文件加載到內(nèi)存中,所以有可能出現(xiàn)內(nèi)存溢出,sax是基于事件來對xml進行解析的,所以他可以解析大文件的xml,也正是因為如此,所以dom4j可以對xml進行靈活的增刪改查和導(dǎo)航,而sax沒有這么強的靈活性,所以sax經(jīng)常是用來解析大型xml文件,而要對xml文件進行一些靈活(crud)操作就用dom4j。 java Exception體系結(jié)構(gòu)java 異常是程序運行過程中出現(xiàn)的錯誤。Java把異常當(dāng)作對象來處理。在Java API中定義了許多異常類,分為兩大類,錯誤Error和異常Exception。其中異常類Exception又分為運行時異常(RuntimeException)和非運行時異常(非runtimeException),也稱之為不檢查異常(Unchecked Exception)和檢查異常(Checked Exception)。 Error與Exception Error是程序無法處理的錯誤,比如OutOfMemoryError、ThreadDeath等。這些異常發(fā)生時,Java虛擬機(JVM)一般會選擇線程終止。Exception是程序本身可以處理的異常,這種異常分兩大類運行時異常和非運行時異常。程序中應(yīng)當(dāng)盡可能去處理這些異常。 運行時異常和非運行時異常a) 運行時異常: 都是RuntimeException類及其子類異常:i. IndexOutOfBoundsException 索引越界異常ii. ArithmeticException:數(shù)學(xué)計算異常iii. NullPointerException:空指針異常iv. ArrayOutOfBoundsException:數(shù)組索引越界異常v. ClassNotFoundException:類文件未找到異常vi. ClassCastException:造型異常(類型轉(zhuǎn)換異常) 這些異常是不檢查異常(Unchecked Exception),程序中可以選擇捕獲處理,也可以不處理。這些異常一般是由程序邏輯錯誤引起的。非運行時異常:是RuntimeException以外的異常,類型上都屬于Exception類及其子類。從程序語法角度講是必須進行處理的異常,如果不處理,程序就不能編譯通過。如:IOException、文件讀寫異常FileNotFoundException:文件未找到異常EOFException:讀寫文件尾異常MalformedURLException:URL格式錯誤異常SocketException:Socket異常SQLException:SQL數(shù)據(jù)庫異常 抽象類和接口的區(qū)別1. 抽象類由public abstract修飾,接口由public interface修飾。2. 類(抽象類也是類)只支持單繼承,但接口可以實現(xiàn)多個接口。接口不是類,接口和類同屬于Java中的一個類型。3. 抽象類里由構(gòu)造器、常量、變量、抽象方法、普通方法構(gòu)成,接口里只包括常量和抽象方法,沒有構(gòu)造器和普通方法。4. 是否是使用抽象類還是接口,主要看想要實現(xiàn)什么樣的事情,如果側(cè)重于描述事務(wù),應(yīng)該選擇抽象類,如果側(cè)重于定義功能,建議選擇使用接口。 修飾符的作用修飾符同一個類中同一個包中子類中全局privateYesDefaultYesYesprotectedYesYesYespublicYesYesYesYes HashMap和Hashtable的區(qū)別 HashMap和Hashtable是Map接口下的兩個實現(xiàn)類,因為Map對象是鍵值對的,所以此兩類也是鍵值對的。 HashMap是線程非安全的,Hashtable是線程安全的,所以HashMap的效率高于Hashtable。 HashMap允許鍵或值為null,鍵最多只可以有一個為null,值不受限制。而Hashtable鍵或值都不許為null。注意:Hashtable中的“t”是小寫的。 字節(jié)流和字符流的區(qū)別以stream結(jié)尾都是字節(jié)流,以reader和writer結(jié)尾都是字符流,兩者的區(qū)別就是讀寫的時候一個是按字節(jié)讀寫,一個是按字符。在實際使用時差不多。在讀寫文件需要對內(nèi)容按行處理,比如比較特定字符,處理某一行數(shù)據(jù)的時候一般會選擇字符流。只是讀寫文件,和文件內(nèi)容無關(guān)的,一般選擇字節(jié)流。 運行異常和檢查異常有何不同異常表示程序運行過程中可能出現(xiàn)的非正常狀態(tài),運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。 error和exception的區(qū)別error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問題。比如說內(nèi)存溢出,不可能指望程序能處理這樣的情況。exception表示一種設(shè)計或?qū)崿F(xiàn)問題,也就是說,它表示如果程序運行正常,從不會發(fā)生的情況。 舉例最常用的五個運行時異常NullPointerException空指針、ArrayIndexOutOfBoundsException數(shù)組越界、ClassCastException 類轉(zhuǎn)換異常、IllegelArgumentException輸入輸出異常、SecurityException 權(quán)限不夠。 Sleep和wait的區(qū)別(網(wǎng)上的答案:sleep是線程類(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時間,給執(zhí)行機會給其他線程,但是監(jiān)控狀態(tài)依然保持,到時后會自動恢復(fù)。調(diào)用sleep不會釋放對象鎖。 wait是Object類的方法,對此對象調(diào)用wait方法導(dǎo)致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法(或notifyAll)后本線程才進入對象鎖定池準(zhǔn)備獲得對象鎖進入運行狀態(tài)。)sleep就是正在執(zhí)行的線程主動讓出cpu,cpu去執(zhí)行其他線程,在sleep指定的時間過后,cpu才會回到這個線程上繼續(xù)往下執(zhí)行,如果當(dāng)前線程進入了同步鎖,sleep方法并不會釋放鎖,即使當(dāng)前線程使用sleep方法讓出了cpu,但其他被同步鎖擋住了的線程也無法得到執(zhí)行。wait是指在一個已經(jīng)進入了同步鎖的線程內(nèi),讓自己暫時讓出同步鎖,以便其他正在等待此鎖的線程可以得到同步鎖并運行,只有其他線程調(diào)用了notify方法(notify并不釋放鎖,只是告訴調(diào)用過wait方法的線程可以去參與獲得鎖的競爭了,但不是馬上得到鎖,因為鎖還在別人手里,別人還沒釋放。如果notify方法后面的代碼還有很多,需要這些代碼執(zhí)行完后才會釋放鎖,可以在notfiy方法后增加一個等待和一些代碼,看看效果),調(diào)用wait方法的線程就會解除wait狀態(tài)和程序可以再次得到鎖后繼續(xù)向下運行。對于wait的講解
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1