激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

java面試題

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

java面試題2014

  Java面試題2014

java面試題2014

  1.C++或Java中的異常處理機制的簡(jiǎn)單原理和應用。

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

  2. Java的接口和C++的虛類(lèi)的相同和不同處。

  由于Java不支持多繼承,而有可能某個(gè)類(lèi)或對象要使用分別在幾個(gè)類(lèi)或對象里面的方法或屬性,現有的單繼承機制就不能滿(mǎn)足要求。與繼承相比,接口有更高的靈活性,因為接口中沒(méi)有任何實(shí)現代碼。當一個(gè)類(lèi)實(shí)現了接口以后,該類(lèi)要實(shí)現接口里面所有的方法和屬性,并且接口里面的屬性在默認狀態(tài)下面都是public static,所有方法默認情況下是public.一個(gè)類(lèi)可以實(shí)現多個(gè)接口。

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

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

  4. 請說(shuō)出你所知道的線(xiàn)程同步的方法。

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

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

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

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

  5. 請講一講析構函數和虛函數的用法和作用。

  6. Error與Exception有什么區別?

  Error表示系統級的錯誤和程序不必處理的異常,

  Exception表示需要捕捉或者需要程序進(jìn)行處理的異常。

  7. 在java中一個(gè)類(lèi)被聲明為final類(lèi)型,表示了什么意思?

  表示該類(lèi)不能被繼承,是頂級類(lèi)。

  8. 描述一下你最常用的編程風(fēng)格。

  9. heap和stack有什么區別。

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

  堆是棧的一個(gè)組成元素

  10. 如果系統要使用超大整數(超過(guò)long長(cháng)度范圍),請你設計一個(gè)數據結構來(lái)存儲這種超大型數字以及設計一種算法來(lái)實(shí)現超大整數加法運算)。

  public class BigInt()

  {

  int[] ArrOne = new ArrOne[1000];

  String intString="";

  public int[] Arr(String s)

  {

  intString = s;

  for(int i=0;i

  {

  11. 如果要設計一個(gè)圖形系統,請你設計基本的圖形元件(Point,Line,Rectangle,Triangle)的簡(jiǎn)單實(shí)現

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

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

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

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

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

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

  第四,&和&&的區別。

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

  第五,HashMap和Hashtable的區別。

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

  第六,Collection 和 Collections的區別。

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

  第七,什么時(shí)候用assert。

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

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

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

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

  兩個(gè)

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

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

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

  short s1 = 1; s1 = s1 + 1; (s1+1運算結果是int型,需要強制轉換類(lèi)型)short s1 = 1; s1 += 1;(可以正確編譯)

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

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

  第十三、

  多線(xiàn)程是為了同步完成多項任務(wù),不是為了提供運行效率,通過(guò)提高資源使用效率來(lái)提高系統的效率. 線(xiàn)程是在同一時(shí)間需要完成多項任務(wù)的時(shí)候實(shí)現的.

  可以完成同時(shí)運行,但是通過(guò)程序運行的結果發(fā)現,雖然同時(shí)運行,但是每一次結果都不一致。

  因為多線(xiàn)程存在一個(gè)特性:隨機性。

  造成的原因:CPU在瞬間不斷切換去處理各個(gè)線(xiàn)程而導致的。

  可以理解成多個(gè)線(xiàn)程在搶cpu資源。

  2、 線(xiàn)程與進(jìn)程的比較

  線(xiàn)程具有許多傳統進(jìn)程所具有的特征,故又稱(chēng)為輕型進(jìn)程(Light—Weight Process)或進(jìn)程元;

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

  進(jìn)程與線(xiàn)程的區別:

  1.進(jìn)程有獨立的進(jìn)程空間,進(jìn)程中的數據存放空間(堆空間和?臻g)是獨立的。

  2.線(xiàn)程的堆空間是共享的,?臻g是獨立的,線(xiàn)程消耗的資源也比進(jìn)程小,相互之間可以影響的

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

  沒(méi)有 很十三的問(wèn)題,如果哪個(gè)面試的問(wèn)到這個(gè)問(wèn)題,我勸你還是別進(jìn)這家公司。

  第十四,數組有沒(méi)有length()這個(gè)方法? String有沒(méi)有length()這個(gè)方法?

  數組沒(méi)有length()這個(gè)方法,有length的屬性。

  String有有length()這個(gè)方法。

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

  方法的重寫(xiě)Overriding和重載Overloading是Java多態(tài)性的不同表現。重寫(xiě)Overriding是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現, 重載Overloading是一個(gè)類(lèi)中多態(tài)性的一種表現。如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數,我們說(shuō)該方法被重寫(xiě) (Overriding)。子類(lèi)的對象使用這個(gè)方法時(shí),將調用子類(lèi)中的定義,對它而言,父類(lèi)中的定義如同被“屏蔽”了。如果在一個(gè)類(lèi)中定義了多個(gè)同名的方 法,它們或有不同的參數個(gè)數或有不同的參數類(lèi)型,則稱(chēng)為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類(lèi)型。

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

  Set里的元素是不能重復的,那么用iterator()方法來(lái)區分重復與否。equals()是判讀兩個(gè)Set是否相等。

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

  第十七,給我一個(gè)你最常見(jiàn)到的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有什么區別?

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

  exception 表示一種設計或實(shí)現問(wèn)題。也就是說(shuō),它表示如果程序運行正常,從不會(huì )發(fā)生的情況。

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

  List,Set是

  Map不是

  第二十,abstract class和interface有什么區別?

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

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

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

  都不能

  第二十二,接口是否可繼承接口? 抽象類(lèi)是否可實(shí)現(implements)接口? 抽象類(lèi)是否可繼承實(shí)體類(lèi)(concrete class)?

  接口可以繼承接口。抽象類(lèi)可以實(shí)現(implements)接口,抽象類(lèi)是否可繼承實(shí)體類(lèi),但前提是實(shí)體類(lèi)必須有明確的構造函數。

  第二十三,啟動(dòng)一個(gè)線(xiàn)程是用run()還是start()?

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

  第二十四,構造器Constructor是否可被override?

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

  第二十五,是否可以繼承String類(lèi)?

  String類(lèi)是final類(lèi)故不可以繼承。

  第二十六,當一個(gè)線(xiàn)程進(jìn)入一個(gè)對象的一個(gè)synchronized方法后,其它線(xiàn)程是否可進(jìn)入此對象的其它方法?

  不能,一個(gè)對象的一個(gè)synchronized方法只能由一個(gè)線(xiàn)程訪(fǎng)問(wèn)。

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

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

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

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

  2 << 3

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

  不對,有相同的hash code。

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

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

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

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

  第三十二,編程題: 寫(xiě)一個(gè)Singleton出來(lái)。

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

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

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

  public class Singleton {

  private Singleton(){}

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

  //注意這是private 只供內部調用

  private static Singleton instance = new Singleton();

  //這里提供了一個(gè)供外部訪(fǎng)問(wèn)本class的靜態(tài)方法,可以直接訪(fǎng)問(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)行生成對象,只是第一次

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

  if (instance==null)

  instance=new Singleton();

  return instance; }

  }

  其他形式:

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

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

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

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

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

面試題精選02-18

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

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

Microsoft 面試題11-19

蘋(píng)果 面試題11-19

熱門(mén)就業(yè)行業(yè)面試題精選 銷(xiāo)售行業(yè)面試題11-20

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

java面試的測試11-20

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频