硬核干活,Java中常見面試題目

硬核干活,Java中常見面試題目

天津卓眾教育      2022-04-27 07:49:01     12

硬核干活,Java中常見面試題目,概括的解釋下線程的幾種可用狀態(tài)。線程在執(zhí)行過程中,可以處于下面幾種狀態(tài):就緒(Runnable):線程準(zhǔn)備運(yùn)行,不一定立馬就能開始

課程價(jià)格 請咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹

    概括的解釋下線程的幾種可用狀態(tài)。

    線程在執(zhí)行過程中,可以處于下面幾種狀態(tài):

    就緒(Runnable):線程準(zhǔn)備運(yùn)行,不一定立馬就能開始執(zhí)行。

    運(yùn)行中(Running):進(jìn)程正在執(zhí)行線程的代碼。

    等待中(Waiting):線程處于阻塞的狀態(tài),等待外部的處理結(jié)束。睡眠中

    (Sleeping):線程被強(qiáng)制睡眠。

    I/O阻塞(BlockedonI/O):等待I/O操作完成。

    同步阻塞(BlockedonSynchronization):等待獲取鎖。

    死亡(Dead):線程完成了執(zhí)行。

    同步方法和同步代碼塊的區(qū)別是什么?

    在Java語言中,每一個(gè)對象有一把鎖。線程可以使用synchronized關(guān)鍵字來獲取對象上的

    鎖。

    synchronized關(guān)鍵字可應(yīng)用在方法級別(粗粒度鎖)或者是代碼塊級別(細(xì)粒度鎖)。

    在監(jiān)視器(Monitor)內(nèi)部,是如何做線程同步的?程序應(yīng)該做哪種級別的同步?

    監(jiān)視器和鎖在Java虛擬機(jī)中是一塊使用的。監(jiān)視器監(jiān)視一塊同步代碼塊,確保一次只有一

    個(gè)線程執(zhí)行同步代碼塊。每一個(gè)監(jiān)視器都和一個(gè)對象引用相關(guān)聯(lián)。線程在獲取鎖之前不允許

    執(zhí)行同步代碼。

    什么是死鎖(deadlock)?

    兩個(gè)進(jìn)程都在等待對方執(zhí)行完畢才能繼續(xù)往下執(zhí)行的時(shí)候就發(fā)生了死鎖。結(jié)果就是兩個(gè)進(jìn)程

    都陷入了無限的等待中。

    如何確保N個(gè)線程可以訪問N個(gè)資源同時(shí)又不導(dǎo)致死鎖?

    使用多線程的時(shí)候,一種非常簡單的避免死鎖的方式就是:指定獲取鎖的順序,并強(qiáng)制線程

    按照指定的順序獲取鎖。因此,如果所有的線程都是以同樣的順序加鎖和釋放鎖,就不會出現(xiàn)死鎖了。

    Java集合類

    Java集合類框架的基本接口有哪些?

    Java集合類提供了一套設(shè)計(jì)良好的支持對一組對象進(jìn)行操作的接口和類。Java集合類里面最

    基本的接口有:

    Collection:代表一組對象,每一個(gè)對象都是它的子元素。

    Set:不包含重復(fù)元素的Collection。

    List:有順序的collection,并且可以包含重復(fù)元素。

    Map:可以把鍵(key)映射到值(value)的對象,鍵不能重復(fù)。

    為什么集合類沒有實(shí)現(xiàn)Cloneable和Serializable接口?

    集合類接口指定了一組叫做元素的對象。集合類接口的每一種具體的實(shí)現(xiàn)類都可以選擇以它

    自己的方式對元素進(jìn)行保存和排序。有的集合類允許重復(fù)的鍵,有些不允許。

    什么是迭代器(Iterator)?

    Iterator接口提供了很多對集合元素進(jìn)行迭代的方法。每一個(gè)集合類都包含了可以返回迭代

    器實(shí)例的迭代方法。迭代器可以在迭代的過程中刪除底層集合的元素。

    克隆(cloning)或者是序列化(serialization)的語義和含義是跟具體的實(shí)現(xiàn)相關(guān)的。因此,應(yīng)該由

    集合類的具體實(shí)現(xiàn)來決定如何被克隆或者是序列化。

    Iterator和ListIterator的區(qū)別是什么?

    下面列出了他們的區(qū)別:

    Iterator可用來遍歷Set和List集合,但是ListIterator只能用來遍歷List。

    Iterator對集合只能是前向遍歷,ListIterator既可以前向也可以后向。

    ListIterator實(shí)現(xiàn)了Iterator接口,并包含其他的功能,比如:增加元素,替換元素,獲取前

    一個(gè)和后一個(gè)元素的索引,等等。

 以上就是天津卓眾教育java培訓(xùn)機(jī)構(gòu)的小編針對“硬核干活,Java中常見面試題目”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

Java面試題

培訓(xùn)啦提醒您:交易時(shí)請核實(shí)對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。