<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • java面試題

    時間:2024-08-11 09:00:55 面試筆試 我要投稿

    java面試題2014

      Java面試題2014

    java面試題2014

      1.C++或Java中的異常處理機制的簡單原理和應(yīng)用。

      當JAVA程序違反了JAVA的語義規(guī)則時,JAVA虛擬機就會將發(fā)生的錯誤表示為一個異常。違反語義規(guī)則包括2種情況。一種是JAVA類庫內(nèi)置的語義檢查。例如數(shù)組下標越界,會引發(fā)IndexOutOfBoundsException;訪問null的對象時會引發(fā)NullPointerException。另一種情況就是JAVA允許程序員擴展這種語義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時用throw關(guān)鍵字引發(fā)異常。所有的異常都是java.lang.Thowable的子類。

      2. Java的接口和C++的虛類的相同和不同處。

      由于Java不支持多繼承,而有可能某個類或?qū)ο笠褂梅謩e在幾個類或?qū)ο罄锩娴姆椒ɑ驅(qū)傩裕F(xiàn)有的單繼承機制就不能滿足要求。與繼承相比,接口有更高的靈活性,因為接口中沒有任何實現(xiàn)代碼。當一個類實現(xiàn)了接口以后,該類要實現(xiàn)接口里面所有的方法和屬性,并且接口里面的屬性在默認狀態(tài)下面都是public static,所有方法默認情況下是public.一個類可以實現(xiàn)多個接口。

      3. 垃圾回收的優(yōu)點和原理。并考慮2種回收機制。

      Java語言中一個顯著的特點就是引入了垃圾回收機制,使c++程序員最頭疼的內(nèi)存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候不再需要考慮內(nèi)存管理。由于有個垃圾回收機制,Java中的對象不再有“作用域”的概念,只有對象的引用才有“作用域”。垃圾回收可以有效的防止內(nèi)存泄露,有效的使用可以使用的內(nèi)存。垃圾回收器通常是作為一個單獨的低級別的線程運行,不可預(yù)知的情況下對內(nèi)存堆中已經(jīng)死亡的或者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調(diào)用垃圾回收器對某個對象或所有對象進行垃圾回收。回收機制有分代復(fù)制垃圾回收和標記垃圾回收,增量垃圾回收。

      4. 請說出你所知道的線程同步的方法。

      wait():使一個線程處于等待狀態(tài),并且釋放所持有的對象的lock。

      sleep():使一個正在運行的線程處于睡眠狀態(tài),是一個靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException異常。

      notify():喚醒一個處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時候,并不能確切的喚醒某一個等待狀態(tài)的線程,而是由JVM確定喚醒哪個線程,而且不是按優(yōu)先級。

      Allnotity():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。

      5. 請講一講析構(gòu)函數(shù)和虛函數(shù)的用法和作用。

      6. Error與Exception有什么區(qū)別?

      Error表示系統(tǒng)級的錯誤和程序不必處理的異常,

      Exception表示需要捕捉或者需要程序進行處理的異常。

      7. 在java中一個類被聲明為final類型,表示了什么意思?

      表示該類不能被繼承,是頂級類。

      8. 描述一下你最常用的編程風格。

      9. heap和stack有什么區(qū)別。

      棧是一種線形集合,其添加和刪除元素的操作應(yīng)在同一段完成。棧按照后進先出的方式進行處理。

      堆是棧的一個組成元素

      10. 如果系統(tǒng)要使用超大整數(shù)(超過long長度范圍),請你設(shè)計一個數(shù)據(jù)結(jié)構(gòu)來存儲這種超大型數(shù)字以及設(shè)計一種算法來實現(xiàn)超大整數(shù)加法運算)。

      public class BigInt()

      {

      int[] ArrOne = new ArrOne[1000];

      String intString="";

      public int[] Arr(String s)

      {

      intString = s;

      for(int i=0;i

      {

      11. 如果要設(shè)計一個圖形系統(tǒng),請你設(shè)計基本的圖形元件(Point,Line,Rectangle,Triangle)的簡單實現(xiàn)

      第一,談?wù)刦inal, finally, finalize的區(qū)別。

      final 用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。finally是異常處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行。finalize是 Object類的一個方法,在垃圾收集器執(zhí)行的時候會調(diào)用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關(guān)閉文件等。

      第二,Anonymous Inner Class (匿名內(nèi)部類) 是否可以extends(繼承)其它類,是否可以implements(實現(xiàn))interface(接口)?

      可以繼承其他類或完成其他接口,在swing編程中常用此方式。

      第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統(tǒng))。

      Static Nested Class是被聲明為靜態(tài)(static)的內(nèi)部類,它可以不依賴于外部類實例被實例化。而通常的內(nèi)部類需要在外部類實例化后才能實例化。

      第四,&和&&的區(qū)別。

      &是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and).

      第五,HashMap和Hashtable的區(qū)別。

      HashMap是Hashtable的輕量級實現(xiàn)(非線程 安全 的實現(xiàn)),他們都完成了Map接口,主要區(qū)別在于HashMap允許空(null)鍵值(key),由于非線程 安全 ,效率上可能高于Hashtable.

      第六,Collection 和 Collections的區(qū)別。

      Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.Collections是針對集合類的一個幫助類,他提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全化等操作。

      第七,什么時候用assert。

      1.4新增關(guān)鍵字(語法),用于測試boolean表達式狀態(tài),可用于調(diào)試程序。使用方法 assert ,表示如果表達式為真(true),則下面的語句執(zhí)行,否則拋出AssertionError。另外的使用方式assert < boolean表達式>:,表示如果表達式為真,后面的表達式忽略,否則后面表達式的值用于AssertionError的構(gòu)建參數(shù)。注意編譯時要增加-source 1.4 參數(shù),否則報錯。]運行時要增加 –ea參數(shù),否則assert行被忽略

      第八,GC是什么? 為什么要有GC?

      GC是垃圾收集的意思(Gabage Collection),內(nèi)存處理是編程人員容易出現(xiàn)問題的地方,忘記或者錯誤的內(nèi)存回收會導致程序或系統(tǒng)的不穩(wěn)定甚至崩潰, Java 提供的GC功能可以 自動監(jiān)測對象是否超過作用域從而達到自動回收內(nèi)存的目的, Java 語言沒有提供釋放已分配內(nèi)存的顯示操作方法。

      第九,String s = new String("xyz");創(chuàng)建了幾個String Object?

      兩個

      第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

      Math.round(11.5)==12Math.round(-11.5)==-11round方法返回與參數(shù)最接近的長整數(shù),參數(shù)加1/2后求其floor.

      第十一,short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?

      short s1 = 1; s1 = s1 + 1; (s1+1運算結(jié)果是int型,需要強制轉(zhuǎn)換類型)short s1 = 1; s1 += 1;(可以正確編譯)

      第十二,sleep() 和 wait() 有什么區(qū)別?

      sleep是線程類(Thread)的方法,導致此線程暫停執(zhí)行指定時間,給執(zhí)行機會給其他線程,但是監(jiān)控狀態(tài)依然保持,到時后會自動恢復(fù)。調(diào)用 sleep不會釋放對象鎖。wait是Object類的方法,對此對象調(diào)用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對 象發(fā)出notify方法(或notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態(tài)。

      第十三、

      多線程是為了同步完成多項任務(wù),不是為了提供運行效率,通過提高資源使用效率來提高系統(tǒng)的效率. 線程是在同一時間需要完成多項任務(wù)的時候?qū)崿F(xiàn)的.

      可以完成同時運行,但是通過程序運行的結(jié)果發(fā)現(xiàn),雖然同時運行,但是每一次結(jié)果都不一致。

      因為多線程存在一個特性:隨機性。

      造成的原因:CPU在瞬間不斷切換去處理各個線程而導致的。

      可以理解成多個線程在搶cpu資源。

      2、 線程與進程的比較

      線程具有許多傳統(tǒng)進程所具有的特征,故又稱為輕型進程(Light—Weight Process)或進程元;

      而把傳統(tǒng)的進程稱為重型進程(Heavy—Weight Process),它相當于只有一個線程的任務(wù)。在引入了線程的操作系統(tǒng)中,通常一個進程都有若干個線程,至少需要一個線程。

      進程與線程的區(qū)別:

      1.進程有獨立的進程空間,進程中的數(shù)據(jù)存放空間(堆空間和棧空間)是獨立的。

      2.線程的堆空間是共享的,棧空間是獨立的,線程消耗的資源也比進程小,相互之間可以影響的

      第十三,Java有沒有g(shù)oto?

      沒有 很十三的問題,如果哪個面試的問到這個問題,我勸你還是別進這家公司。

      第十四,數(shù)組有沒有l(wèi)ength()這個方法? String有沒有l(wèi)ength()這個方法?

      數(shù)組沒有l(wèi)ength()這個方法,有l(wèi)ength的屬性。

      String有有l(wèi)ength()這個方法。

      第十五,Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?

      方法的重寫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的方法是可以改變返回值的類型。

      第十六,Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別?

      Set里的元素是不能重復(fù)的,那么用iterator()方法來區(qū)分重復(fù)與否。equals()是判讀兩個Set是否相等。

      equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當兩個分離的對象的內(nèi)容和類型相配的話,返回真值。

      第十七,給我一個你最常見到的runtime exception。

    [next]

      參考如下:

      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

      第十八,error和exception有什么區(qū)別?

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

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

      第十九,List, Set, Map是否繼承自Collection接口?

      List,Set是

      Map不是

      第二十,abstract class和interface有什么區(qū)別?

      聲明方法的存在而不去實現(xiàn)它的類被叫做抽象類(abstract class),它用于要創(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)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個 有程序體。接口只可以定義static final成員變量。接口的實現(xiàn)與子類相似,除了該實現(xiàn)類不能從接口定義中繼承行為。當類實現(xiàn)特殊接口時,它定義(即將程序體給予)所有這種接口的方法。 然后,它可以在實現(xiàn)了該接口的類的任何對象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到 接口類型或從接口類型轉(zhuǎn)換,instanceof 運算符可以用來決定某對象的類是否實現(xiàn)了接口。

      第二十一,abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?

      都不能

      第二十二,接口是否可繼承接口? 抽象類是否可實現(xiàn)(implements)接口? 抽象類是否可繼承實體類(concrete class)?

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

      第二十三,啟動一個線程是用run()還是start()?

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

      第二十四,構(gòu)造器Constructor是否可被override?

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

      第二十五,是否可以繼承String類?

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

      第二十六,當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?

      不能,一個對象的一個synchronized方法只能由一個線程訪問。

      第二十七,try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后?

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

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

      有C背景的程序員特別喜歡問這種問題。

      2 << 3

      第二十九,兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?

      不對,有相同的hash code。

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

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

      第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

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

      第三十二,編程題: 寫一個Singleton出來。

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

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

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

      public class Singleton {

      private Singleton(){}

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

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

      private static Singleton instance = new Singleton();

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

      public static Singleton getInstance() {

      return instance;

      }

      }

      第二種形式:

      public class Singleton {

      private static Singleton instance = null;

      public static synchronized Singleton getInstance() {

      //這個方法比上面有所改進,不用每次都進行生成對象,只是第一次

      //使用時生成實例,提高了效率!

      if (instance==null)

      instance=new Singleton();

      return instance; }

      }

      其他形式:

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

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

    【java面試題】相關(guān)文章:

    Java面試的面試題目與解題思路 201411-20

    2017年java中高級筆試面試題及答案11-11

    面試題精選02-18

    分享面試題目 教育職業(yè)面試題11-20

    熱門就業(yè)行業(yè)面試題精選:編輯行業(yè)面試題!11-19

    Microsoft 面試題11-19

    蘋果 面試題11-19

    熱門就業(yè)行業(yè)面試題精選 銷售行業(yè)面試題11-20

    java面試的經(jīng)驗11-20

    java面試的測試11-20

    主站蜘蛛池模板: 日本精品视频在线观看| 2023国产精品自拍| 91精品国产自产在线老师啪| 中文字幕久精品免费视频| 91午夜精品亚洲一区二区三区| 日本内射精品一区二区视频| 精品久久久久久无码人妻热| 久久精品草草草| 99国产精品一区二区| 婷婷五月深深久久精品| 日韩午夜高清福利片在线观看欧美亚洲精品suv | 成人精品一区二区久久| 国内精品51视频在线观看 | 婷婷国产成人精品视频| 欧美激情精品久久久久久久| 国产精品成人一区二区| 欧美巨大黑人精品videos| 999精品视频这里只有精品| 精品福利视频一区二区三区 | 久久人人超碰精品CAOPOREN| 久久夜色精品国产噜噜麻豆| 伊人久久精品无码二区麻豆| 日韩在线精品一二三区| 久久99精品国产麻豆不卡| 国产午夜精品久久久久九九电影 | 日韩精品在线播放| 久久精品国产亚洲7777| 国产偷窥熟女高潮精品视频| 国产午夜精品理论片| 国产精品无码免费播放| 国产精品二区观看| 精品无码国产污污污免费网站国产 | 久久亚洲精精品中文字幕| 亚洲国产精品无码专区| 亚洲av日韩精品久久久久久a| 亚洲精品乱码久久久久久久久久久久| 亚洲精品WWW久久久久久| 在线精品亚洲| 日韩精品极品视频在线观看免费| 少妇人妻偷人精品无码视频新浪| 久久夜色精品国产噜噜麻豆 |