JAVA一些基礎知識2

來源:互聯網
上載者:User

1、請說出你所知道的線程同步的方法。
wait():使一個線程處於等待狀態,並且釋放所持有的對象的lock。
sleep():使一個正在啟動並執行線程處於睡眠狀態,是一個靜態方法,調用此方法要捕捉InterruptedException異常。
notify():喚醒一個處於等待狀態的線程,注意的是在調用此方法的時候,並不能確切的喚醒某一個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先順序。
Allnotity():喚醒所有處入等待狀態的線程,注意並不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。
2、你所知道的集合類都有哪些?主要方法?
最常用的集合類是 List 和 Map。 List 的具體實現包括 ArrayList 和 Vector,它們是可變大小的列表,比較適合構建、儲存和操作任何類型對象的元素列表。 List 適用於按數值索引訪問元素的情形。

Map 提供了一個更通用的元素儲存方法。 Map 集合類用於儲存元素對(稱作"鍵"和"值"),其中每個鍵映射到一個值。

3、多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼?
多線程有兩種實現方法,分別是繼承Thread類與實現Runnable介面
同步的實現方面有兩種,分別是synchronized,wait與notify

4、線程的基本概念、線程的基本狀態以及狀態之間的關係
線程指在程式執行過程中,能夠執行程式代碼的一個執行單位,每個程式至少都有一個線程,也就是程式本身。
Java中的線程有四種狀態分別是:運行、就緒、掛起、結束。

5、java常用的設計模式?說明原廠模式。
    Java中的23種設計模式:
Factory(原廠模式),      Builder(建造模式),       Factory Method(Factory 方法模式),
Prototype(原始模型模式),Singleton(單例模式),    Facade(門面模式),
Adapter(適配器模式),    Bridge(橋樑模式),        Composite(合成模式),
Decorator(裝飾模式),    Flyweight(享元模式),     Proxy(代理模式),
Command(命令模式),      Interpreter(解譯器模式), Visitor(訪問者模式),
Iterator(迭代子模式),   Mediator(調停者模式),    Memento(備忘錄模式),
Observer(觀察者模式),   State(狀態模式),         Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(責任鏈模式)
原廠模式:原廠模式是一種經常被使用到的模式,根據原廠模式實現的類可以根據提供的資料產生一組類中某一個類的執行個體,通常這一組類有一個公用的抽象父類並且實現了相同的方法,但是這些方法針對不同的資料進行了不同的操作。首先需要定義一個基類,該類的子類通過不同的方法實現了基類中的方法。然後需要定義一個工廠類,工廠類可以根據條件產生不同的子類執行個體。當得到子類的執行個體後,開發人員可以調用基類中的方法而不必考慮到底返回的是哪一個子類的執行個體。

6、排序都有哪幾種方法?請列舉。用JAVA實現一個快速排序。
    排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸併排序,分配排序(箱排序、基數排序)

快速排序的虛擬碼。
/ /使用快速排序方法對a[ 0 :n- 1 ]排序
從a[ 0 :n- 1 ]中選擇一個元素作為m i d d l e,該元素為支點
把餘下的元素分割為兩段left 和r i g h t,使得l e f t中的元素都小於等於支點,而right 中的元素都大於等於支點
遞迴地使用快速排序方法對left 進行排序
遞迴地使用快速排序方法對right 進行排序
所得結果為l e f t + m i d d l e + r i g h t

7、JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什麼意義?在try塊中可以拋出異常嗎?
Java通過物件導向的方法進行異常處理,把各種不同的異常進行分類,並提供了良好的介面。在Java中,每個異常都是一個對象,它是Throwable類或其它子類的執行個體。當一個方法出現異常後便拋出一個異常對象,該對象中包含有異常資訊,調用這個對象的方法可以捕獲到這個異常並進行處理。Java的異常處理是通過5個關鍵詞來實現的:try、catch、throw、throws和finally。一般情況下是用try來執行一段程式,如果出現異常,系統會拋出(throws)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最後(finally)由預設處理器來處理。

用try來指定一塊預防所有"異常"的程式。緊跟在try程式後面,應包含一個catch子句來指定你想要捕捉的"異常"的類型。
throw語句用來明確地拋出一個"異常"。
throws用來標明一個成員函數可能拋出的各種"異常"。
Finally為確保一段代碼不管發生什麼"異常"都被執行一段代碼。
可以在一個成員函數調用的外面寫一個try語句,在這個成員函數內部寫另一個try語句保護其他代碼。每當遇到一個try語句,"異常"的架構就放到堆棧上面,直到所有的try語句都完成。如果下一級的try語句沒有對某種"異常"進行處理,堆棧就會展開,直到遇到有處理這種"異常"的try語句。

8、一個".java"源檔案中是否可以包括多個類(不是內部類)?有什麼限制?
可以。必須只有一個類名與檔案名稱相同。
9、MVC的各個部分都有那些技術來實現?如何??
MVC是Model-View-Controller的簡寫。"Model" 代表的是應用的商務邏輯(通過JavaBean,EJB組件實現), "View" 是應用的表示面(由JSP頁面產生),"Controller" 是提供應用的處理過程式控制制(一般是一個Servlet),通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的組件實現。這些組件可以進行互動和重用。

10、java中有幾種方法可以實現一個線程?用什麼關鍵字修飾同步方法? stop()和suspend()方法為何不推薦使用?
有兩種實現方法,分別是繼承Thread類與實現Runnable介面
用synchronized關鍵字修飾同步方法
反對使用stop(),是因為它不安全。它會解除由線程擷取的所有鎖定,而且如果對象處於一種不連貫狀態,那麼其他線程能在那種狀態下檢查和修改它們。結果很難檢查出真正的問題所在。suspend()方法容易發生死結。調用suspend()的時候,目標線程會停下來,但卻仍然持有在這之前獲得的鎖定。此時,其他任何線程都不能訪問鎖定資源,除非被"掛起"的線程恢複運行。對任何線程來說,如果它們想恢複目標線程,同時又試圖使用任何一個鎖定資源,就會造成死結。所以不應該使用suspend(),而應在自己的Thread類中置入一個標誌,指出線程應該活動還是掛起。若標誌指出線程應該掛起,便用wait()命其進入等待狀態。若標誌指出線程應當恢複,則用一個notify()重新啟動線程。

11、java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類別以供繼承,請說出他們分別是哪些類?
位元組流,字元流。位元組流繼承於InputStream OutputStream,字元流繼承於InputStreamReader OutputStreamWriter。在java.io包中還有許多其他的流,主要是為了提高效能和使用方便。

1、請說出你所知道的線程同步的方法。
wait():使一個線程處於等待狀態,並且釋放所持有的對象的lock。
sleep():使一個正在啟動並執行線程處於睡眠狀態,是一個靜態方法,調用此方法要捕捉InterruptedException異常。
notify():喚醒一個處於等待狀態的線程,注意的是在調用此方法的時候,並不能確切的喚醒某一個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先順序。
Allnotity():喚醒所有處入等待狀態的線程,注意並不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。
2、你所知道的集合類都有哪些?主要方法?
最常用的集合類是 List 和 Map。 List 的具體實現包括 ArrayList 和 Vector,它們是可變大小的列表,比較適合構建、儲存和操作任何類型對象的元素列表。 List 適用於按數值索引訪問元素的情形。

Map 提供了一個更通用的元素儲存方法。 Map 集合類用於儲存元素對(稱作"鍵"和"值"),其中每個鍵映射到一個值。

3、多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼?
多線程有兩種實現方法,分別是繼承Thread類與實現Runnable介面
同步的實現方面有兩種,分別是synchronized,wait與notify

4、線程的基本概念、線程的基本狀態以及狀態之間的關係
線程指在程式執行過程中,能夠執行程式代碼的一個執行單位,每個程式至少都有一個線程,也就是程式本身。
Java中的線程有四種狀態分別是:運行、就緒、掛起、結束。

5、java常用的設計模式?說明原廠模式。
    Java中的23種設計模式:
Factory(原廠模式),      Builder(建造模式),       Factory Method(Factory 方法模式),
Prototype(原始模型模式),Singleton(單例模式),    Facade(門面模式),
Adapter(適配器模式),    Bridge(橋樑模式),        Composite(合成模式),
Decorator(裝飾模式),    Flyweight(享元模式),     Proxy(代理模式),
Command(命令模式),      Interpreter(解譯器模式), Visitor(訪問者模式),
Iterator(迭代子模式),   Mediator(調停者模式),    Memento(備忘錄模式),
Observer(觀察者模式),   State(狀態模式),         Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(責任鏈模式)
原廠模式:原廠模式是一種經常被使用到的模式,根據原廠模式實現的類可以根據提供的資料產生一組類中某一個類的執行個體,通常這一組類有一個公用的抽象父類並且實現了相同的方法,但是這些方法針對不同的資料進行了不同的操作。首先需要定義一個基類,該類的子類通過不同的方法實現了基類中的方法。然後需要定義一個工廠類,工廠類可以根據條件產生不同的子類執行個體。當得到子類的執行個體後,開發人員可以調用基類中的方法而不必考慮到底返回的是哪一個子類的執行個體。

6、排序都有哪幾種方法?請列舉。用JAVA實現一個快速排序。
    排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸併排序,分配排序(箱排序、基數排序)

快速排序的虛擬碼。
/ /使用快速排序方法對a[ 0 :n- 1 ]排序
從a[ 0 :n- 1 ]中選擇一個元素作為m i d d l e,該元素為支點
把餘下的元素分割為兩段left 和r i g h t,使得l e f t中的元素都小於等於支點,而right 中的元素都大於等於支點
遞迴地使用快速排序方法對left 進行排序
遞迴地使用快速排序方法對right 進行排序
所得結果為l e f t + m i d d l e + r i g h t

7、JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什麼意義?在try塊中可以拋出異常嗎?
Java通過物件導向的方法進行異常處理,把各種不同的異常進行分類,並提供了良好的介面。在Java中,每個異常都是一個對象,它是Throwable類或其它子類的執行個體。當一個方法出現異常後便拋出一個異常對象,該對象中包含有異常資訊,調用這個對象的方法可以捕獲到這個異常並進行處理。Java的異常處理是通過5個關鍵詞來實現的:try、catch、throw、throws和finally。一般情況下是用try來執行一段程式,如果出現異常,系統會拋出(throws)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最後(finally)由預設處理器來處理。

用try來指定一塊預防所有"異常"的程式。緊跟在try程式後面,應包含一個catch子句來指定你想要捕捉的"異常"的類型。
throw語句用來明確地拋出一個"異常"。
throws用來標明一個成員函數可能拋出的各種"異常"。
Finally為確保一段代碼不管發生什麼"異常"都被執行一段代碼。
可以在一個成員函數調用的外面寫一個try語句,在這個成員函數內部寫另一個try語句保護其他代碼。每當遇到一個try語句,"異常"的架構就放到堆棧上面,直到所有的try語句都完成。如果下一級的try語句沒有對某種"異常"進行處理,堆棧就會展開,直到遇到有處理這種"異常"的try語句。

8、一個".java"源檔案中是否可以包括多個類(不是內部類)?有什麼限制?
可以。必須只有一個類名與檔案名稱相同。
9、MVC的各個部分都有那些技術來實現?如何??
MVC是Model-View-Controller的簡寫。"Model" 代表的是應用的商務邏輯(通過JavaBean,EJB組件實現), "View" 是應用的表示面(由JSP頁面產生),"Controller" 是提供應用的處理過程式控制制(一般是一個Servlet),通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的組件實現。這些組件可以進行互動和重用。

10、java中有幾種方法可以實現一個線程?用什麼關鍵字修飾同步方法? stop()和suspend()方法為何不推薦使用?
有兩種實現方法,分別是繼承Thread類與實現Runnable介面
用synchronized關鍵字修飾同步方法
反對使用stop(),是因為它不安全。它會解除由線程擷取的所有鎖定,而且如果對象處於一種不連貫狀態,那麼其他線程能在那種狀態下檢查和修改它們。結果很難檢查出真正的問題所在。suspend()方法容易發生死結。調用suspend()的時候,目標線程會停下來,但卻仍然持有在這之前獲得的鎖定。此時,其他任何線程都不能訪問鎖定資源,除非被"掛起"的線程恢複運行。對任何線程來說,如果它們想恢複目標線程,同時又試圖使用任何一個鎖定資源,就會造成死結。所以不應該使用suspend(),而應在自己的Thread類中置入一個標誌,指出線程應該活動還是掛起。若標誌指出線程應該掛起,便用wait()命其進入等待狀態。若標誌指出線程應當恢複,則用一個notify()重新啟動線程。

11、java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類別以供繼承,請說出他們分別是哪些類?
位元組流,字元流。位元組流繼承於InputStream OutputStream,字元流繼承於InputStreamReader OutputStreamWriter。在java.io包中還有許多其他的流,主要是為了提高效能和使用方便。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.