Java軟件工程師綜合面試題_第1頁
Java軟件工程師綜合面試題_第2頁
Java軟件工程師綜合面試題_第3頁
Java軟件工程師綜合面試題_第4頁
Java軟件工程師綜合面試題_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Java軟件工程師綜合面試題

方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。假如在子類中定義某方法與其父類有一樣的名稱和參數(shù),我們說該方法被重寫(Overriding)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義猶如被”屏蔽”了。假如在一個類中定義了多個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以轉(zhuǎn)變返回值的類型。

2.代碼查錯:

a)留意考慮,聲明在接口中的對象是靜態(tài)常量,不允許被修改。所以假如在繼承接口的子類中,修改了引用,則會報錯

b)在一個類中,文件名可以與類名不一樣,但是這個類必需是非public的.

3.面象對象三大特征。

1.抽象:抽象就是忽視一個主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地留意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不準(zhǔn)備了解全部問題,而只是選擇其中的一局部,臨時不用局部細(xì)節(jié)。抽象包括兩個方面,一是過程抽象,二是數(shù)據(jù)抽象。

2.繼承:繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓舞類的重用,它供應(yīng)了一種明確表述共性的方法。對象的一個新類可以從現(xiàn)有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實(shí)例變量,并且類可以修改或增加新的方法使之更適合特別的需要。

3.封裝:封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的訪問只能通過已定義的界面。面對對象計算始于這個根本概念,即現(xiàn)實(shí)世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受愛護(hù)的接口訪問其他對象。

4.多態(tài)性:多態(tài)性是指允許不同類的對象對同一消息作出響應(yīng)。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多態(tài)性語言具有敏捷、抽象、行為共享、代碼共享的優(yōu)勢,很好的解決了應(yīng)用程序函數(shù)同名問題。

4.hashMap和hashtable的區(qū)分:

HashMap是Hashtable的輕量級實(shí)現(xiàn)(非線程安全的實(shí)現(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引進(jìn)的Mapinterface的一個實(shí)現(xiàn)。(繼承自AbstractMap類).

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap就必需為之供應(yīng)外同步。

Hashtable和HashMap采納的hash/rehash算法都也許一樣,所以性能不會有很大的差異。

5.啟動線程用什么方法?

start();

6.畫出模版模式圖

7.寫一段jdbc查詢代碼:

privateConnectioncon=null;

privatePreparedStatementpstmt=null;

privateResultSetrs=null;

publicvoidgetQuery(){

try{

Class.forName(“com.jdbc.mysql.Driver”);

con=(Connection)DriverManager.getConnection(“jdbc:mysql://localhost:3306/test”,“root”,“root”);

pstmt=(PreparedStatement)con.prepareStatement(“select*formtabName”);

rs=(ResultSet)pstmt.executeQuery();

while(rs.next()){

System.out.println(rs.getObject(1));

}

}catch(Exceptione){

e.printStackTrace();

}finally{

try{

if(rs!=null){rs.close();}

if(pstmt!=null){pstmt.close();}

if(con!=null){if(!con.isClosed()){con.close();}con=null;}

}catch(SQLExceptione){

e.printStackTrace();

}

}

}

8.索引的優(yōu)缺點(diǎn):

這是由于,創(chuàng)立索引可以大大提高系統(tǒng)的性能。

第一,通過創(chuàng)立唯一性索引,可以保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性。

其次,可以大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)立索引的最主要的緣由。

第三,可以加速表和表之間的連接,特殊是在實(shí)現(xiàn)數(shù)據(jù)的參考完整性方面特殊有意義。

第四,在使用分組和排序子句進(jìn)展數(shù)據(jù)檢索時,同樣可以顯著削減查詢中分組和排序的時間。

第五,通過使用索引,可以在查詢的過程中,使用優(yōu)化隱蔽器,提高系統(tǒng)的性能。

二、建立方向索引的不利因素(缺點(diǎn))

或許會有人要問:增加索引有如此多的優(yōu)點(diǎn),為什么不對表中的每一個列創(chuàng)立一個索引呢?這種想法當(dāng)然有其合理性,然而也有其片面性。雖然,索引有很多優(yōu)點(diǎn),但是,為表中的每一個列都增加索引,是特別不明智的。這是由于,增加索引也有很多不利的一個方面。

第一,創(chuàng)立索引和維護(hù)索引要消耗時間,這種時間隨著數(shù)據(jù)量的增加而增加。

其次,索引需要占物理空間,除了數(shù)據(jù)表占數(shù)據(jù)空間之外,每一個索引還要占肯定的物理空間,假如要建立聚簇索引,那么需要的空間就會更大。

第三,當(dāng)對表中的數(shù)據(jù)進(jìn)展增加、刪除和修改的時候,索引也要動態(tài)的維護(hù),這樣就降低了數(shù)據(jù)的維護(hù)速度。

三、創(chuàng)立方向索引的準(zhǔn)則

索引是建立在數(shù)據(jù)庫表中的某些列的上面。因此,在創(chuàng)立索引的時候,應(yīng)當(dāng)認(rèn)真考慮在哪些列上可以創(chuàng)立索引,在哪些列上不能創(chuàng)立索引。

一般來說,應(yīng)當(dāng)在這些列上創(chuàng)立索引。

第一,在常常需要搜尋的列上,可以加快搜尋的速度;

其次,在作為主鍵的列上,強(qiáng)制該列的唯一性和組織表中數(shù)據(jù)的排列構(gòu)造;

第三,在常常用在連接的列上,這些列主要是一些外鍵,可以加快連接的速度;

第四,在常常需要依據(jù)范圍進(jìn)展搜尋的列上創(chuàng)立索引,由于索引已經(jīng)排序,其指定的范圍是連續(xù)的;

第五,在常常需要排序的列上創(chuàng)立索引,由于索引已經(jīng)排序,這樣查詢可以利用索引的排序,加快排序查詢時間;

第六,在常常使用在WHERE子句中的列上面創(chuàng)立索引,加快條件的推斷速度。

同樣,對于有些列不應(yīng)當(dāng)創(chuàng)立索引。一般來說,不應(yīng)當(dāng)創(chuàng)立索引的的”這些列具有以下特點(diǎn):

第一,對于那些在查詢中很少使用或者參考的列不應(yīng)當(dāng)創(chuàng)立索引。這是由于,既然這些列很少使用到,因此有索引或者無索引,并不能提高查詢速度。相反,由于增加了索引,反而降低了系統(tǒng)的維護(hù)速度和增大了空間需求。

其次,對于那些只有很少數(shù)據(jù)值的列也不應(yīng)當(dāng)增加索引。這是由于,由于這些列的取值很少,例如人事表的性別列,在查詢的結(jié)果中,結(jié)果集的數(shù)據(jù)行占了表中數(shù)據(jù)行的很大比例,即需要在表中搜尋的數(shù)據(jù)行的比例很大。增加索引,并不能明顯加快檢索速度。

第三,對于那些定義為text,image和bit數(shù)據(jù)類型的列不應(yīng)當(dāng)增加索引。這是由于,這些列的數(shù)據(jù)量要么相當(dāng)大,要么取值很少。

第四,當(dāng)修改性能遠(yuǎn)遠(yuǎn)大于檢干脆能時,不應(yīng)當(dāng)創(chuàng)立索引。這是由于,修改性能和檢干脆能是相互沖突的。當(dāng)增加索引時,會提高檢干脆能,但是會降低修改性能。當(dāng)削減索引時,會提高修改性能,降低檢干脆能。因此,當(dāng)修改性能遠(yuǎn)遠(yuǎn)大于檢干脆能時,不應(yīng)當(dāng)創(chuàng)立索引。

四、創(chuàng)立索引的方法

創(chuàng)立索引有多種方法,這些方法包括直接創(chuàng)立索引的方法和間接創(chuàng)立索引的方法。

第一,直接創(chuàng)立索引,例如使用CREATEINDEX語句或者使用創(chuàng)立索引向?qū)А?/p>

其次,間接創(chuàng)立索引,例如在表中定義主鍵約束或者唯一性鍵約束時,同時也創(chuàng)立了索引。

9.truncate和delete,drop的區(qū)分:

不同點(diǎn):

1.truncate和delete只刪除數(shù)據(jù)不刪除表的構(gòu)造(定義)

drop語句將刪除表的構(gòu)造被依靠的約束(constrain),觸發(fā)器(trigger),索引(index);依靠于該表的存儲過程/函數(shù)將保存,但是變?yōu)閕nvalid狀態(tài).

2.delete語句是dml,這個操作會放到rollbacksegement中,事務(wù)提交之后才生效;假如有相應(yīng)的trigger,執(zhí)行的時候?qū)⒈挥|發(fā).

truncate,drop是ddl,操作馬上生效,原數(shù)據(jù)不放到rollbacksegment中,不能回滾.操作不觸發(fā)trigger.

3.delete語句不影響表所占用的extent,高水線(highwatermark)保持原位置不動

明顯drop語句將表所占用的空間全部釋放

truncate語句缺省狀況下見空間釋放到minextents個extent,除非使用reusestorage;truncate會將高水線復(fù)位(回到最開頭).

4.速度,一般來說:drop;truncate;delete

5.安全性:當(dāng)心使用drop和trunc

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論