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

正文內(nèi)容

java軟件開發(fā)工程師面試題寶典(參考版)

2025-04-17 13:40本頁面
  

【正文】 } } private class Subtractor implements Runnable { Override public void run() { // TODO Autogenerated method stub w。i++) { new Thread( Adder()).start()。 for(int i=0。 private Lock lock = new ReentrantLock()。import 。 舉例說明(對下面的題用lock進行了改寫):package 。synchronized會自動釋放鎖,而Lock一定要求程序員手工釋放,并且必須在finally從句中釋放。 調(diào)用線程的start方法后線程進入就緒狀態(tài),線程調(diào)度系統(tǒng)將就緒狀態(tài)的線程轉(zhuǎn)為運行狀態(tài),遇到synchronized語句時,由運行狀態(tài)轉(zhuǎn)為阻塞,當(dāng)synchronized獲得鎖后,由阻塞轉(zhuǎn)為運行,在這種情況可以調(diào)用wait方法轉(zhuǎn)為掛起狀態(tài),當(dāng)線程關(guān)聯(lián)的代碼執(zhí)行完后,線程變?yōu)榻Y(jié)束狀態(tài)。 狀態(tài):就緒,運行,synchronize阻塞,wait和sleep掛起,結(jié)束。5線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之間的關(guān)系 一個程序中可以有多條執(zhí)行線索同時執(zhí)行,一個線程就是程序中的一條執(zhí)行線索,每個線程上都關(guān)聯(lián)有要執(zhí)行的代碼,即可以有多段程序代碼同時運行,每個程序至少都有一個線程,即main方法執(zhí)行的那個線程。 ,并且內(nèi)部沒有調(diào)用wait,則不能。 5當(dāng)一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法? 分幾種情況: ,如果沒加,則能。 Allnotity():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。 sleep():使一個正在運行的線程處于睡眠狀態(tài),是一個靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException異常。 當(dāng)應(yīng)用程序在對象上調(diào)用了一個需要花費很長時間來執(zhí)行的方法,并且不希望讓程序等待方法的返回時,就應(yīng)該使用異步編程,在很多情況下采用異步途徑往往更有效率。 如果數(shù)據(jù)將在線程間共享。 (thread2 is being over!)。 } catch (InterruptedException e) { // TODO Autogenerated catch block ()。 (thread2 is sleeping ten millisecond...)。//由于notify方法并不釋放鎖, 即使thread2調(diào)用下面的sleep方法休息了10毫秒,但thread1仍然不會執(zhí)行,因為thread2沒有釋放鎖,所以Thread1無法得不到鎖。 } } } private static class Thread2 implements Runnable { Override public void run() { // TODO Autogenerated method stub synchronized () { (enter thread2...)。 } (thread1 is going on...)。 ()。 try { //釋放鎖有兩種方式,第一種方式是程序自然離開監(jiān)視器的范圍,也就是離開了synchronized關(guān)鍵字管轄的代碼范圍,另一種方式就是在synchronized關(guān)鍵字管轄的代碼內(nèi)部調(diào)用監(jiān)視器對象的wait方法。 synchronized () { (enter thread1...)。 } private static class Thread1 implements Runnable { Override public void run() { // TODO Autogenerated method stub//由于這里的Thread1和下面的Thread2內(nèi)部run方法要用同一對象作為監(jiān)視器,我們這里不能用this,因為在Thread2里面的this和這個Thread1的this不是同一個對象。 } catch (InterruptedException e) { // TODO Autogenerated catch block ()。public class MultiThread { /** * param args */ public static void main(String[] args) { // TODO Autogenerated method stub new Thread(new Thread1()).start()。對于wait的講解一定要配合例子代碼來說明,才顯得自己真明白。wait是指在一個已經(jīng)進入了同步鎖的線程內(nèi),讓自己暫時讓出同步鎖,以便其他正在等待此鎖的線程可以得到同步鎖并運行,只有其他線程調(diào)用了notify方法(notify并不釋放鎖,只是告訴調(diào)用過wait方法的線程可以去參與獲得鎖的競爭了,但不是馬上得到鎖,因為鎖還在別人手里,別人還沒釋放。 wait是Object類的方法,對此對象調(diào)用wait方法導(dǎo)致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法(或notifyAll)后本線程才進入對象鎖定池準(zhǔn)備獲得對象鎖進入運行狀態(tài)。 4sleep() 和 wait() 有什么區(qū)別? (網(wǎng)上的答案:sleep是線程類(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時間,給執(zhí)行機會給其他線程,但是監(jiān)控狀態(tài)依然保持,到時后會自動恢復(fù)。若標(biāo)志指出線程應(yīng)該掛起,便用wait()命其進入等待狀態(tài)。對任何線程來說,如果它們想恢復(fù)目標(biāo)線程,同時又試圖使用任何一個鎖定的資源,就會造成死鎖。調(diào)用suspend()的時候,目標(biāo)線程會停下來,但卻仍然持有在這之前獲得的鎖定。結(jié)果很難檢查出真正的問題所在。有兩種實現(xiàn)方法,分別是繼承Thread類與實現(xiàn)Runnable接口 用synchronized關(guān)鍵字修飾同步方法 反對使用stop(),是因為它不安全。有兩種實現(xiàn)方法,分別使用new Thread()和new Thread(runnable)形式,第一種直接調(diào)用thread的run方法,所以,我們往往使用Thread子類,即new SubThread()。}().execute(new Runable(){public void run(){}})。i10。這表示調(diào)用Thread對象接受的Runnable對象的run方法,new Runnable(){}表示一個Runnable的匿名子類的實例對象,runnable的子類加上run方法后的代碼如下:new Thread(new Runnable(){ public void run(){ } } ).start()。這表示調(diào)用Thread子類對象的run方法,new Thread(){}表示一個Thread的匿名子類的實例對象,子類加上run方法后的代碼如下:new Thread(){ public void run(){ }}.start()。我比較有印象的系統(tǒng)異常有:NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException。提示答題者:就按照三個級別去思考:虛擬機必須宕機的錯誤,程序可以死掉也可以不死掉的錯誤,程序不應(yīng)該死掉的錯誤;4請寫出你最常見到的5個runtime exception。Exception表示程序還能夠克服和恢復(fù)的問題,其中又分為系統(tǒng)異常和普通異常,系統(tǒng)異常是軟件本身缺陷所導(dǎo)致的問題,也就是軟件開發(fā)人員考慮不周所導(dǎo)致的問題,軟件使用者無法克服和恢復(fù)這種問題,但在這種問題下還可以讓軟件系統(tǒng)繼續(xù)運行或者讓軟件死掉,例如,數(shù)組腳本越界(ArrayIndexOutOfBoundsException),空指針異常(NullPointerException)、類轉(zhuǎn)換異常(ClassCastException);普通異常是運行環(huán)境的變化或異常所導(dǎo)致的問題,是用戶能夠克服的問題,例如,網(wǎng)絡(luò)斷線,硬盤空間不夠,發(fā)生這樣的異常后,程序不應(yīng)該死掉。 異常是指java程序運行時(非編譯)所發(fā)生的非正常情況或錯誤,與現(xiàn)實生活中的事件很相似,現(xiàn)實生活中的事件可以包含事件發(fā)生的時間、地點、人物、情節(jié)等信息,可以用一個對象來表示,Java使用面向?qū)ο蟮姆绞絹硖幚懋惓?,它把程序中發(fā)生的每個異常也都分別封裝到一個對象來表示的,該對象中包含有異常的信息。也就是說,它表示如果程序運行正常,從不會發(fā)生的情況。不可能指望程序能處理這樣的情況。4error和exception有什么區(qū)別? error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問題。JVM不保證此方法總被調(diào)用4運行時異常與一般異常有何異同? 異常表示程序運行過程中可能出現(xiàn)的非正常狀態(tài),運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。 內(nèi)部類要訪問局部變量,局部變量必須定義成final類型,例如,一段代碼……finally是異常處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行。 } }執(zhí)行結(jié)果func1func22結(jié)論:finally中的代碼比return 和break語句后執(zhí)行final, finally, finalize的區(qū)別。 } int func2() { (func2)。 } } int func1() { (func1)。 } int test() { try { return func1()。Return并不是讓函數(shù)馬上返回,而是return語句執(zhí)行后,將把返回結(jié)果放置進函數(shù)棧中,此時函數(shù)并不是馬上返回,它要執(zhí)行finally語句后才真正開始返回。 } }}返回的結(jié)果是2。 } public int get() { try { return 1 。 int b = ()。所謂返回,就是子函數(shù)說,我不運行了,你主函數(shù)繼續(xù)運行吧,這沒什么結(jié)果可言,結(jié)果是在說這話之前放進罐子里的。 } finally { ++x。 } static int test() { int x = 1。最終打印的結(jié)果應(yīng)該為true。寫如下兩行代碼, String s = a + b + c + d。第一條語句打印的結(jié)果為false,第二條語句打印的結(jié)果為true,這說明javac編譯可以對字符串常量直接相加的表達式進行優(yōu)化,不必要等到運行期去進行加法運算處理,而是在編譯時去掉其中的加號,直接將其編譯成一個這些常量相連的結(jié)果。(s2 == ab)。String s2 = s1 + b。3下面這條語句一共創(chuàng)建了多少個對象:String s=a+b+c+d。}3數(shù)組有沒有l(wèi)ength()這個方法? String有沒有l(wèi)ength()這個方法? 數(shù)組沒有l(wèi)ength()這個方法,有l(wèi)ength的屬性。Int i=0。2. 用 StingTokenizer ,代碼為:StringTokenizer tokener = StringTokenizer(orgStr,”,”)。String覆蓋了equals方法和hashCode方法,而StringBuffer沒有覆蓋equals方法和hashCode方法,所以,將StringBuffer對象存儲進Java集合類中時會出現(xiàn)問題。i++){ str = str + i。 for(int i=0。}上面的代碼效率很高,因為只創(chuàng)建了一個StringBuffer對象,而下面的代碼效率很低,因為創(chuàng)建了101個對象。i100。StringBuffer sbf = new StringBuffer()。另外,String實現(xiàn)了equals方法,new String(“abc”).equals(new String(“abc”)的結(jié)果為true,而StringBuffer沒有實現(xiàn)equals方法,所以,new StringBuffer(“abc”).equals(new StringBuffer(“abc”)的結(jié)果為false。當(dāng)你知道字符數(shù)據(jù)要改變的時候你就可以使用StringBuffer。這個String類提供了數(shù)值不可改變的字符串。如果以前就用過’xyz’,這句代表就不會創(chuàng)建”xyz”自己了,直接從緩沖區(qū)拿。創(chuàng)建了幾個String Object? 二者之間有什么區(qū)別?兩個或一個,”xyz”對應(yīng)一個對象,這個對象放在字符串常量緩沖區(qū),常量”xyz”不管出現(xiàn)多少遍,都是緩沖區(qū)中的那一個。3是否可以繼承String類? String類是final類故不可以繼承。當(dāng)然也有一些缺點,比如每個不同的狀態(tài)都要一個對象來代表,可能會造成性能上的問題。在開發(fā)一個系統(tǒng)的時候,我們有時候也需要設(shè)計不可變類,來傳遞一組相關(guān)的值,這也是面向?qū)ο笏枷氲捏w現(xiàn)。至于為什么要把String類設(shè)計成不可變類,是它的用途決定的。上面的結(jié)論還基于這樣一個事實:對于字符串常量,如果內(nèi)容相同,Java認(rèn)為它們代表同一個String對象。后者每次都會調(diào)用構(gòu)造器,生成新對象,性能低下且內(nèi)
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1