2023年java企業(yè)面試題_第1頁
2023年java企業(yè)面試題_第2頁
2023年java企業(yè)面試題_第3頁
2023年java企業(yè)面試題_第4頁
2023年java企業(yè)面試題_第5頁
已閱讀5頁,還剩86頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1+2+3+100構(gòu)建一個(gè)函數(shù)。(易)

答案:

publicintSum(intn)

if(n==1)

return1;

else

returnn+Sum(n-1);

2、描述冒泡算法。(易)

答案:

基本思緒:對尚未排序的各元素從頭到尾依次比較相鄰的兩個(gè)元素是否逆序(與

欲排順序相反),若逆序就互換這兩元素,通過第一輪比較排序后便可把最大(或最

?。┑脑嘏藕?,然后再用同樣的方法把剩下的元素逐個(gè)進(jìn)行比較,就得到了你所

要的順序??梢钥闯黾偃缬衝個(gè)元素,那么一共要進(jìn)行n-1輪比較,第i輪要進(jìn)

行j=n-i次比較。(如:有5個(gè)元素,則要進(jìn)行5-1輪比較。第3輪則要進(jìn)行5-3次

比較)

3、堆和棧的區(qū)別?。y)

答案:

二、堆和棧的理論知識

申請方式

堆:

由系統(tǒng)自動分派。例如,聲明在函數(shù)中一個(gè)局部變量intb;系統(tǒng)自動在棧中為

b開辟空間

棧:

需要程序員自己申請,并指明大小,在c中malloc函數(shù)

申請后系統(tǒng)的響應(yīng)

棧:只要棧的剩余空間大于所申請空間,系統(tǒng)將為程序提供內(nèi)存,否則將報(bào)異常

提醒棧溢出。

堆:一方面應(yīng)當(dāng)知道操作系統(tǒng)有一個(gè)記錄空閑內(nèi)存地址的鏈表,當(dāng)系統(tǒng)收到程序

的申請時(shí),

申請大小的限制

棧:在Windows下,棧是向低地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是一塊連續(xù)的內(nèi)存的區(qū)域。

這句話的意思是棧頂?shù)牡刂泛蜅5淖畲笕萘渴窍到y(tǒng)預(yù)先規(guī)定好的,在

WINDOWS下,棧的大小是2M(也有的說是1M,總之是一個(gè)編譯時(shí)就擬定的

常數(shù)),假如申請的空間超過棧的剩余空間時(shí),將提醒overflowo因此,能從棧

獲得的空間較小。

堆:堆是向高地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是不連續(xù)的內(nèi)存區(qū)域。這是由于系統(tǒng)是用鏈

表來存儲的空閑內(nèi)存地址的,自然是不連續(xù)的,而鏈表的遍歷方向是由低地址向

高地址。堆的大小受限于計(jì)算機(jī)系統(tǒng)中有效的虛擬內(nèi)存。由此可見,堆獲得的空

間比較靈活,也比較大。

申請效率的比較:

棧由系統(tǒng)自動分派,速度較快。但程序員是無法控制的。

堆是由new分派的內(nèi)存,一般速度比較慢,并且容易產(chǎn)生內(nèi)存碎片,但是用起來

最方便.

堆和棧中的存儲內(nèi)容

棧:在函數(shù)調(diào)用時(shí),第一個(gè)進(jìn)棧的是主函數(shù)中后的下一條指令(函數(shù)調(diào)用語句

的下一條可執(zhí)行語句)的地址,然后是函數(shù)的各個(gè)參數(shù),在大多數(shù)的C編譯器

中,參數(shù)是由右往左入棧的,然后是函數(shù)中的局部變量。注意靜態(tài)變量是不入棧

的。

小結(jié):

堆和棧的區(qū)別可以用如下的比方來看出:

使用棧就象我們?nèi)ワ堭^里吃飯,只管點(diǎn)菜(發(fā)出申請)、付錢、和吃(使用),吃

飽了就走,不必理睬切菜、洗菜等準(zhǔn)備工作和洗碗、刷鍋等掃尾工作,他的好處

是快捷,但是自由度小。

使用堆就象是自己動手做喜歡吃的菜肴,比較麻煩,但是比較符合自己的口味,

并且自由度大。

4、用單利模式構(gòu)建一個(gè)類(中)

答案:

publicclassSingletonTest{

privatestaticSingletonTestinstance;

privateSingletonTest(){}

publicstaticSingletonTestgetlnstance(){

if(instance==null){

instance=newSingletonTest。;}

returninstance;

5、索引是如何來提高搜索速度的?。y)

答案:

使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。索引是對數(shù)據(jù)庫表中一列或多列的

值進(jìn)行排序的一種結(jié)構(gòu),例如employee表的姓(Iname)歹假如要按姓查找

特定職工,與必須搜索表中的所有行相比,索引會幫助您更快地獲得該信息。

索引是一個(gè)單獨(dú)的、物理的數(shù)據(jù)庫結(jié)構(gòu),它是某個(gè)表中一列或若干列值的集

合和相應(yīng)的指向表中物理標(biāo)記這些值的數(shù)據(jù)頁的邏輯指針清單。

索引提供指向存儲在表的指定列中的數(shù)據(jù)值的指針,然后根據(jù)您指定的排序

順序?qū)@些指針排序。數(shù)據(jù)庫使用索引的方式與您使用書籍中的索引的方式很相

似:它搜索索引以找到特定值,然后順指針找到包含該值的行。

6、畫一個(gè)項(xiàng)目的體系結(jié)構(gòu)圖。(難)

答案:

Browser*1Server*1

WEBLayerBusinessLayerPersistentLayer”

(Struts)

Action*,_

Spring*'

Form”

1,對MVC的理解?(中)

答案:

MVC是Model-View-Controller的縮寫?!癕odel”代表的是應(yīng)用的業(yè)務(wù)邏輯(通過

JavaBean,EJB組件實(shí)現(xiàn)),"View”是應(yīng)用的表達(dá)面,用于與用戶的交互(由JSP頁

面產(chǎn)生)?!癈ontroller”是提供應(yīng)用的解決過程控制(一般是??個(gè)SERVLET)通過這種設(shè)計(jì)

模型所應(yīng)用邏輯解決過程和顯示邏輯提成不同的組件實(shí)現(xiàn)這些組件可以進(jìn)行交互和重用

MODEL層實(shí)現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯VIEW層用于與用戶的交互Controller層是Model與View

之間溝通的橋梁,可以分派用戶的請求并選擇恰當(dāng)?shù)囊晥D以用于顯示,同時(shí)它也可以解釋用

戶的輸入并將它們映射、為模型層可執(zhí)行的操作

2.抽象類和接口的區(qū)別?(中)

答案:

接口是公開的,不能包含私有的方法或變量,而抽象類是可以有私有方法或私有變量的,

實(shí)現(xiàn)接口的一定要實(shí)現(xiàn)接口里定義的所有方法,而實(shí)現(xiàn)抽象類可以有選擇地重寫需要用到的

方法,

接口可以實(shí)現(xiàn)多重繼承,而一個(gè)類只能繼承一個(gè)超類,但可以通過繼承多個(gè)接口實(shí)現(xiàn)多重繼

承,

接口尚有標(biāo)記(里面沒有任何方法,如Remoie接口)和數(shù)據(jù)共享(里面的變量全是常量)

的作用.

一般的應(yīng)用里,最頂級的是接口,然后是抽象類實(shí)現(xiàn)接口,最后才到具體類實(shí)現(xiàn)。

3.同步和異步有何異同,在什么情況下分別使用它們?(難)

答案:

通俗版:

舉個(gè)例子:普通B/S模式(同步)AJAX技術(shù)(異步)

同步:提交請求,等待服務(wù)器解決。解決完畢返回這個(gè)期間客戶端瀏覽器不能干任何事

異步:請求通過事件觸發(fā),服務(wù)器解決(這是瀏覽器仍然可以作其他事情),解決完畢

同步就是你叫我去吃飯,我聽到了就和你去吃飯:假如沒有聽到,你就不斷的叫,直到我告

訴你聽到了,才一起去吃飯。

異步就是你叫我,然后自己去吃飯,我得到消息后也許立即走,也也許等到下班才去吃飯。

所以,要我請你吃飯就用同步的方法,要請我吃飯就用異步的方法,這樣你可以省錢。

舉個(gè)例子打電話時(shí)同步發(fā)消息是異步

綜述版:

異步通信”是一種很常用的通信方式。異步通信在發(fā)送字符時(shí),所發(fā)送的字符之間的時(shí)間間

隔可以是任意的。當(dāng)然,接受端必須時(shí)刻做好接受的準(zhǔn)備(假如接受端主機(jī)的電源都沒有加

上,那么發(fā)送端發(fā)送字符就沒故意義,由于接受端主線無法接受)。發(fā)送端可以在任意時(shí)刻

開始發(fā)送字符,因此必須在每一個(gè)字符的開始和結(jié)束的地方加上標(biāo)志,即加上開始位和停止

位,以便使接受端可以對的地將每一個(gè)字符接受下來。異步通信的好處是通信設(shè)備簡樸、便

宜,但傳輸效率較低(由于開始位和停止位的開銷所占比例較大)。

異步通信也可以是以幀作為發(fā)送的單位。接受端必須隨時(shí)做好接受幀的準(zhǔn)備。這是,幀的首

部必須設(shè)有一些特殊的比特組合,使得接受端可以找出一幀的開始。這也稱為幀定界。幀定

界還包含擬定幀的結(jié)束位置。這有兩種方法。一?種是在幀的尾部設(shè)有某種特殊的比特組合來

標(biāo)志幀的結(jié)束。或者在幀首部中設(shè)有幀長度的字段。需要注意的是,在異步發(fā)送幀時(shí),并不

是說發(fā)送端對幀中的每一個(gè)字符都必須加上開始位和停止位后再發(fā)送出去,而是說,發(fā)送端

可以在任意時(shí)間發(fā)送一個(gè)幀,而幀與幀之間的時(shí)間間隔也可以是任意的。在一幀中的所有比

特是連續(xù)發(fā)送的。發(fā)送端不需要在發(fā)送一幀之前和接受端進(jìn)行協(xié)調(diào)(不需要先進(jìn)行比特同

步,每個(gè)字符開始發(fā)送的時(shí)間可以是任意的100110110起始位結(jié)束位I每個(gè)幀開始發(fā)送

的時(shí)間可以是任意的以字符為單位發(fā)送以幀為單位發(fā)送幀開始幀結(jié)束

“同步通信”的通信雙方必須先建立同步,即雙方的時(shí)鐘要調(diào)整到同一個(gè)頻率。收發(fā)雙方不

斷地發(fā)送和接受連續(xù)的同步比特流。但這時(shí)尚有兩種不同的同步方式。一種是使用全網(wǎng)同步,

用一個(gè)非常精確的主時(shí)鐘對全網(wǎng)所有結(jié)點(diǎn)上的時(shí)鐘進(jìn)行同步。另一種是使用準(zhǔn)同步,各結(jié)點(diǎn)

的時(shí)鐘之間允許有微小的誤差,然后采用其他措施實(shí)現(xiàn)同步傳輸。

串口進(jìn)行通信的方式有兩種:同步通信方式和異步通信方式。同步通信方式規(guī)定通信雙方以

相同的時(shí)鐘頻率進(jìn)行,并且準(zhǔn)確協(xié)調(diào),通過共享一個(gè)單個(gè)時(shí)鐘或定期脈沖源保證發(fā)送方和接

受方的準(zhǔn)確同步,效率較高;異步通信方式不規(guī)定雙方同步,收發(fā)方可采用各自的時(shí)鐘源,

雙方遵循異步的通信協(xié)議,以字符為數(shù)據(jù)傳輸單位,發(fā)送方傳送字符的時(shí)間間隔不擬定,發(fā)

送效率比同步傳送效率低。

4.說說你所熟悉或聽說過的J2EE中的幾種常用模式,及對設(shè)計(jì)模式的見解(中)

答案:

工廠模式、單例模式、代理模式、門面模式等

設(shè)計(jì)模式就是解決某一類問題的方法論

5.servlet的生命周期(中)

答案:

實(shí)例化今初始化今服務(wù)今銷毀

6.連接相數(shù)據(jù)庫的幾中方式(中)

答案:

直連

橋連

JNDI

7.Strings=newString(“abc");倉“建了幾個(gè)對象?(易)

兩個(gè),一個(gè)是“abc",一個(gè)是指向“abc”的引用

北京分形科技有限公司的筆試題目

選擇題:

1.下列是類和對象關(guān)系得是(B)(易)

A.蘋果和橘子B.水果和蘋果

C.水果和水果刀D.蘋果和水果刀

2.Inti=O;i=i++;執(zhí)行這2句話后變量i的值為(A)(難)

A.0B.1C.2D.3

程序題

一、.如何用2個(gè)棧實(shí)現(xiàn)隊(duì)列(難)

隊(duì)列的規(guī)定是先進(jìn)先出,用兩個(gè)??梢院苋菀椎膶?shí)現(xiàn)

假設(shè)其中一個(gè)棧為S1,另一個(gè)為S2

1.入隊(duì):將元素放入S1中,S2始終為空

2.出隊(duì):

1).一方面將S1中的元素所有導(dǎo)入S2的棧中,清空S1,

2).然后再將S2棧頂元素出棧,保存下來,

3).將s2剩余元素導(dǎo)入s1中,恢豆數(shù)據(jù)原有順序,就可以了

二、用遞歸實(shí)現(xiàn)任意一個(gè)數(shù)的階乘(中)

publicclasstest

(

publicstaticvoidmain(String[]args)

(

System.out.println(fuc(100));

}

publicstaticdoublefuc(intn)

jf(n==1)return1;

elsereturnn*fuc(n-1);

}

}

三、使用遞歸檢索指定文獻(xiàn)夾中的資源(難)

packagecom.accp;

importjava.io.File;

importjava.util.ArrayList;

importjava.util.Iterator;

importjava.util.List;

publicclassRecursive{

privatestaticListfileList=newArrayList();

/**

*使用遞歸搜索指定文獻(xiàn)夾中的資源

*

*@parampath

*要搜索的文獻(xiàn)目錄

*?return包含文獻(xiàn)途徑的列表

*/

publicstaticListsearchFile(Stringpath){

try{

//ListfileList=newArrayList();

Filedir=newFile(path);

File[]files=dir.listFiles();

if(files==null){

returnnull;

)

for(inti=0;i<files.length;i++){

if(files[i].isDirectory()){

fileList.add(files[i].gctAbsolutePath());

searchFile(files[i].getAbsolutePath());

}else{

StringstrFileName=files[i].getAbsolutePath()

.toLx)werCase();

fileList.add(files[i].getAbsolutePath());

I

}

returnfileList;

}catch(Exceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

returnnull;

)

}

publicstaticvoidmain(String[]args){

Stringpath="c:\\java";

longstart=Systcm.currcntTimcMillisO;

Recursiver=newRecursive。;

Listfiles=r.searchFile(path);

System.out.println("共有文獻(xiàn)數(shù)量:"+files.size());

System.out.print("總共用時(shí):");

System.out.prin(ln(System.curren(TimeMillis()-start);

Iteratori=files.iterator();

while(i.hasNex(O){

System.out.println(i.ncxtO);

}

四、編寫一個(gè)程序,它先將鍵盤上輸入的一個(gè)字符串轉(zhuǎn)換成十進(jìn)制整數(shù),然后打印出這個(gè)十

進(jìn)制整數(shù)相應(yīng)的二進(jìn)制形式。這個(gè)程序要考慮輸入的字符串不能轉(zhuǎn)換成一個(gè)十進(jìn)制整數(shù)的情

況,并對轉(zhuǎn)換失敗的因素要區(qū)分出是數(shù)字太大,還是其中包具有非數(shù)字字符的情況。(難)

importjava.io.*;

publicclassDicemal

{

publicstaticvoidmain(String[]args)throwsException

(

intshang=0,yu;

booleanflag=false;

System.out.printin("請輸入一個(gè)數(shù)字(最大值為<"+Inleger.MAX_VALUE+"):*):

InputStreamis=System,in;

InputStreamReaderisr=newInputStreamReader(is):

BufferedReaderbr=newBufferedReader(isr);

Stringstr=br.readLineO;

char[]ch=newchar[str.length()];

str.gctChars(O,str.length(),ch,0);

for(inta=0;a<str.length();a++)

(

if(JCharacter.isDigit(ch[a]))

(

System,out.printin("有非數(shù)字字符");

System.exit(0);

)

)

try

(

shang=Integer.parselnt(str);

flag=true;

)

catch(Exceptione)

(

System.out.printin("數(shù)字過大”);

)

str=**;

if(flag)

while(shang!=0)

yu=shang%2;

shang=shang/2:

str=yu+str;

}

}

System,out.println(str):

}

}

1.請寫出你知道的JAVA開源軟件,并用一句話說明其功能。(中)

答:StrutsWEB框架

SpringIOC/AOP框架

HibernateORM框架

DWRajax框架

Log4j日記調(diào)試

Validator驗(yàn)證框架

2.構(gòu)建工具Ant使用的缺省xml文獻(xiàn)名是?(中)

答:Build.xml

3.簡述什么是SOA。(難)

答:

面向服務(wù)的體系結(jié)構(gòu)(Service-OrientedArchitecture,SOA)是一個(gè)組件模型,它將應(yīng)用

程序的不同功能單元(稱為服務(wù))通過這些服務(wù)之間定義良好的接口和契約聯(lián)系起來。接口

是采用中立的方式進(jìn)行定義的,它應(yīng)當(dāng)獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺、操作系統(tǒng)和編程語言。

這使得構(gòu)建在各種這樣的系統(tǒng)中的服務(wù)可以一種統(tǒng)一和通用的方式進(jìn)行交互。

4.XML在JAVA中有那些解析方法。(難)

D0M/SAX

5.WAR包中的jar一般是放在哪個(gè)目錄下?(難)

答:lib

6.簡述Junit和單元測試的作用?(中)

答:檢查程序和預(yù)期設(shè)計(jì)的是否一致.

7.什么是工作流?(難)

答:

工作流(WorkFlow)就是工作流程的計(jì)算模型,即將工作流程中的工作如何前后組織在一

起的邏輯和規(guī)則在計(jì)算機(jī)中以恰當(dāng)?shù)哪P瓦M(jìn)行表達(dá)并對其實(shí)行計(jì)算。工作流要解決的重要問

題是:為實(shí)現(xiàn)某個(gè)業(yè)務(wù)目的,在多個(gè)參與者之間,運(yùn)用計(jì)算機(jī),按某種預(yù)定規(guī)則自幼傳遞文

檔、信息或者任務(wù)。簡樸地說,工作流就是一系列互相銜接、自動進(jìn)行的業(yè)務(wù)活動或任務(wù)。

我們可以將整個(gè)業(yè)務(wù)過程看作是一條河,其中流過的河水就是工作流。

工作流屬于計(jì)算機(jī)支持的協(xié)同工作(ComputerSupportedCooperativeWork,CSCW)

的一部分。后者是普遍地研究一個(gè)群體如何在計(jì)算機(jī)的幫助下實(shí)現(xiàn)協(xié)同工作的。

許多公司采用紙張表單,手工傳遞的方式,一級一級審批簽字,工作效率非常低下,對

于記錄報(bào)表功能則不能實(shí)現(xiàn)。而采用工作流軟件,使用者只需在電腦上填寫有關(guān)表單,會按

照定義好的流程自動往下跑,下一級審批者將會收到相關(guān)資料,并可以根據(jù)需要修改、跟蹤、

管理、查詢、記錄、打印等,大大提高了效率,實(shí)現(xiàn)了知識管理,提高了公司的核心競爭力。

金航網(wǎng)信息技術(shù)有限公司

1.<jsp:include>^<@include〉的區(qū)別分別在什么時(shí)候使用(中).

答:動作屬于動態(tài)包含,可以傳參,而指令則屬于靜態(tài)包含,不可傳參.

2.JavaEE是什么?(中)

答:是sun提出的一種規(guī)范和標(biāo)準(zhǔn).現(xiàn)在有很多種實(shí)現(xiàn)

3.什么是webService,有使用經(jīng)驗(yàn)嗎?(中)

答:基于WWW的一和服務(wù),可以實(shí)現(xiàn)異構(gòu)平臺間的互相調(diào)用.

4.Struts,wcbWork的理解.(中)

答:兩個(gè)實(shí)現(xiàn)了MVC的WEB應(yīng)用程序開發(fā)的框架.

5.對Spring的理解.(中)

答:Spring是一個(gè)容器框架,其核心機(jī)制在于IOC和AOP

6.ORM的中間控件有哪些(舉例).(中)

答:Hibemate,Ibatls,JDO,EnlityBean

北京鑫萬佳科技有限公司(java)

I.JSP內(nèi)置對象有哪些,,分別簡述作用?(中)

答:

request表達(dá)HltpServlctRcquesl對象。它包含了有關(guān)瀏覽器請求的信息

response表達(dá)HttpServletResponse對象,并提供了幾個(gè)用「設(shè)立瀏覽器的響應(yīng)的方法

out對象是javax.jspJspWriter的一個(gè)實(shí)例,并提供了幾個(gè)方法使你能用于向?yàn)g覽器回送輸出結(jié)果。

pageContexi表達(dá)一個(gè)javax.servlet.jsp.PageContexi對象。它是用于方便存取各種范圍的名字空間

session表達(dá)一個(gè)請求的javax.servlet.http.HttpSession對■象<>Session可以存貯用戶的狀態(tài)信息

applicaton表達(dá)一個(gè)javax.scrvlc.ScrvIclContcxt對象。這有助于查找有關(guān)scrvict引擎和scrvlcl環(huán)境的信息

config表達(dá)一個(gè)javax.scrvlcl.ScrvlctConflg對象。該對象用于存取servlet實(shí)例的初始化參數(shù)。

page表達(dá)從該頁面產(chǎn)生的一個(gè)servlel實(shí)例

2.JSP動作布*哪些,簡述作用?(中)

答:

jsp:include:在頁面被請求的時(shí)候引入一個(gè)文獻(xiàn)。

jsp:useBean:尋找或者實(shí)例化一個(gè)JavaBean。jsp:setProperty:設(shè)立JavaBean的屬性。

jspigetProperty:輸出某個(gè)JavaBean的屬性。

jsp:forward:把請求轉(zhuǎn)到一個(gè)新的頁面。jsp:plugin:根據(jù)瀏覽器類型為Java插件生成OBJECT

或EMBED標(biāo)記。

3.寫出JAVA的8個(gè)基本數(shù)據(jù)類型(易)

答:

Short,char,int,float,double,byte.Boolean,long

4.請寫出線程同步的方法(難)

答:synchronized!}

5.寫出java異常解決的5個(gè)關(guān)鍵字(中)

答:

Try,catch,finally,throw,throws

6.描述break和continue控制循環(huán)的流程不同之處(中)

答:break退出牡循環(huán)體,continue指退出當(dāng)前這次循環(huán),繼續(xù)進(jìn)入下一次循環(huán).

7.下面語句是否對的(難)

Publicclasshi{

PublicintaddOnc(finalintx){

return++x:

}

}

這樣寫對嗨?

不對,final意味若不可以修改.

1.接口和抽象類有什么區(qū)別?(中)

接口是公開的,不能包含私有的方法或變量,而抽象類是可以有私有方法或私有變量的,

實(shí)現(xiàn)接口的一定要實(shí)現(xiàn)接口里定義的所有方法,而實(shí)現(xiàn)抽象類可以有選擇地重寫需要用到的

方法,

接口可以實(shí)現(xiàn)多重繼承,而一個(gè)類只能繼承一個(gè)超類,但可以通過繼承多個(gè)接口實(shí)現(xiàn)多重繼

承,

接口尚有標(biāo)記(里面沒有任何方法,如Rcmoie接口)和數(shù)據(jù)共享(里面的變量全是常量)

的作用.

一般的應(yīng)用里,最頂級的是接口,然后是抽象類實(shí)現(xiàn)接口,最后才到具體類實(shí)現(xiàn)。

2.Strings=newString("xyz");創(chuàng)建了幾個(gè)StringObject?(中)

兩個(gè)對象,一個(gè)是“xyx”,一個(gè)是指向“xyx”的引用對象s。

3.代碼改錯(cuò)(難)

shortsi=1;si=si+1;有什么錯(cuò)?

shortsi=I;si=si+1;(sl+l運(yùn)算結(jié)果是int型,需要強(qiáng)制轉(zhuǎn)換類型)

shortsi=1;si+=1;有什么錯(cuò)?

shortsi=1;si+=1;(可以對的編譯)

4.是否可以繼承String類?(難)

String類是final類故不可以繼承。

5.try{}里有?個(gè)return語句,那么緊跟在這個(gè)try后的finally{}里的code會不會被執(zhí)行,什

么時(shí)候被執(zhí)行,在return前還是后?(易)

會執(zhí)行,在return前執(zhí)行。

6.常見的runtimeexception有哪些?。(易)

ArithmeticException,

ArrayStoreException,

BufferOverflowException,

BufferUnderflowException,

CannotRedoException,CannotUndoException.

ClassCastException,

CMMException,

ConcurrentModificationException,

DOMException,

EmptyStackException,IllegalArgumentException,

IllegalMonitorStateException,

IllegalPathStateException,

IllegalStateException,

ImagingOpException,IndexOutOfBoundsException,

MissingResourceException,

NegativeArraySizeException,

NoSuchElementException,NullPointerException,

ProfileDataException,

ProviderException,

RasterFormatException,

SecurityException,

SystemException,UndeclarcdThrowableException.

UnmodifiableSetException,

UnsupportedOperationException

NulIPointException

7.HashMap與HashTable的區(qū)別。(中)

一.歷史因素:Hashiable是基于陳舊的Dictionary類的,HashMap是Java1.2引進(jìn)的M叩接口

的一個(gè)實(shí)現(xiàn)

二.同步性:Hashtable是線程安全的,也就是說是同步的,而HashM叩是線程序不安全的,

不是同步的

三.值:只有HashMap可以讓你將空值作為一個(gè)表的條目的key或value

8.代碼推斷?(中)

Malh.round(l1.5)等於多少?Maih.round(-11.5)等於多少?

Math.round(l1.5)==12

Math.round(-11.5)=-l1

round方法返回與參數(shù)最接近的長整數(shù).

9.GC是什么?為什么要有GC?(難)

GC是垃圾收集的意思(GabageCollection)

Java提供的GC功能可以自動監(jiān)測對象是否超過作用域從而達(dá)成自動回收內(nèi)存的目的,

Java語言沒有提供釋放已分派內(nèi)存的顯示操作方法。

10.數(shù)組有沒有l(wèi)ength。這個(gè)方法?String有沒有l(wèi)ength。這個(gè)方法?(易)

數(shù)組沒有l(wèi)ength。這個(gè)方法,有l(wèi)ength的屬性。Siring有有l(wèi)ength。這個(gè)方法

11.構(gòu)造器Constructor是否可被(覆蓋)override?(易)

構(gòu)造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。

12Java有沒有g(shù)oto?(易)

java中的保存字,現(xiàn)在沒有在java中使用。

13.啟動一個(gè)線程是用run。還是s【art()?(中)

啟動一個(gè)線程是調(diào)用start。方法,使線程所代表的虛擬解決機(jī)處在可運(yùn)營狀態(tài),這意味著它

可以由JVM調(diào)度并執(zhí)行。

這并不意味著線程就會立即運(yùn)營。run()方法可以產(chǎn)生必須退出的標(biāo)志來停止一個(gè)線程。

14.兩個(gè)對象值相同(x.equals(y)==true),但卻可有不同的hashcode,這句話對不對?(中)

不對,有相同的hashcode。

15.&和&&的區(qū)別。(中)

&是位運(yùn)算符,表達(dá)按位與運(yùn)算,&&是邏輯運(yùn)算符,表達(dá)邏輯與(and)。

16.final,finally,finalize的區(qū)別。[中]

final用于聲明屬性,方法和類,分別表達(dá)屬性不可變,方法不可覆蓋,類不可繼承。

finally是異常解決語句結(jié)構(gòu)的一部分,表達(dá)總是執(zhí)行。

finalize是Object類的一個(gè)方法,在垃圾收集器執(zhí)行的時(shí)候會調(diào)用被I則攵對象的此方法,

可以覆蓋此方法提供垃圾收集時(shí)的其他資源回收,例如關(guān)閉文獻(xiàn)等。

17.swiich是否能作用在byte上,是否能作用在long上,是否能作用在String上?(中)

switch(exprl)中,exprl是一個(gè)整數(shù)表達(dá)式。應(yīng)當(dāng)是int、short>charbyte。

long,string都不能作用于swtich。

31.編程題:寫一個(gè)Singleton出來。[難]

Singleton模式重要作用是保證在Java應(yīng)用程序中,?個(gè)類Class只有一個(gè)實(shí)例存在。

第一種形式:定義一個(gè)類,它的構(gòu)造函數(shù)為private的,它有一個(gè)static的private的該類變量,

在類初始化時(shí)實(shí)例話,通過?個(gè)public的getlnstance方法獲取對它的引用,維而調(diào)用其中的

方法。

publicclassSingleton{

privateSingleton(){}

privatestaticSingletoninstance=newSingletonO;

publicstaticSingletongetlnstance(){

returninstance;

}

)

第二種形式:

publicclassSingleton{

privatestaticSingletoninstance=null;

publicstaticsynchronizedSingletongetlnstanceO{

if(instance==null)

instance=newSingleton();

returninstance;}

)

StringtempStr=,M';

try{

tempStr=newString(str.getBytes(,,ISO-8859"l"),"GBK");

tempStr=tempStr.trim();

)

catch(Exceptione){

System.err.println(e.getMessageO);

}

returntempStr;

)

1、String與StringBu偉er的區(qū)別(中)

答:String一但聲明,在內(nèi)存中是不可改變的,而StringBuffer是可變的字符序列。

2、char型變量中能不能存貯一個(gè)中文漢字?為什么?(中)

答:可以,就為采用Unicode編碼.

3、Float型floatf=3.4是否對的?(易)

答:不對的,應(yīng)為:floatf=3.4f;

4、下面語句執(zhí)行后的結(jié)果是什么?(難)

答案:false;true

Stringa="teststringA";

StringBufferb=newStringBuffer("teststringA");

Stringc=,,teststringA";

System.out.printin(a.equals(b.toString()));

5、System.out.printIn(a==c);class.fomame的作用?為什么要用?

6、說明抽象類與接口的相同點(diǎn)和不同點(diǎn)(中)

答:

1.是否可以被多繼承

2.是否可以包含方法體

3.是否可以包含私有成員

4.用途不同

7、JSP中動態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?(難)

答:動態(tài)包含可以傳遞參數(shù),而靜態(tài)則不可以。

8、JSP有哪些內(nèi)置對象,作用分別是什么?(中)

答:

request表達(dá)HttpServletRequest對象。它包含了有關(guān)瀏覽器請求的信息

response表達(dá)HttpServletResponse對象,并提供了幾個(gè)用于設(shè)立瀏覽器的響應(yīng)的方法

out對象是javax.jsp.JspWriter的一個(gè)實(shí)例,并提供了幾個(gè)方法使你能用于向?yàn)g覽器回送輸出

結(jié)果。

pageContext表達(dá)一個(gè)javax.servlet.jsp.PageContext對象。它是用于方便存取各種范圍的名字

空間

session表達(dá)一個(gè)請求的javax.servlet.hiip.HupSession對象。Session可以存貯用戶的狀態(tài)信息

applicaion表達(dá)一個(gè)javax.servle.ServletConiext對象。這有助于查找有關(guān)servlet引擎和servlet

環(huán)境的信息

config表達(dá)一個(gè)javax.servlel.ServleiConfig對象。該對象用于存取servlet實(shí)例的初始化參數(shù)。

page表達(dá)從該頁面產(chǎn)生的一個(gè)servlet實(shí)例

(—)Java部分:

1.以下程序代碼將輸出什么?(難)

答案:3null

publicclassTest{

staticinta=3;

staticStringb=null;

publicvoidreset(){

a=4;

b="abc”;

}

publicstaticvoidmain(String[]args){

System.out.printIn(a+"H+b);

)

}

2.以下程序代碼輸出的變量i的值為多少?(難)

答案:199

publicclassTest{

publicstaticvoidmain(String[]args){

inti=99;

add(i);

System.out.printin(i+100);

)

publicstaticvoidadd(inti){

i+=100;

)

)

3.以卜程序代碼中哪行代碼將產(chǎn)生錯(cuò)誤?(難)

classParent{

privateStringname;

piiblicParent(){

)

)

publicclassChildextendsParent{

privateStringdev;

publicChild(){

}

publicStringgetValue(){

)

publicstaticvoidmain(String[]args)

Parentp=newParent();

}

)

4.以下程序代碼的輸出結(jié)果為?(難)

答案:mqv

publicclassTest{

publicstaticvoidtest()(

try(

generateException();

System.out.print("e");

}catch(NumberFormatExceptionex){

System.out.print("jH);

}finally{

System,out.print("tn");

)

}

publicstaticvoidgenerateException(){

thrownewArraylndexOutOfBoundsException();

〃語法錯(cuò)誤

)

publicstaticvoidmain(String[]args){

try(

test();

}catch(Exceptionex){

System.out.print("q");

}finally{

System.out.print(nvn);

}

)

)

(二)問答題:

1.MVC的各個(gè)部分通常由哪些技術(shù)來實(shí)現(xiàn)?假如熟悉Struts框架技術(shù),請描述在Struts框

架中的MVC如何實(shí)現(xiàn)。(中)

答:

M:Module(模型層),一般由JavaBean實(shí)現(xiàn)

V:View(視圖層),一般由JSP頁面實(shí)現(xiàn)

C:Ctroller(控制器),一般由Servlet實(shí)現(xiàn).

Struts是實(shí)現(xiàn)了MVC的控制器框架,其中,它對Module沒有做特殊的限制,重要是在控

制器上做了工作,其核心控制器是ActionServlet一方面接受客戶端請求,然后會根據(jù)配置文

獻(xiàn)交給相應(yīng)的局部控制器來解決.該框架的View層重要是JSP和Tags構(gòu)成.

2.寫出Servlet的生命周期(中)

Servlet被服務(wù)器實(shí)例化后,容器運(yùn)營其init方法,請求到達(dá)時(shí)運(yùn)營其service

方法,service方法自動派遣運(yùn)營與請求相應(yīng)的doXXX方法(doGet,doPost)等,當(dāng)服

務(wù)器決定將實(shí)例銷毀的時(shí)候調(diào)用其destroy方法。

3.forward和redirect的區(qū)別(易)

forward是服務(wù)器請求資源,服務(wù)器直接訪問目的地址的URL,把那個(gè)URL的響應(yīng)內(nèi)容讀

取過來,然后把這些內(nèi)容再發(fā)給瀏覽器,瀏覽器主線不知道服務(wù)器發(fā)送的內(nèi)容是從哪兒

來的,所以它的地址欄中還是本來的地址。redirect就是服務(wù)端根據(jù)邏輯,發(fā)送一個(gè)狀

態(tài)碼,告訴瀏覽器重新去請求那個(gè)地址,一般來說瀏覽器會用剛才請求的所有參數(shù)重新

請求,所以session,request參數(shù)都可以獲取。

4.JNDI是什么?(難)

JNDT全稱JavaNamingandDirectoryInterface

JNDI是Java平臺的一個(gè)標(biāo)準(zhǔn)擴(kuò)展,提供了一組接口、類和關(guān)于命名空間的概念。如同其它很

多Java技術(shù)同樣,JDNI是provider-based的技術(shù),暴露了一個(gè)API和一個(gè)服務(wù)供應(yīng)接口(SPI)。

這意味著任何基于名字的技術(shù)都能通過JND1而提供服務(wù),只要JNDI支持這項(xiàng)技術(shù)。JND1目前所支

持的技術(shù)涉及LDAP、CORBACommonObjectService(COS)名字月艮務(wù)、RMkNDS、DNS、Windows

注冊表等等。很多J2EE技術(shù),涉及EJB都依靠JNDI來組織和定位實(shí)體。

5.錯(cuò)誤404,500分別表達(dá)什么?(中)

404,沒有找到該頁(沒有找到資源)。

500,內(nèi)部錯(cuò)誤。

1.對mvc的理解?(易)

MVC(Model-View-Controller,模型一視圖一控制器模式)用于表達(dá)一種軟

件架構(gòu)模式。它把軟件系統(tǒng)分為三個(gè)基本部分:模型(Model),視圖(View)

和控制器(Controller)。

*控制器?程序員編寫程序應(yīng)有的功能(實(shí)現(xiàn)算法等等)

*視圖-界面設(shè)計(jì)人員進(jìn)行圖形界面設(shè)計(jì)

*模型?數(shù)據(jù)庫專家進(jìn)行數(shù)據(jù)管理和數(shù)據(jù)庫設(shè)計(jì)

由于MVC的三個(gè)模塊互相獨(dú)立,改變其中一個(gè)不會影響其他兩個(gè),軟件的

可擴(kuò)展性和可維護(hù)性大大增長。開發(fā)人員可以通過自己的專長進(jìn)行分組開發(fā)。

在Java應(yīng)用程序中,視圖一般由jsp或htnil充當(dāng),控制器由Servlet或Struts

充當(dāng),模型層由JavaBcan或EJB充當(dāng)。

2.數(shù)據(jù)庫聯(lián)接的幾種方式?(中)

JAVA連接數(shù)據(jù)庫的方式有多種:

根據(jù)所需要的不同數(shù)據(jù)庫驅(qū)動分,分為四種:

1:1類驅(qū)動。這就是JDBC-ODBC橋的方式。但這種方式不適合程序的重用與

維護(hù),不推薦使用。需要數(shù)據(jù)庫的ODBC驅(qū)動。

2:2類驅(qū)動。這就是JDBC+廠商API的形式。廠商API一般使用C編寫,所以,

這種方式也不長使用。

3:3類驅(qū)動。這就是JDBC+廠商DatabaseConnectionServer+DataBase的形式。

這種方法就是在JAVA與DATABASE之間價(jià)起了一臺專門用與數(shù)據(jù)庫連接的

服務(wù)器(一般由數(shù)據(jù)庫廠商提供)。他的好處在于能優(yōu)化連接。

4:4類驅(qū)動。這就是純JDBC+DATABASE的連接方式。也是推薦的連接方式。

這使得APPLICATION與數(shù)據(jù)庫分開,開發(fā)者只需關(guān)心內(nèi)部邏輯的實(shí)現(xiàn)而不需注

重?cái)?shù)據(jù)庫連接的具體實(shí)現(xiàn)。在這其中有兩種連接的方式:

硬編碼方式,就是在程序中硬性編入數(shù)據(jù)庫連接的所須參數(shù)。

JNDIDataSourcc方式。就是在程序運(yùn)營的外布環(huán)境中又稱(Context)設(shè)立一個(gè)

datasource數(shù)據(jù)源,有一個(gè)jndi名稱,程序只須查找此名稱就可得到一個(gè)數(shù)據(jù)庫

連接的對象。

3.抽象類和接口的區(qū)別?(中)

1.abstractclass在Java語言中表達(dá)的是一種繼承關(guān)系,一個(gè)類只能使用一次

繼承關(guān)系。但是,一個(gè)類卻可以實(shí)現(xiàn)多個(gè)interface。

2.ffiabstractclass中可以有自己的數(shù)據(jù)成員,也可以有非abstarct的成員方

法,而在interface中,只可以有靜態(tài)的不能被修改的數(shù)據(jù)成員(也就是必須是

staticfinal的,但是在interface中一般不定義數(shù)據(jù)成員),所有的成員方法都是

abstract的。

3.abstractclass和interface所反映出的設(shè)計(jì)理念不同。其實(shí)abstractclass表達(dá)

的是“is-a”關(guān)系,interface表達(dá)的是“l(fā)ike-a”關(guān)系。

4.實(shí)現(xiàn)抽象類和接口的類必須實(shí)現(xiàn)其中的所有方法。抽象類中可以有非抽象

方法。接口中則不能有實(shí)現(xiàn)方法。

5.接口中定義的變量默認(rèn)是publicstaticfinal型,且必須給其初值,所以實(shí)

現(xiàn)類中不能重新定義,也不能改變其值。

6.抽象類中的變量默認(rèn)是friendly型,其值可以在子類中重新定義,也可以

重新賦值。

7.接口中的方法默認(rèn)都是public,abstract類型的。

4.Strings=newString("abc”);是幾個(gè)對象?(難)

假如在此語句之前沒有用到“abc",該語句會創(chuàng)建兩個(gè)對象,”xyz“就是發(fā)明

了一個(gè)String對象,然后調(diào)用的String類中的String(String)的構(gòu)造方法創(chuàng)建的

此外一個(gè)對象Jxyz”在全局?jǐn)?shù)據(jù)區(qū),s指向的對象在堆中。

假如語句如下:

Stringsi=newString("abcM);〃創(chuàng)建二個(gè)對象

Strings2=newString("abcu);〃創(chuàng)建一個(gè)對象,并且以后每執(zhí)

行一次創(chuàng)建一個(gè)對象

5Sevlet的生命周期?(易)

Servlet是一種可以在Servlet容器中運(yùn)營的組件,那么理所當(dāng)然就應(yīng)當(dāng)有一個(gè)從

創(chuàng)建到銷毀的過程,這個(gè)過程我們可以稱之為Servlet生命周期。Servlet的生命

周期可以分為加載、實(shí)例化、初始化、解決客戶請求和卸載五個(gè)階段,體現(xiàn)在方

法上重要是init()、service()和destroy()三個(gè)方法。生命周期的具體說明

如下:

Servlet容器完畢加載Servlet類和實(shí)例化一個(gè)Servlet對象

init()方法完畢初始化工作,該方法由Servlet容器調(diào)用完畢

service()方法解決客戶端請求,并返回響應(yīng)結(jié)果

destroy()方法在Servlet容器卸載Servlet之前被調(diào)用,釋放一些資源

6.簡述TCP的3次握手建立連接(難)

在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個(gè)連接。

第一次握手:建立連接時(shí),客戶端發(fā)送syn包(syn4到服務(wù)器,并進(jìn)入

SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);

SYN:同步序列編號(SynchronizeSequenceNumbers)

第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+l),同時(shí)自

己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV

狀態(tài);

第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包

ACK(ack=k+l),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完

畢三次握手。

完畢三次握手,客戶端與服務(wù)器開始傳送數(shù)據(jù)

172.18.25.110172.18.25.109

7.數(shù)據(jù)庫左連接和右連接的區(qū)別?(易)

左連接就是保存左邊表的相關(guān)字段,假如右邊表相關(guān)字段有不匹配的,以null

填充之。

右連接就是保存右邊表的相關(guān)字段,假如左邊表相關(guān)字段有不匹配的,以null

填充之

8.簡述垃圾回收?(中)

Java語言中一個(gè)顯著的特點(diǎn)就是引入了垃圾回收機(jī)制,使C++程序員最頭疼

的內(nèi)存管理的問題迎刃而解,它使得Java程序員在編寫程序的時(shí)候不再需要考

慮內(nèi)存管理。由于有個(gè)垃圾回收機(jī)制,Java中的對象不再有“作用域”的概念,

只有對象的引用才有“作用域”。垃圾回收可以有效的防止內(nèi)存泄露,有效的使

用可以使用的內(nèi)存。垃圾回收器通常是作為一個(gè)單獨(dú)的低檔別的線程運(yùn)營,不可

預(yù)知的情況下對內(nèi)存堆中已經(jīng)死亡的或者長時(shí)間沒有使用的對象進(jìn)行清楚和回

收,程序員不能實(shí)時(shí)的調(diào)用垃圾回收器對某個(gè)對象或所有對象進(jìn)行垃圾回收。回

收機(jī)制有分代復(fù)制垃圾回收和標(biāo)記垃圾回收,增量垃圾回收

9.用任意語言寫出一個(gè)堆棧的代碼(中)

使用javaUil.Stack可以直接創(chuàng)建堆棧對象,Stack類描述了一個(gè)對象的后進(jìn)先

出(LIFO)堆棧,pop()方法刪除棧頂?shù)膶ο蟛阉鳛樵摵瘮?shù)的值返

回,push(Object)把一個(gè)對象壓入棧頂。

用LinkedList也可以模擬堆棧實(shí)現(xiàn):

publicclassStack{

privateLinkedListlist=newLinkedList();

publicvoidadd(Objectobj){

list.addLast(obj);

)

publicObjectget(){

returnlist.removeLast();

}

publicstaticvoidmain(String[]args){

Stackstack=newStack();

stack.add("r');

stack.add("2'');

System.out.println(stack.getO);

)

)

10.用遞歸求出斐波那契數(shù)列的第30位數(shù)?(中)

publicstaticlongfib(intn){

if(n==1||n-2)return1;

elsereturnfib(n-l)+fib(n-2);

}

調(diào)用fib(30)即可得到結(jié)果

11.寫出一個(gè)函數(shù)實(shí)現(xiàn)將兩個(gè)有序數(shù)組合并位一個(gè)有序數(shù)組(中)

voidMcrgcArray(int[]pArrayl,intnLenl,int[]pArray2,intnLcn2,int

[]pArray)

inti,j,n;

n=0;

while(i<nLenl&&j<nLen2)//循環(huán)?直進(jìn)行到

拷貝完某一個(gè)數(shù)組的元素為止

if(pArray1[i]<pArray2[j])//拷貝array1的元

pArray[n++]=pArray1[i++];

elseif(pArray1[i]>pArray2[j])//拷貝array2的

pArray[n++]=pArray2[j++];

)

else//相等的元素拷

pArray[n++]=pArray2[j++];

++i;

)

}

if(i==nLenl)//假如array1已經(jīng)被

拷貝完畢就拷貝airay2的元素

while(j<nLen2)

pArray[n++]=pArray2[j++];

}

else//假如array2已經(jīng)被

拷貝完畢就拷貝arrayl的元素

while(i<nLenl)

pArray[n++]=pArrayl[i++];

}

12、說出ArrayList,Vector,LinkedList的存儲性能和特性(中)

ArrayList和Vector都是使用數(shù)組方式存儲數(shù)據(jù),此數(shù)組元素?cái)?shù)大于實(shí)際存儲

的數(shù)據(jù)以便增長和插入元素,它們都允許宜接按序號索弓【元素,但是插入元素要

涉及數(shù)組元素移動等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于使

用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList

使用雙向鏈表實(shí)現(xiàn)存儲,按序號索引數(shù)據(jù)需要進(jìn)行前向或后向遍歷,但是插入數(shù)

據(jù)時(shí)只需要記錄本項(xiàng)的前后項(xiàng)即可,所以插入速度較快。

13^Collection和Collections的區(qū)別。(易)

Collection是集合類的上級接口,繼承于它的接口重要有Set和List.

Collections是針對集合類的一個(gè)幫助類,他提供一系列靜態(tài)方法實(shí)現(xiàn)對各種集

合的搜索、排序、線程安全化等操作。

14、&和&&的區(qū)別。(易)

&是位運(yùn)算符,表達(dá)按位與運(yùn)算,皴是邏輯運(yùn)算符,表達(dá)邏輯與(and)o

15、HashMap和Hashtable的區(qū)別。(中)

HashMap是Hashlable的輕量級實(shí)現(xiàn)(非線程安全的實(shí)現(xiàn)),他們都完畢了Map

接口,重要區(qū)別在于HashMap允許空(null)鍵值(key),由于非線程安全,效

率上也許高于Hashtable。

HashMap允許將null作為一個(gè)entry的key或者value,而Hashtable不允許。

HashMap把Hashtable的contains方法去掉了,改成containsvalue和

containsKey<>由于contains方法容易讓人引起誤解。Hashtable繼承自

Dictionary類,而HashMap是Javal.2引進(jìn)的Mapinterface的一個(gè)實(shí)現(xiàn)。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個(gè)

線程訪問Hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap就必須

為之提供外同步。

Hashtable和HashMap采用的hash/rehash算法都大約同樣,所以性能不會有很

大的差異。

16^final,finally,finalize的區(qū)別。(中)

final用于聲明屬性,方法和類,分別表達(dá)屬性不可變,方法不可覆蓋,類不可

繼承。finally是異常解決語句結(jié)構(gòu)的一部分,表達(dá)總是執(zhí)行。finalize是Object

類的?個(gè)方法,在垃圾收集器執(zhí)行的時(shí)候會調(diào)用被回收對象的此方法,可以覆蓋

此方法提供垃圾收集時(shí)的其他資源回收,例如關(guān)閉文獻(xiàn)等。

17、sleepO和wait()有什么區(qū)別?(中)

sleep是線程類(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定期間,給執(zhí)行機(jī)會

給其他線程,但是監(jiān)控狀態(tài)仍然保持,屆時(shí)后會自動恢復(fù)。調(diào)用sleep不會釋放

對象鎖。wait是Object類的方法,對此對象調(diào)用wait方法導(dǎo)致本線程放棄對

象鎖,進(jìn)入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法(或

notifyAll)后本線程才進(jìn)入對象鎖定池準(zhǔn)備獲得對象鎖進(jìn)入運(yùn)營狀態(tài)。

18、Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類

型?(易)

方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫

Overriding是父類與子類之間多態(tài)性的?種表現(xiàn),重載

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論