Java程序員面試題大全系列之Java基礎(chǔ)類庫(kù)(一)

?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?動(dòng)力節(jié)點(diǎn)Java學(xué)院整理? ???
1、java 中有幾種類型的流?JDK 為每種類型的流提供了一些抽象類以供繼承,請(qǐng)說(shuō)出他們分別是哪些類?
?
字節(jié)流,字符流。字節(jié)流繼承于 InputStream OutputStream,字符流繼承于 Reader Writer。
在 java.io 包中還有許多其他的流,低層流與調(diào)層流,高層流主要是為了提高性能和使用方便。
?
?
2、啟動(dòng)一個(gè)線程是用 run()還是 start()?
啟動(dòng)一個(gè)線程是調(diào)用 start()方法,啟動(dòng)線程并調(diào)用 run 方法。
?
?
3、線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之間的關(guān)系
?
線程是進(jìn)程內(nèi)的并發(fā),沒(méi)有自已內(nèi)存空間,共享進(jìn)程的,線程間的通信成本較低。
Java 中的線程有四種狀態(tài)分別是:運(yùn)行、就緒、掛起、結(jié)束。
?
?
4、多線程有幾種實(shí)現(xiàn)方法,都是什么?同步有幾種實(shí)現(xiàn)方法,都是什么? 用什么關(guān)鍵字修飾同步方法?
stop()和 suspend()方法為何不推薦使用?
Extends Thread
Implements Runnable
同步
Public synchronized aa()
{
}
Public void cc(object aa)
{
synchronized(aa)
{
}
}
用 synchoronized 修飾同步方法。
答:多線程有兩種實(shí)現(xiàn)方法,分別是繼承 Thread 類與實(shí)現(xiàn) Runnable 接口
同步的實(shí)現(xiàn)方面有兩種,分別是 synchronized,wait 與 notify反對(duì)使用 stop(),是因?yàn)樗话踩K鼤?huì)解除由線程獲取的所有鎖定,而且如果對(duì)象處于一種不連貫狀態(tài),那么其他線程能在那種狀態(tài)下檢查和修改它們。結(jié)果很難檢查出真正的問(wèn)題所在。suspend()方法容易發(fā)生死鎖。調(diào)用 suspend()的時(shí)候,目標(biāo)線程會(huì)停下來(lái),但卻仍然持有在這之前獲得的鎖定。此時(shí),其他任何線程都不能訪問(wèn)鎖定的資源,除非被"掛起"的線程恢復(fù)運(yùn)行。對(duì)任何線程來(lái)說(shuō),如果它們想恢復(fù)目標(biāo)線程,同時(shí)又試圖使用任何一個(gè)鎖定的資源,就會(huì)造成死鎖。所以不應(yīng)該使用 suspend(),而應(yīng)在自己的 Thread 類中置入一個(gè)標(biāo)志,指出線程應(yīng)該活動(dòng)還是掛起。若標(biāo)志指出線程應(yīng)該掛起,便用 wait()命其進(jìn)入等待狀態(tài)。若標(biāo)志指出線程應(yīng)當(dāng)恢復(fù),則用一個(gè) notify()重新啟動(dòng)線程。
?
5、集合框架有什么?
Collection Map
List set HashMap
ArrayList linkedList HashSet TreeSet
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 動(dòng)力節(jié)點(diǎn)Java學(xué)院整理發(fā)布
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 轉(zhuǎn)載請(qǐng)注明出處
?
?