• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            java面試寶典

            更新時間:2023-03-05 00:46:46 閱讀: 評論:0

            海藻面膜的功效與作用-紙風箏

            java面試寶典
            2023年3月5日發(fā)(作者:課堂紀律管理)

            java

            程序員面試寶典

            map,t,list,

            JAVA

            中集合解析

            (

            了解

            )

            Postedon2008-06-2517:32JavaSuns

            閱讀

            (1391)

            評論

            (0)

            編輯收藏

            JAVA

            util

            包中有兩個所有集合的父接口

            Collection

            Map,

            它們的父子關系:

            +Collection

            這個接口

            extends

            --le

            接口

            +List

            接口

            -ArrayList

            -LinkedList

            -Vector

            類此類是實現(xiàn)同步的

            +Queue

            接口

            +

            不常用,在此不表

            .

            +Set

            接口

            +SortedSet

            接口

            -TreeSet

            -HashSet

            +Map

            接口

            -HashMap

            (

            除了不同步和允許使用

            null

            /

            值之外

            ,

            Hashtable

            大致相同

            .)

            -Hashtable

            類此類是實現(xiàn)同步的

            ,

            不允許使用

            null

            鍵值

            +SortedMap

            接口

            -TreeMap

            以下對眾多接口和類的簡單說明:首先不能不先說一下數(shù)組(

            Array

            一、

            Array

            Arrays

            Java

            所有

            存儲及隨機訪問一連串對象

            的做法,

            array

            是最有效率的一種。

            1

            、

            效率高,但容量固定且無法動態(tài)改變。

            array

            還有一個缺點是,無法判斷其中實際存有多少元素,

            length

            只是告訴我們

            array

            的容量。

            2

            、

            Java

            中有一個

            Arrays

            類,專門用來操作

            array

            。

            arrays

            中擁有一組

            static

            函數(shù),

            equals()

            :比較兩個

            array

            是否相等。

            array

            擁有相同元素個數(shù),且所有對應元素兩兩相等。

            fill()

            :將值填入

            array

            中。

            sort()

            :用來對

            array

            進行排序。

            binarySearch()

            :在排好序的

            array

            中尋找元素。

            opy()

            array

            的復制。

            二、

            Collection

            ,

            Map

            若撰寫程序時不知道究竟需要多少對象,需要在空間不足時自動擴增容量,則需要使用容器類

            庫,

            array

            不適用。

            1

            、

            Collection

            Map

            的區(qū)別

            容器內(nèi)每個為之所存儲的元素個數(shù)不同。

            Collection

            類型者,每個位置只有一個元素。

            Map

            類型者,持有

            key-valuepair

            ,像個小型數(shù)據(jù)庫。

            2

            、

            Java2

            容器類類庫的用途是

            保存對象

            ,它分為兩類,各自旗下的子類關系

            Collection

            --List

            :將以特定次序存儲元素。所以取出來的順序可能和放入順序不同。

            --ArrayList/LinkedList/Vector

            --Set

            :不能含有重復的元素

            --HashSet/TreeSet

            Map

            --HashMap

            --HashTable

            Page1

            java

            程序員面試寶典

            --TreeMap

            Map----

            一組成對的

            鍵值對

            對象,即其元素是成對的對象,最典型的應用就是數(shù)據(jù)字典,并

            且還有其它廣泛的應用。另外,

            Map

            可以返回其所有鍵組成的

            Set

            和其所有值組成的

            Collection

            ,

            或其鍵值對組成的

            Set

            ,并且還可以像數(shù)組一樣擴展多維

            Map

            ,只要讓

            Map

            中鍵值對的每個

            一個

            Map

            即可。

            Collection

            1.

            迭代器

            迭代器是一種設計模式,它是一個對象,它可以遍歷并選擇序列中的對象,而開發(fā)人員不需

            要了解該序列的底層結(jié)構(gòu)。迭代器通常被稱為

            輕量級

            對象,因為創(chuàng)建它的代價小。

            Java

            中的

            Iterator

            功能比較簡單,并且只能單向移動:

            (1)

            使用方法

            iterator()

            要求容器返回一個

            Iterator

            。第一次調(diào)用

            Iterator

            next()

            方法

            時,它返回序列的第一個元素。注意:

            iterator()

            方法是

            le

            接口

            ,

            Collection

            繼承。

            (2)

            使用

            next()

            獲得序列中的下一個元素。

            (3)

            使用

            hasNext()

            檢查序列中是否還有元素。

            (4)

            使用

            remove()

            將迭代器新返回的元素刪除。

            Iterator

            Java

            迭代器最簡單的實現(xiàn),為

            List

            設計的

            ListIterator

            具有更多的功能,它可以

            從兩個方向遍歷

            List

            ,也可以從

            List

            中插入和刪除元素。

            的功能方法

            List(interface):

            次序是

            List

            最重要的特點;它確保維護元素特定的順序。

            List

            Collection

            添加了許多方法,使得能夠向

            List

            中間插入與移除元素

            (

            只推薦

            LinkedList

            使用

            )

            。一

            List

            可以生成

            ListIterator

            ,使用它可以從兩個方向遍歷

            List

            ,也可以從

            List

            中間插入和刪除

            元素。

            ArrayList:

            由數(shù)組實現(xiàn)的

            List

            。它允許對元素進行快速隨機訪問,但是向

            List

            中間插入與

            移除元素的速度很慢。

            ListIterator

            只應該用來由后向前遍歷

            ArrayList

            ,而不是用來插入和刪

            除元素,因為這比

            LinkedList

            開銷要大很多。

            LinkedList:

            由列表實現(xiàn)的

            List

            。對順序訪問進行了優(yōu)化,向

            List

            中間插入與刪除得開銷不

            大,隨機訪問則相對較慢

            (

            可用

            ArrayList

            代替

            )

            。它具有方法

            addFirst()

            addLast()

            getFirst()

            getLast()

            removeFirst()

            、

            removeLast()

            ,這些方法

            (

            沒有在任何接口或基類中

            定義過

            )

            使得

            LinkedList

            可以當作堆棧、隊列和雙向隊列使用。

            的功能方法

            Set(interface):

            存入

            Set

            的每個元素必須是唯一的,這也是與

            List

            不同的,因為

            Set

            不保存

            重復元素。加入

            Set

            Object

            必須定義

            equals()

            方法以確保對象的唯一性。

            Set

            Collection

            有完

            全一樣的接口。

            Set

            接口不保證維護元素的次序。

            HashSet:HashSet

            能快速定位一個元素,存入

            HashSet

            的對象必須定義

            hashCode()

            TreeSet:

            保持次序的

            Set

            ,底層為樹結(jié)構(gòu)。使用它可以從

            Set

            中提取有序的序列。

            LinkedHashSet:

            具有

            HashSet

            的查詢速度,且內(nèi)部使用鏈表維護元素的順序

            (

            插入的次序

            )

            。

            于是在使用迭代器遍歷

            Set

            時,結(jié)果會按元素插入的次序顯示。

            HashSet

            采用散列函數(shù)對元素進行排序,這是專門為快速查詢而設計的;

            TreeSet

            采用紅黑樹

            的數(shù)據(jù)結(jié)構(gòu)進行排序元素;

            LinkedHashSet

            內(nèi)部使用散列以加快查詢速度,同時使用鏈表維護元

            素的次序,使得看起來元素是以插入的順序保存的。需要注意的是,生成自己的類時,

            Set

            需要

            維護元素的存儲順序,因此要實現(xiàn)

            Comparable

            接口并定義

            compareTo()

            方法。

            3

            、其他特征

            Page2

            java

            程序員面試寶典

            *List

            ,

            Set

            ,

            Map

            將持有對象一律視為

            Object

            型別。

            *Collection

            List

            、

            Set

            Map

            都是接口,不能實例化。

            繼承自它們的

            ArrayList,Vector,HashTable,HashMap

            是具象

            class

            ,這些才可被實例

            化。

            *vector

            容器確切知道它所持有的對象隸屬什么型別。

            vector

            不進行邊界檢查。

            三、

            Collections

            Collections

            是針對集合類的一個幫助類。提供了一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排

            序、線程完全化等操作。

            相當于對

            Array

            進行類似操作的類

            ——Arrays

            。

            如,

            (Collectioncoll);

            coll

            中最大的元素。

            (Listlist);

            list

            中元素排序

            四、如何選擇?

            1

            、容器類和

            Array

            的區(qū)別、擇取

            *

            容器類僅能持有對象引用(指向?qū)ο蟮闹羔槪?,而不是將對象信?/p>

            copy

            一份至數(shù)列

            某位置。

            *

            一旦將對象置入容器內(nèi),便損失了該對象的型別信息。

            2

            、

            *

            在各種

            Lists

            中,最好的做法是以

            ArrayList

            作為缺省選擇。當插入、刪除頻繁時,

            使用

            LinkedList()

            Vector

            總是比

            ArrayList

            慢,所以要盡量避免使用。

            *

            在各種

            Sets

            中,

            HashSet

            通常優(yōu)于

            HashTree

            (插入、查找)。只有當需要產(chǎn)生一個經(jīng)

            過排序的序列,才用

            TreeSet

            。

            HashTree

            存在的唯一理由:能夠維護其內(nèi)元素的排序狀態(tài)。

            *

            在各種

            Maps

            HashMap

            用于快速查找。

            *

            當元素個數(shù)固定,用

            Array

            ,因為

            Array

            效率是最高的。

            結(jié)論:最常用的是

            ArrayList

            ,

            HashSet

            ,

            HashMap

            ,

            Array

            。而且,我們也會發(fā)現(xiàn)一個規(guī)律,用

            TreeXXX

            都是排序的。

            注意:

            1

            、

            Collection

            沒有

            get()

            方法來取得某個元素。只能通過

            iterator()

            遍歷元素。

            2

            、

            Set

            Collection

            擁有一模一樣的接口。

            3

            List

            ,可以通過

            get()

            方法來一次取出一個元素。使用數(shù)字來選擇一堆對象中的一個,

            get(0)...

            (add/get)

            4

            、一般使用

            ArrayList

            。用

            LinkedList

            構(gòu)造堆棧

            stack

            、隊列

            queue

            。

            5

            、

            Map

            put(k,v)/get(k)

            ,還可以使用

            containsKey()/containsValue()

            來檢查其中是否含

            有某個

            key/value

            。

            HashMap

            會利用對象的

            hashCode

            來快速找到

            key

            。

            *hashing

            哈希碼就是將對象的信息經(jīng)過一些轉(zhuǎn)變形成一個獨一無二的

            int

            值,這個值存儲在一

            array

            中。

            我們都知道所有存儲結(jié)構(gòu)中,

            array

            查找速度是最快的。所以,可以加速查找。

            發(fā)生碰撞時,讓

            array

            指向多個

            values

            。即,數(shù)組每個位置上又生成一個梿表。

            6

            Map

            中元素,可以將

            key

            序列、

            value

            序列單獨抽取出來。

            使用

            keySet()

            抽取

            key

            序列,將

            map

            中的所有

            keys

            生成一個

            Set

            。

            使用

            values()

            抽取

            value

            序列,將

            map

            中的所有

            values

            生成一個

            Collection

            。

            為什么一個生成

            Set

            ,一個生成

            Collection

            ?那是因為,

            key

            總是獨一無二的,

            value

            允許重復。

            Page3

            java

            程序員面試寶典

            ===List

            接口對

            Collection

            進行了簡單的擴充,它的具體實現(xiàn)類常用的有

            ArrayList

            LinkedList

            。你可以將任何東西放到一個

            List

            容器中,并在需要時從中取出。

            ArrayList

            從其命名中可以看

            出它是一種類似數(shù)組的形式進行存儲,因此它的隨機訪問速度極快,而

            LinkedList

            的內(nèi)部實現(xiàn)是

            鏈表,它適合于在鏈表中間需要頻繁進行插入和刪除操作。在具體應用時可以根據(jù)需要自由選

            擇。前面說的

            Iterator

            只能對容器進行向前遍歷,而

            ListIterator

            則繼承了

            Iterator

            的思想,并

            提供了對

            List

            進行雙向遍歷的方法。

            Set

            接口也是

            Collection

            的一種擴展,而與

            List

            不同的時,在

            Set

            中的對象元素不能重復,也就是

            說你不能把同樣的東西兩次放入同一個

            Set

            容器中。它的常用具體實現(xiàn)有

            HashSet

            TreeSet

            類。

            HashSet

            能快速定位一個元素,但是你放到

            HashSet

            中的對象需要實現(xiàn)

            hashCode()

            方法,它使用了

            前面說過的哈希碼的算法。而

            TreeSet

            則將放入其中的元素按序存放,這就要求你放入其中的對

            象是可排序的,這就用到了集合框架提供的另外兩個實用類

            Comparable

            Comparator

            。一個類是

            可排序的,它就應該實現(xiàn)

            Comparable

            接口。有時多個類具有相同的排序算法,那就不需要在每分

            別重復定義相同的排序算法,只要實現(xiàn)

            Comparator

            接口即可。集合框架中還有兩個很實用的公用

            類:

            Collections

            Arrays

            。

            Collections

            提供了對一個

            Collection

            容器進行諸如排序、復制、查

            找和填充等一些非常有用的方法,

            Arrays

            則是對一個數(shù)組進行類似的操作。

            Map

            是一種把鍵對象和值對象進行關聯(lián)的容器,而一個值對象又可以是一個

            Map

            ,依次類推,這樣

            就可形成一個多級映射。對于鍵對象來說,像

            Set

            一樣,一個

            Map

            容器中的鍵對象不允許重復,這

            是為了保持查找結(jié)果的一致性

            ;

            如果有兩個鍵對象一樣,那你想得到那個鍵對象所對應的值對象

            時就有問題了,可能你得到的并不是你想的那個值對象,結(jié)果會造成混亂,所以鍵的唯一性很重

            要,也是符合集合的性質(zhì)的。當然在使用過程中,某個鍵所對應的值對象可能會發(fā)生變化,這時

            會按照最后一次修改的值對象與鍵對應。對于值對象則沒有唯一性的要求。你可以將任意多個鍵

            都映射到一個值對象上,這不會發(fā)生任何問題(不過對你的使用卻可能會造成不便,你不知道你

            得到的到底是那一個鍵所對應的值對象)。

            Map

            有兩種比較常用的實現(xiàn):

            HashMap

            TreeMap

            。

            HashMap

            也用到了哈希碼的算法,以便快速查找一個鍵,

            TreeMap

            則是對鍵按序存放,因此它便有

            一些擴展的方法,比如

            firstKey(),lastKey()

            等,你還可以從

            TreeMap

            中指定一個范圍以取得其

            Map

            。鍵和值的關聯(lián)很簡單,用

            pub(Objectkey,Objectvalue)

            方法即可將一個鍵與一個值對

            象相關聯(lián)。用

            get(Objectkey)

            可得到與此

            key

            對象所對應的值對象。

            1.

            抽象:

            抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方

            面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節(jié)。抽象包括兩個

            方面,一是過程抽象,二是數(shù)據(jù)抽象。

            2.

            繼承:

            繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方

            法。對象的一個新類可以從現(xiàn)有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,

            新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類

            那里繼承方法和實例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。

            3.

            封裝:

            封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的訪問只能通過已定義的界面。面向?qū)ο笥嬎闶加谶@個

            基本概念,即現(xiàn)實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的

            接口訪問其他對象。

            3

            、

            int

            Integer

            有什么區(qū)別

            Java

            提供兩種不同的類型:引用類型和原始類型(或內(nèi)置類

            型)。

            Int

            java

            的原始數(shù)據(jù)類型,

            Integer

            java

            int

            提供的封裝類。

            Java

            為每個原始類型提

            供了封裝類。原始類型封裝類

            booleanBooleancharCharacterbyteByteshortShort

            intIntegerlongLongfloatFloatdoubleDouble

            引用類型和原始類型的行為完全不同,并且它

            們具有不同的語義。引用類型和原始類型具有不同的特征和用法,它們包括:大小和速度問題,

            這種類型以哪種類型的數(shù)據(jù)結(jié)構(gòu)存儲,當引用類型和原始類型用作某個類的實例數(shù)據(jù)時所指定的

            缺省值。對象引用實例變量的缺省值為

            null

            ,而原始類型實例變量的缺省值與它們的類型有

            關。

            4

            、

            String

            StringBuffer

            的區(qū)別

            JAVA

            平臺提供了兩個類:

            String

            StringBuffer

            ,它們可以

            儲存和操作字符串,即包含多個字符的字符數(shù)據(jù)。這個

            String

            類提供了數(shù)值不可改變的字符串。

            而這個

            StringBuffer

            類提供的字符串進行修改。當你知道字符數(shù)據(jù)要改變的時候你就可以使用

            StringBuffer

            。典型地,你可以使用

            StringBuffers

            來動態(tài)構(gòu)造字符數(shù)據(jù)。

            Page4

            java

            程序員面試寶典

            5

            、運行時異常與一般異常有何異同?異常表示程序運行過程中可能出現(xiàn)的非正常狀態(tài),運行時

            異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。

            java

            編譯器要求方法必須

            聲明拋出可能發(fā)生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。

            6

            、說出

            Servlet

            的生命周期,并說出

            Servlet

            CGI

            的區(qū)別。

            Servlet

            被服務器實例化后,容器運

            行其

            init

            方法,請求到達時運行其

            rvice

            方法,

            rvice

            方法自動派遣運行與請求對應的

            doXXX

            方法(

            doGet

            ,

            doPost

            )等,當服務器決定將實例銷毀的時候調(diào)用其

            destroy

            方法。與

            cgi

            的區(qū)別

            在于

            rvlet

            處于服務器進程中,它通過多線程方式運行其

            rvice

            方法,一個實例可以服務于多

            個請求,并且其實例一般不會銷毀,而

            CGI

            對每個請求都產(chǎn)生新的進程,服務完成后就銷毀,所

            以效率上低于

            rvlet

            。

            7

            、說出

            ArrayList,Vector,LinkedList

            的存儲性能和特性

            ArrayList

            Vector

            都是使用數(shù)組方

            式存儲數(shù)據(jù),此數(shù)組元素數(shù)大于實際存儲的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號索

            引元素,但是插入元素要涉及數(shù)組元素移動等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,

            Vector

            由于使用了

            synchronized

            方法(線程安全),通常性能上較

            ArrayList

            差,而

            LinkedList

            使用雙

            向鏈表實現(xiàn)存儲,按序號索引數(shù)據(jù)需要進行前向或后向遍歷,但是插入數(shù)據(jù)時只需要記錄本項的

            前后項即可,所以插入速度較快。

            8

            、

            EJB

            是基于哪些技術(shù)實現(xiàn)的?并說出

            SessionBean

            EntityBean

            的區(qū)別,

            StatefulBean

            StatelessBean

            的區(qū)別。

            EJB

            包括

            SessionBean

            、

            EntityBean

            MessageDrivenBean

            ,基

            JNDI

            、

            RMI

            JAT

            等技術(shù)實現(xiàn)。

            SessionBean

            J2EE

            應用程序中被用來完成一些服務器端的業(yè)務

            操作,例如訪問數(shù)據(jù)庫、調(diào)用其他

            EJB

            組件。

            EntityBean

            被用來代表應用系統(tǒng)中用到的數(shù)據(jù)。對

            于客戶機,

            SessionBean

            是一種非持久性對象,它實現(xiàn)某些在服務器上運行的業(yè)務邏輯。對于客

            戶機,

            EntityBean

            是一種持久性對象,它代表一個存儲在持久性存儲器中的實體的對象視圖,或

            是一個由現(xiàn)有企業(yè)應用程序?qū)崿F(xiàn)的實體。

            SessionBean

            還可以再細分為

            StatefulSession

            Bean

            StatelessSessionBean

            ,這兩種的

            SessionBean

            都可以將系統(tǒng)邏輯放在

            method

            中執(zhí)行,不同的是

            StatefulSessionBean

            可以記錄呼叫者的狀態(tài),因此通常來說,一個使用

            者會有一個相對應的

            StatefulSessionBean

            的實體。

            StatelessSessionBean

            雖然也是邏輯

            組件,但是他卻不負責記錄使用者狀態(tài),也就是說當使用者呼叫

            StatelessSessionBean

            的時

            候,

            EJBContainer

            并不會找尋特定的

            StatelessSessionBean

            的實體來執(zhí)行這個

            method

            換言之,很可能數(shù)個使用者在執(zhí)行某個

            StatelessSessionBean

            methods

            時,會是同一個

            Bean

            Instance

            在執(zhí)行。從內(nèi)存方面來看,

            StatefulSessionBean

            StatelessSession

            Bean

            比較,

            StatefulSessionBean

            會消耗

            J2EEServer

            較多的內(nèi)存,然而

            Stateful

            SessionBean

            的優(yōu)勢卻在于他可以維持使用者的狀態(tài)。

            9

            、

            Collection

            Collections

            的區(qū)別。

            Collection

            是集合類的上級接口,繼承與他的接口主

            要有

            Set

            tions

            是針對集合類的一個幫助類,他提供一系列靜態(tài)方法實現(xiàn)對各種

            集合的搜索、排序、線程安全化等操作。

            10

            &

            &&

            的區(qū)別。

            &

            是位運算符,表示按位與運算,

            &&

            是邏輯運算符,表示邏輯與(

            and

            )。

            11

            、

            HashMap

            Hashtable

            的區(qū)別。

            HashMap

            Hashtable

            的輕量級實現(xiàn)(非線程安全的實現(xiàn)),

            他們都完成了

            Map

            接口,主要區(qū)別在于

            HashMap

            允許空(

            null

            )鍵值(

            key

            ,

            由于非線程安全,效

            率上可能高于

            Hashtable

            。

            HashMap

            允許將

            null

            作為一個

            entry

            key

            或者

            value

            ,而

            Hashtable

            允許。

            HashMap

            Hashtable

            contains

            方法去掉了,改成

            containsvalue

            containsKey

            。因為

            contains

            方法容易讓人引起誤解。

            Hashtable

            繼承自

            Dictionary

            類,而

            HashMap

            Java1.2

            引進的

            Mapinterface

            的一個實現(xiàn)。最大的不同是,

            Hashtable

            的方法是

            Synchronize

            的,而

            HashMap

            是,在多個線程訪問

            Hashtable

            時,不需要自己為它的方法實現(xiàn)同步,而

            HashMap

            就必須為之提

            供外同步。

            Hashtable

            HashMap

            采用的

            hash/rehash

            算法都大概一樣,所以性能不會有很大的差

            異。

            12

            、

            final,finally,finalize

            的區(qū)別。

            final

            用于聲明屬性,方法和類,分別表示屬性不可

            變,方法不可覆蓋,類不可繼承。

            finally

            是異常處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行。

            finalize

            Object

            類的一個方法,在垃圾收集器執(zhí)行的時候會調(diào)用被回收對象的此方法,可以覆

            蓋此方法提供垃圾收集時的其他資源回收,例如關閉文件等。

            13

            、

            sleep()

            wait()

            有什么區(qū)別

            ?sleep

            是線程類(

            Thread

            )的方法,導致此線程暫停執(zhí)行

            指定時間,給執(zhí)行機會給其他線程,但是監(jiān)控狀態(tài)依然保持,到時后會自動恢復。調(diào)用

            sleep

            會釋放對象鎖。

            wait

            Object

            類的方法,對此對象調(diào)用

            wait

            方法導致本線程放棄對象鎖,進入等

            待此對象的等待鎖定池,只有針對此對象發(fā)出

            notify

            方法(或

            notifyAll

            )后本線程才進入對象

            鎖定池準備獲得對象鎖進入運行狀態(tài)。

            14

            、

            Overload

            Override

            的區(qū)別。

            Overloaded

            的方法是否可以改變返回值的類型

            ?

            方法的重寫

            Page5

            java

            程序員面試寶典

            Overriding

            和重載

            Overloading

            Java

            多態(tài)性的不同表現(xiàn)。重寫

            Overriding

            是父類與子類之間多

            態(tài)性的一種表現(xiàn),重載

            Overloading

            是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與

            其父類有相同的名稱和參數(shù),我們說該方法被重寫

            (Overriding)

            。子類的對象使用這個方法

            時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被

            屏蔽

            了。如果在一個類中定義了多

            個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載

            (Overloading)

            。

            Overloaded

            的方法是可以改變返回值的類型。

            15

            error

            exception

            有什么區(qū)別

            ?error

            表示恢復不是不可能但很困難的情況下的一種嚴重問

            題。比如說內(nèi)存溢出。不可能指望程序能處理這樣的情況。

            exception

            表示一種設計或?qū)崿F(xiàn)問

            題。也就是說,它表示如果程序運行正常,從不會發(fā)生的情況。

            16

            、同步和異步有何異同,在什么情況下分別使用他們?舉例說明。如果數(shù)據(jù)將在線程間共享。

            例如正在寫的數(shù)據(jù)以后可能被另一個線程讀到,或者正在讀的數(shù)據(jù)可能已經(jīng)被另一個線程寫過

            了,那么這些數(shù)據(jù)就是共享數(shù)據(jù),必須進行同步存取。當應用程序在對象上調(diào)用了一個需要花費

            很長時間來執(zhí)行的方法,并且不希望讓程序等待方法的返回時,就應該使用異步編程,在很多情

            況下采用異步途徑往往更有效率。

            17

            abstractclass

            interface

            有什么區(qū)別

            ?

            聲明方法的存在而不去實現(xiàn)它的類被叫做抽象類(

            abstractclass

            ),它用于要創(chuàng)建一個體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該

            類中實現(xiàn)該類的情況。不能創(chuàng)建

            abstract

            類的實例。然而可以創(chuàng)建一個變量,其類型是一個抽

            象類,并讓它指向具體子類的一個實例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。

            Abstract

            類的

            子類為它們父類中的所有抽象方法提供實現(xiàn),否則它們也是抽象類為。取而代之,在子類中實現(xiàn)

            該方法。知道其行為的其它類可以在類中實現(xiàn)這些方法。接口(

            interface

            )是抽象類的變體。

            在接口中,所有方法都是抽象的。多繼承性可通過實現(xiàn)這樣的接口而獲得。接口中的所有方法都

            是抽象的,沒有一個有程序體。接口只可以定義

            staticfinal

            成員變量。接口的實現(xiàn)與子類相

            似,除了該實現(xiàn)類不能從接口定義中繼承行為。當類實現(xiàn)特殊接口時,它定義(即將程序體給

            予)所有這種接口的方法。然后,它可以在實現(xiàn)了該接口的類的任何對象上調(diào)用接口的方法。由

            于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到

            接口類型或從接口類型轉(zhuǎn)換,

            instanceof

            運算符可以用來決定某對象的類是否實現(xiàn)了接口。

            18

            、

            heap

            stack

            有什么區(qū)別。棧是一種線形集合,其添加和刪除元素的操作應在同一段完成。

            棧按照后進先出的方式進行處理。堆是棧的一個組成元素

            19

            forward

            redirect

            的區(qū)別

            forward

            是服務器請求資源,服務器直接訪問目標地址的

            URL

            ,把

            那個

            URL

            的響應內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器,瀏覽器根本不知道服務器發(fā)送的

            內(nèi)容是從哪兒來的,所以它的地址欄中還是原來的地址。

            redirect

            就是服務端根據(jù)邏輯

            ,

            發(fā)送一

            個狀態(tài)碼

            ,

            告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛才請求的所有參數(shù)重新請

            求,所以

            ssion,request

            參數(shù)都可以獲取。

            20

            EJB

            JAVABEAN

            的區(qū)別?

            JavaBean

            是可復用的組件,對

            JavaBean

            并沒有嚴格的規(guī)范,理

            論上講,任何一個

            Java

            類都可以是一個

            Bean

            。但通常情況下,由于

            JavaBean

            是被容器所創(chuàng)建(

            Tomcat

            )的,所以

            JavaBean

            應具有一個無參的構(gòu)造器,另外,通常

            JavaBean

            還要實現(xiàn)

            Serializable

            接口用于實現(xiàn)

            Bean

            的持久性。

            JavaBean

            實際上相當于微軟

            COM

            模型中的本地進程內(nèi)

            COM

            組件,它是不能被跨進程訪問的。

            EnterpriJavaBean

            相當于

            DCOM

            ,即分布式組件。它是

            基于

            Java

            的遠程方法調(diào)用(

            RMI

            )技術(shù)的,所以

            EJB

            可以被遠程訪問(跨進程、跨計算機)。但

            EJB

            必須被布署在諸如

            Webspere

            WebLogic

            這樣的容器中,

            EJB

            客戶從不直接訪問真正的

            EJB

            件,而是通過其容器訪問。

            EJB

            容器是

            EJB

            組件的代理,

            EJB

            組件由容器所創(chuàng)建和管理??蛻敉ㄟ^

            容器來訪問真正的

            EJB

            組件。

            21

            StaticNestedClass

            InnerClass

            的不同。

            StaticNestedClass

            是被聲明為靜態(tài)(

            static

            )的內(nèi)部類,它可以不依賴于外部類實例被實例化。而通常的內(nèi)部類需要在外部類實例化

            后才能實例化。

            22

            、

            JSP

            中動態(tài)

            INCLUDE

            與靜態(tài)

            INCLUDE

            的區(qū)別?動態(tài)

            INCLUDE

            jsp:include

            動作實現(xiàn)

            它總是會檢查所含文件中的變化,適合用

            于包含動態(tài)頁面,并且可以帶參數(shù)。靜態(tài)

            INCLUDE

            include

            偽碼實現(xiàn)

            ,

            定不會檢查所含文件的變

            化,適用于包含靜態(tài)頁面

            <%@includefile=""%>

            23

            、什么時候用

            asrt

            asrtion(

            斷言

            )

            在軟件開發(fā)中是一種常用的調(diào)試方式,很多開發(fā)語言

            中都支持這種機制。在實現(xiàn)中,

            asrtion

            就是在程序中的一條語句,它對一個

            boolean

            表達式進

            行檢查,一個正確程序必須保證這個

            boolean

            表達式的值為

            true

            ;如果該值為

            fal

            ,說明程序已

            經(jīng)處于不正確的狀態(tài)下,系統(tǒng)將給出警告或退出。一般來說,

            asrtion

            用于保證程序最基本、

            關鍵的正確性。

            asrtion

            檢查通常在開發(fā)和測試時開啟。為了提高性能,在軟件發(fā)布后,

            Page6

            java

            程序員面試寶典

            asrtion

            檢查通常是關閉的。

            24

            GC

            是什么

            ?

            為什么要有

            GC?GC

            是垃圾收集的意思(

            GabageCollection

            ,

            內(nèi)存處理是編程人

            員容易出現(xiàn)問題的地方,忘記或者錯誤的內(nèi)存回收會導致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,

            Java

            供的

            GC

            功能可以自動監(jiān)測對象是否超過作用域從而達到自動回收內(nèi)存的目的,

            Java

            語言沒有提供

            釋放已分配內(nèi)存的顯示操作方法。

            25

            、

            shorts1=1;s1=s1+1;

            有什么錯

            ?shorts1=1;s1+=1;

            有什么錯

            ?shorts1=

            1;s1=s1+1;

            s1+1

            運算結(jié)果是

            int

            型,需要強制轉(zhuǎn)換類型)

            shorts1=1;s1+=1;

            (可

            以正確編譯)

            26

            、

            (11.5)

            等於多少

            ?(-11.5)

            等於多少

            ?(11.5)==12

            (-11.5)==-11round

            方法返回與參數(shù)最接近的長整數(shù),參數(shù)加

            1/2

            后求其

            floor.

            27

            、

            Strings=newString("xyz");

            創(chuàng)建了幾個

            StringObject?

            兩個

            28

            、設計

            4

            個線程,其中兩個線程每次對

            j

            增加

            1

            ,另外兩個線程對

            j

            每次減少

            1

            。寫出程序。以下

            程序使用內(nèi)部類實現(xiàn)線程,對

            j

            增減的時候沒有考慮順序問題。

            publicclass

            ThreadTest1{privateintj;publicstaticvoidmain(Stringargs[]){ThreadTest1

            tt=newThreadTest1();Incinc=();Decdec=();for(int

            i=0;i<2;i++){Threadt=newThread(inc);();t=newThread(dec);();}}

            privatesynchronizedvoidinc(){j++;

            n(tThread().getName()+"-inc:"+j);}private

            synchronizedvoiddec(){j--;

            n(tThread().getName()+"-dec:"+j);}classInc

            implementsRunnable{publicvoidrun(){for(inti=0;i<100;i++){inc();}}}class

            DecimplementsRunnable{publicvoidrun(){for(inti=0;i<100;i++){dec();}}}}

            29

            Java

            有沒有

            goto?java

            中的保留字,現(xiàn)在沒有在

            java

            中使用。

            30

            、啟動一個線程是用

            run()

            還是

            start()?

            啟動一個線程是調(diào)用

            start()

            方法,使線程所代表的虛

            擬處理機處于可運行狀態(tài),這意味著它可以由

            JVM

            調(diào)度并執(zhí)行。這并不意味著線程就會立即運

            行。

            run()

            方法可以產(chǎn)生必須退出的標志來停止一個線程。

            31

            、

            EJB

            包括(

            SessionBean,EntityBean

            )說出他們的生命周期,及如何管理事務的?

            SessionBean

            StatelessSessionBean

            的生命周期是由容器決定的,當客戶機發(fā)出請求要建立

            一個

            Bean

            的實例時,

            EJB

            容器不一定要創(chuàng)建一個新的

            Bean

            的實例供客戶機調(diào)用,而是隨便找一個

            現(xiàn)有的實例提供給客戶機。當客戶機第一次調(diào)用一個

            StatefulSessionBean

            時,容器必須立即

            在服務器中創(chuàng)建一個新的

            Bean

            實例,并關聯(lián)到客戶機上,以后此客戶機調(diào)用

            StatefulSession

            Bean

            的方法時容器會把調(diào)用分派到與此客戶機相關聯(lián)的

            Bean

            實例。

            EntityBean

            EntityBeans

            能存活相對較長的時間,并且狀態(tài)是持續(xù)的。只要數(shù)據(jù)庫中的數(shù)據(jù)存在,

            Entitybeans

            就一直存

            活。而不是按照應用程序或者服務進程來說的。即使

            EJB

            容器崩潰了,

            Entitybeans

            也是存活

            的。

            EntityBeans

            生命周期能夠被容器或者

            Beans

            自己管理。

            EJB

            通過以下技術(shù)管理實務:對象

            管理組織(

            OMG

            )的對象實務服務(

            OTS

            ),

            SunMicrosystems

            TransactionService

            JTS

            )、

            JavaTransactionAPI

            JTA

            ),開發(fā)組(

            X/Open

            )的

            XA

            接口。

            32

            、應用服務器有那些?

            BEAWebLogicServer

            ,

            IBMWebSphereApplicationServer

            ,

            Oracle9iApplicationServer

            ,

            jBoss

            ,

            Tomcat

            33

            、給我一個你最常見到的

            runtimeexception

            ArithmeticException,

            ArrayStoreException,BufferOverflowException,BufferUnderflowException,

            CannotRedoException,CannotUndoException,ClassCastException,CMMException,

            ConcurrentModificationException,DOMException,EmptyStackException,

            IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,

            IllegalStateException,ImagingOpException,IndexOutOfBoundsException,

            MissingResourceException,NegativeArraySizeException,NoSuchElementException,

            NullPointerException,ProfileDataException,ProviderException,

            RasterFormatException,SecurityException,SystemException,

            UndeclaredThrowableException,UnmodifiableSetException,

            UnsupportedOperationException

            34

            、接口是否可繼承接口

            ?

            抽象類是否可實現(xiàn)

            (implements)

            接口

            ?

            抽象類是否可繼承實體類

            (concreteclass)?

            接口可以繼承接口。抽象類可以實現(xiàn)

            (implements)

            接口,抽象類是否可繼承

            Page7

            java

            程序員面試寶典

            實體類,但前提是實體類必須有明確的構(gòu)造函數(shù)。

            35

            、

            List,Set,Map

            是否繼承自

            Collection

            接口

            ?List

            Set

            是,

            Map

            不是

            36

            、說出數(shù)據(jù)連接池的工作機制是什么

            ?J2EE

            服務器啟動時會建立一定數(shù)量的池連接,并一直維

            持不少于此數(shù)目的池連接??蛻舳顺绦蛐枰B接時,池驅(qū)動程序會返回一個未使用的池連接并將

            其表記為忙。如果當前沒有空閑連接,池驅(qū)動程序就新建一定數(shù)量的連接,新建連接的數(shù)量有配

            置參數(shù)決定。當使用的池連接調(diào)用完成后,池驅(qū)動程序?qū)⒋诉B接表記為空閑,其他調(diào)用就可以使

            用這個連接。

            37

            abstract

            method

            是否可同時是

            static,

            是否可同時是

            native

            ,是否可同時是

            synchronized?

            都不能

            38

            、數(shù)組有沒有

            length()

            這個方法

            ?String

            有沒有

            length()

            這個方法?數(shù)組沒有

            length()

            這個方

            法,有

            length

            的屬性。

            String

            有有

            length()

            這個方法。

            39

            Set

            里的元素是不能重復的,那么用什么方法來區(qū)分重復與否呢

            ?

            是用

            ==

            還是

            equals()?

            們有何區(qū)別

            ?Set

            里的元素是不能重復的,那么用

            iterator()

            方法來區(qū)分重復與否。

            equals()

            判讀兩個

            Set

            是否相等。

            equals()

            ==

            方法決定引用值是否指向同一對象

            equals()

            在類中被覆

            蓋,為的是當兩個分離的對象的內(nèi)容和類型相配的話,返回真值。

            40

            、構(gòu)造器

            Constructor

            是否可被

            override?

            構(gòu)造器

            Constructor

            不能被繼承,因此不能重寫

            Overriding

            ,但可以被重載

            Overloading

            。

            41

            、是否可以繼承

            String

            ?String

            類是

            final

            類故不可以繼承。

            42

            、

            swtich

            是否能作用在

            byte

            上,是否能作用在

            long

            上,是否能作用在

            String

            ?switch

            expr1

            )中,

            expr1

            是一個整數(shù)表達式。因此傳遞給

            switch

            ca

            語句的參數(shù)應該是

            int

            、

            short

            char

            或者

            byte

            long,string

            都不能作用于

            swtich

            。

            43

            、

            try{}

            里有一個

            return

            語句,那么緊跟在這個

            try

            后的

            finally{}

            里的

            code

            會不會被執(zhí)行,

            什么時候被執(zhí)行,在

            return

            前還是后

            ?

            會執(zhí)行,在

            return

            前執(zhí)行。

            44

            、編程題

            :

            用最有效率的方法算出

            2

            乘以

            8

            等於幾

            ?2<<3

            45

            、兩個對象值相同

            ((y)==true)

            ,但卻可有不同的

            hashcode

            ,這句話對不對

            ?

            對,有相同的

            hashcode

            。

            46

            、當一個對象被當作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后

            的結(jié)果,那么這里到底是值傳遞還是引用傳遞

            ?

            是值傳遞。

            Java

            編程語言只有值傳遞參數(shù)。當

            一個對象實例作為一個參數(shù)被傳遞到方法中時,參數(shù)的值就是對該對象的引用。對象的內(nèi)容可以

            在被調(diào)用的方法中改變,但對象的引用是永遠不會改變的。

            47

            、當一個線程進入一個對象的一個

            synchronized

            方法后,其它線程是否可進入此對象的其它方

            ?

            不能,一個對象的一個

            synchronized

            方法只能由一個線程訪問。

            48

            、編程題

            :

            寫一個

            Singleton

            出來。

            Singleton

            模式主要作用是保證在

            Java

            應用程序中,一個

            Class

            只有一個實例存在。一般

            Singleton

            模式通常有幾種種形式

            :

            第一種形式

            :

            定義一個類,

            它的構(gòu)造函數(shù)為

            private

            的,它有一個

            static

            private

            的該類變量,在類初始化時實例話,通過

            一個

            public

            getInstance

            方法獲取對它的引用

            ,

            繼而調(diào)用其中的方法。

            publicclassSingleton

            {privateSingleton(){}privatestaticSingletoninstance=newSingleton();public

            staticSingletongetInstance(){returninstance;

            }}

            第二種形式

            :publicclass

            Singleton{privatestaticSingletoninstance=null;publicstaticsynchronized

            SingletongetInstance(){

            if(instance==null)

            instance

            newSingleton();return

            instance;

            }}

            其他形式

            :

            定義一個類,它的構(gòu)造函數(shù)為

            private

            的,所有方法為

            static

            的。一般認為第一種形式要更加安全些

            49

            、

            Java

            的接口和

            C++

            的虛類的相同和不同處。由于

            Java

            不支持多繼承,而有可能某個類或?qū)ο?/p>

            要使用分別在幾個類或?qū)ο罄锩娴姆椒ɑ驅(qū)傩裕F(xiàn)有的單繼承機制就不能滿足要求。與繼承相

            比,接口有更高的靈活性,因為接口中沒有任何實現(xiàn)代碼。當一個類實現(xiàn)了接口以后,該類要實

            現(xiàn)接口里面所有的方法和屬性,并且接口里面的屬性在默認狀態(tài)下面都是

            publicstatic,

            所有方

            法默認情況下是

            public.

            一個類可以實現(xiàn)多個接口。

            Page8

            java

            程序員面試寶典

            50

            、

            Java

            中的異常處理機制的簡單原理和應用。當

            JAVA

            程序違反了

            JAVA

            的語義規(guī)則時,

            JAVA

            虛擬

            機就會將發(fā)生的錯誤表示為一個異常。違反語義規(guī)則包括

            2

            種情況。一種是

            JAVA

            類庫內(nèi)置的語義

            檢查。例如數(shù)組下標越界

            ,

            會引發(fā)

            IndexOutOfBoundsException;

            訪問

            null

            的對象時會引發(fā)

            NullPointerException

            。另一種情況就是

            JAVA

            允許程序員擴展這種語義檢查,程序員可以創(chuàng)建自

            己的異常,并自由選擇在何時用

            throw

            關鍵字引發(fā)異常。所有的異常都是

            le

            子類。

            51

            、垃圾回收的優(yōu)點和原理。并考慮

            2

            種回收機制。

            Java

            語言中一個顯著的特點就是引入了垃圾

            回收機制,使

            c++

            程序員最頭疼的內(nèi)存管理的問題迎刃而解,它使得

            Java

            程序員在編寫程序的時

            候不再需要考慮內(nèi)存管理。由于有個垃圾回收機制,

            Java

            中的對象不再有

            作用域

            的概念,只有

            對象的引用才有

            作用域

            。垃圾回收可以有效的防止內(nèi)存泄露,有效的使用可以使用的內(nèi)存。垃

            圾回收器通常是作為一個單獨的低級別的線程運行,不可預知的情況下對內(nèi)存堆中已經(jīng)死亡的或

            者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調(diào)用垃圾回收器對某個對象或所有

            對象進行垃圾回收。回收機制有分代復制垃圾回收和標記垃圾回收,增量垃圾回收

            本文檔由

            A5

            下載

            收集整理,版權(quán)歸原作者所有。

            A5

            下載提供海量源碼,軟件,素材,教程文檔下載。

            如果您恰好喜歡打籃球,請登錄

            購買正品低價的斯伯丁籃球

            Page9

            本文發(fā)布于:2023-03-05 00:46:46,感謝您對本站的認可!

            本文鏈接:http://www.newhan.cn/zhishi/a/167794840611447.html

            版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時內(nèi)刪除。

            本文word下載地址:java面試寶典.doc

            本文 PDF 下載地址:java面試寶典.pdf

            上一篇:中學生
            下一篇:返回列表
            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            推薦文章
            排行榜
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網(wǎng)旗下知識大全大全欄目是一個全百科類寶庫! 優(yōu)秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 国内精品久久久久电影院| 九九热视频免费在线播放| 国产精品色哟哟在线观看| 亚洲天堂精品一区二区| 免费无码又爽又刺激高潮虎虎视频 | 国产成人av免费观看| 他掀开裙子把舌头伸进去添视频 | 一级二级三一片内射视频在线| 中文字幕在线制服丝袜| 69天堂人成无码麻豆免费视频| 亚洲av美女在线播放啊| 久爱无码精品免费视频在线观看| 成人精品大片—懂色av| 亚洲欧美日韩在线码| 久热综合在线亚洲精品| 亚洲精品无码AV人在线观看国产| free性开放小少妇| 天天躁日日躁狠狠躁一级毛片| 国产欧美日韩专区发布| 中国亚州女人69内射少妇| 亚洲综合国产激情另类一区| 麻豆国产高清精品国在线| 强奷漂亮少妇高潮麻豆| 孕交videos小孕妇xx| 国产在线精品福利91香蕉| 国产成人无码免费看视频软件| 国产精品一区二区人人爽| 国产午夜一区二区在线观看| 亚洲中文字幕一区精品自| 性欧美VIDEOFREE高清大喷水| 国产天美传媒性色av| 久久99久久99精品免视看国产成人| 亚洲av无码第一区二区三区| 久久天天躁狠狠躁夜夜2o2o| 亚洲一区二区三区小蜜桃| 国产综合av一区二区三区| 377P欧洲日本亚洲大胆| 精品国产一区二区三区大| 91精品国产综合久久精品| 久久久久久亚洲精品不卡| 最新午夜男女福利片视频|