forget and forget

          能吃能睡是福;能忘是大福......

          posts - 39, comments - 26, trackbacks - 0, articles - 10
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          JAVA面試題集(2)

          Posted on 2006-05-21 10:04 橘子 閱讀(104) 評(píng)論(0)  編輯  收藏
          27,給我一個(gè)你最常見到的runtime exception。

          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

          28,error和exception有什么區(qū)別?

            error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問(wèn)題。比如說(shuō)內(nèi)存溢出。不可能指望程序能處理這樣的情況。

            exception 表示一種設(shè)計(jì)或?qū)崿F(xiàn)問(wèn)題。也就是說(shuō),它表示如果程序運(yùn)行正常,從不會(huì)發(fā)生的情況。

          29,List, Set, Map是否繼承自Collection接口?

          List,Set是

          Map不是

          30,abstract class和interface有什么區(qū)別?

            聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽象類(abstract class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該類的情況。不能創(chuàng)建abstract 類的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類型是一個(gè)抽象類,并讓它指向具體子類的一個(gè)實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract 類的子類為它們父類中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類為。取而代之,在子類中實(shí)現(xiàn)該方法。知道其行為的其它類可以在類中實(shí)現(xiàn)這些方法。

            接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過(guò)實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個(gè)有程序體。接口只可以定義static final成員變量。接口的實(shí)現(xiàn)與子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類的任何對(duì)象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來(lái)決定某對(duì)象的類是否實(shí)現(xiàn)了接口。





          31,abstract的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是synchronized?

            都不能

          32,接口是否可繼承接口? 抽象類是否可實(shí)現(xiàn)(implements)接口? 抽象類是否可繼承實(shí)體類(concrete class)?

            接口可以繼承接口。抽象類可以實(shí)現(xiàn)(implements)接口,抽象類是否可繼承實(shí)體類,但前提是實(shí)體類必須有明確的構(gòu)造函數(shù)。

          33,啟動(dòng)一個(gè)線程是用run()還是start()?

            啟動(dòng)一個(gè)線程是調(diào)用start()方法,使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會(huì)立即運(yùn)行。run()方法可以產(chǎn)生必須退出的標(biāo)志來(lái)停止一個(gè)線程。

          34,構(gòu)造器Constructor是否可被override?

            構(gòu)造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。

          35,是否可以繼承String類?

            String類是final類故不可以繼承。

          36,當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法?

            不能,一個(gè)對(duì)象的一個(gè)synchronized方法只能由一個(gè)線程訪問(wèn)。

          37,try {}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally {}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?

            會(huì)執(zhí)行,在return前執(zhí)行。

          38,編程題: 用最有效率的方法算出2乘以8等於幾?

            有C背景的程序員特別喜歡問(wèn)這種問(wèn)題。

            2 << 3

          39,兩個(gè)對(duì)象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對(duì)不對(duì)?

            不對(duì),有相同的hash code。

          40,當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?

            是值傳遞。Java 編程語(yǔ)言只由值傳遞參數(shù)。當(dāng)一個(gè)對(duì)象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是對(duì)該對(duì)象的引用。對(duì)象的內(nèi)容可以在被調(diào)用的方法中改變,但對(duì)象的引用是永遠(yuǎn)不會(huì)改變的。

          41,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

            switch(expr1)中,expr1是一個(gè)整數(shù)表達(dá)式。因此傳遞給 switch 和 case 語(yǔ)句的參數(shù)應(yīng)該是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

          42,編程題: 寫一個(gè)Singleton出來(lái)。

            Singleton模式主要作用是保證在Java應(yīng)用程序中,一個(gè)類Class只有一個(gè)實(shí)例存在。

            一般Singleton模式通常有幾種種形式:

            第一種形式:定義一個(gè)類,它的構(gòu)造函數(shù)為private的,它有一個(gè)static的private的該類變量,在類初始化時(shí)實(shí)例話,通過(guò)一個(gè)public的getInstance方法獲取對(duì)它的引用,繼而調(diào)用其中的方法。

          public class Singleton {

            private Singleton(){}

            //在自己內(nèi)部定義自己一個(gè)實(shí)例,是不是很奇怪?

            //注意這是private 只供內(nèi)部調(diào)用

            private static Singleton instance = new Singleton();

            //這里提供了一個(gè)供外部訪問(wèn)本class的靜態(tài)方法,可以直接訪問(wèn)  

            public static Singleton getInstance() {

              return instance;   

             }

          }



            第二種形式:

          public class Singleton {

            private static Singleton instance = null;

            public static synchronized Singleton getInstance() {

            //這個(gè)方法比上面有所改進(jìn),不用每次都進(jìn)行生成對(duì)象,只是第一次     

            //使用時(shí)生成實(shí)例,提高了效率!

            if (instance==null)

              instance=new Singleton();

          return instance;   }

          }

          其他形式:

            定義一個(gè)類,它的構(gòu)造函數(shù)為private的,所有方法為static的。

            一般認(rèn)為第一種形式要更加安全些

            Hashtable和HashMap

            Hashtable繼承自Dictionary類,而HashMap是Java1.2引進(jìn)的Map interface的一個(gè)實(shí)現(xiàn)

            HashMap允許將null作為一個(gè)entry的key或者value,而Hashtable不允許

            還有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因?yàn)閏ontains方法容易讓人引起誤解。

            最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在

          多個(gè)線程訪問(wèn)Hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap

          就必須為之提供外同步。

          Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會(huì)有很大的差異。

          43.描述一下JVM加載class文件的原理機(jī)制?

          44.試舉例說(shuō)明一個(gè)典型的垃圾回收算法?

          45.請(qǐng)用java寫二叉樹算法,實(shí)現(xiàn)添加數(shù)據(jù)形成二叉樹功能,并以先序的方式打印出來(lái).

          46.請(qǐng)寫一個(gè)java程序?qū)崿F(xiàn)線程連接池功能?

          47.給定一個(gè)C語(yǔ)言函數(shù),要求實(shí)現(xiàn)在java類中進(jìn)行調(diào)用。

          48、編一段代碼,實(shí)現(xiàn)在控制臺(tái)輸入一組數(shù)字后,排序后在控制臺(tái)輸出;

          49、列出某文件夾下的所有文件;

          50、調(diào)用系統(tǒng)命令實(shí)現(xiàn)刪除文件的操作;

          51、實(shí)現(xiàn)從文件中一次讀出一個(gè)字符的操作;

          52、列出一些控制流程的方法;

          53、多線程有哪些狀態(tài)?

          54、編寫了一個(gè)服務(wù)器端的程序?qū)崿F(xiàn)在客戶端輸入字符然后在控制臺(tái)上顯示,直到輸入"END"為止,讓你寫出客戶端的程序;

          55、作用域public,private,protected,以及不寫時(shí)的區(qū)別

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 沧源| 济宁市| 章丘市| 怀安县| 康马县| 景泰县| 定西市| 东源县| 奎屯市| 黑水县| 亳州市| 大同县| 玉林市| 扎鲁特旗| 宣武区| 唐河县| 灵丘县| 论坛| 湘潭县| 舒兰市| 临湘市| 赣榆县| 淅川县| 澄江县| 呈贡县| 富蕴县| 大名县| 商都县| 砀山县| 武城县| 竹溪县| 西乡县| 秦安县| 黄陵县| 镇巴县| 惠州市| 赤峰市| 吴忠市| 洛隆县| 吉安县| 澳门|