亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學(xué)習(xí)啦>創(chuàng)業(yè)指南>職場>面試題>

      關(guān)于經(jīng)典JAVA面試題大全(2)

      時(shí)間: 朝瑩801 分享

        抽象類可以在不提供接口方法實(shí)現(xiàn)的情況下實(shí)現(xiàn)接口。

        Java接口中聲明的變量默認(rèn)都是final的。抽象類可以包含非final的變量。

        Java接口中的成員函數(shù)默認(rèn)是public的。抽象類的成員函數(shù)可以是private,protected或者是public。

        接口是絕對抽象的,不可以被實(shí)例化。抽象類也不可以被實(shí)例化,但是,如果它包含main方法的話是可以被調(diào)用的。

        也可以參考JDK8中抽象類和接口的區(qū)別

        10.什么是值傳遞和引用傳遞?

        對象被值傳遞,意味著傳遞了對象的一個(gè)副本。因此,就算是改變了對象副本,也不會(huì)影響源對象的值。

        對象被引用傳遞,意味著傳遞的并不是實(shí)際的對象,而是對象的引用。因此,外部對引用對象所做的改變會(huì)反映到所有的對象上。

        Java線程

        11.進(jìn)程和線程的區(qū)別是什么?

        進(jìn)程是執(zhí)行著的應(yīng)用程序,而線程是進(jìn)程內(nèi)部的一個(gè)執(zhí)行序列。一個(gè)進(jìn)程可以有多個(gè)線程。線程又叫做輕量級進(jìn)程。

        12.創(chuàng)建線程有幾種不同的方式?你喜歡哪一種?為什么?

        有三種方式可以用來創(chuàng)建線程:

        繼承Thread類

        實(shí)現(xiàn)Runnable接口

        應(yīng)用程序可以使用Executor框架來創(chuàng)建線程池

        實(shí)現(xiàn)Runnable接口這種方式更受歡迎,因?yàn)檫@不需要繼承Thread類。在應(yīng)用設(shè)計(jì)中已經(jīng)繼承了別的對象的情況下,這需要多繼承(而Java不支持多繼承),只能實(shí)現(xiàn)接口。同時(shí),線程池也是非常高效的,很容易實(shí)現(xiàn)和使用。

        13.概括的解釋下線程的幾種可用狀態(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阻塞(Blocked on I/O):等待I/O操作完成。

        同步阻塞(Blocked on Synchronization):等待獲取鎖。

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

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

        在Java語言中,每一個(gè)對象有一把鎖。線程可以使用synchronized關(guān)鍵字來獲取對象上的鎖。synchronized關(guān)鍵字可應(yīng)用在方法級別(粗粒度鎖)或者是代碼塊級別(細(xì)粒度鎖)。

        15.在監(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í)行同步代碼。

        16.什么是死鎖(deadlock)?

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

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

        使用多線程的時(shí)候,一種非常簡單的避免死鎖的方式就是:指定獲取鎖的順序,并強(qiáng)制線程按照指定的順序獲取鎖。因此,如果所有的線程都是以同樣的順序加鎖和釋放鎖,就不會(huì)出現(xiàn)死鎖了。

        Java集合類

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

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

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

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

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

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

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

        集合類接口指定了一組叫做元素的對象。集合類接口的每一種具體的實(shí)現(xiàn)類都可以選擇以它自己的方式對元素進(jìn)行保存和排序。有的集合類允許重復(fù)的鍵,有些不允許。

        20.什么是迭代器(Iterator)?

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

        迭代方法。迭代器可以在迭代的過程中刪除底層集合的元素。


        看過“關(guān)于經(jīng)典JAVA面試題大全”的人還看了:

      1.JAVA面試題大全及答案

      2.面試問題及答案

      3.面試中常見的經(jīng)典問題

      4.關(guān)于經(jīng)典的FBI面試題

      5.java面試自我介紹范文

      941254