天天看點

Java面試題大全系列之Java基礎類庫(一)

動力節點Java學院整理

1、java 中有幾種類型的流?JDK 為每種類型的流提供了一些抽象類以供繼承,請說出他們分别是哪些類?

位元組流,字元流。位元組流繼承于 InputStream OutputStream,字元流繼承于 Reader Writer。

在 java.io 包中還有許多其他的流,低層流與調層流,高層流主要是為了提高性能和使用友善。

2、啟動一個線程是用 run()還是 start()?

啟動一個線程是調用 start()方法,啟動線程并調用 run 方法。

3、線程的基本概念、線程的基本狀态以及狀态之間的關系

線程是程序内的并發,沒有自已記憶體空間,共享程序的,線程間的通信成本較低。

Java 中的線程有四種狀态分别是:運作、就緒、挂起、結束。

4、多線程有幾種實作方法,都是什麼?同步有幾種實作方法,都是什麼? 用什麼關鍵字修飾同步方法?

stop()和 suspend()方法為何不推薦使用?

Extends Thread

Implements Runnable

同步

Public synchronized aa()

{

}

Public void cc(object aa)

synchronized(aa)

用 synchoronized 修飾同步方法。

答:多線程有兩種實作方法,分别是繼承 Thread 類與實作 Runnable 接口

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

5、集合架構有什麼?

Collection Map

List set HashMap

ArrayList linkedList HashSet TreeSet

動力節點Java學院整理釋出

轉載請注明出處