當前位置:編程學習大全網 - 編程語言 - 采訪節目

采訪節目

先說說final的區別,最後是finalize。

決賽?Modifier (keyword)如果壹個類被聲明為final,就意味著它不能再派生新的子類,也不能作為父類繼承。因此,壹個類不能同時聲明為abstract和final。將變量或方法聲明為final可以確保它們在使用中不會被更改。聲明為final的變量必須在聲明時被賦予壹個初始值,並且在以後的引用中只能讀取不能修改。聲明為final的方法只能使用,final不能重載。提供finally塊以在異常處理期間執行任何清除操作。如果拋出異常,將執行匹配的catch子句,然後控制將進入finally塊(如果有)。

敲定?方法名稱。Java技術允許使用finalize()方法在垃圾收集器從內存中清除對象之前進行必要的清理。當確定對象未被引用時,垃圾回收器調用此方法。它是在Object類中定義的,所以所有的類都繼承它。子類覆蓋finalize()方法來組織系統資源或執行其他清理任務。在垃圾收集器刪除該對象之前,會對其調用finalize()方法。

第二,匿名內部類可以擴展其他類並實現接口嗎?

匿名內部類是沒有名字的內部類。您不能擴展其他類,但是壹個內部類可以被另壹個內部類實現為接口。

三、靜態嵌套類和內部類的區別,說的越多越好(有些面試問題很籠統)。

嵌套類(通常是C++),內部類(通常是JAVA)。Java內部類和C++嵌套類最大的區別就是有沒有對外部的引用。請參閱/文章/服務/視圖。ASP詳情?id = 704 & amppage=1

註意:靜態內部類是指1創建壹個沒有外部類對象的靜態內部類的對象,2不能從靜態內部類的對象訪問外部類對象。

第四,&;和& & amp不同之處。

& amp是位運算符。& amp& amp是布爾邏輯運算符。

第五,HashMap和Hashtable的區別。

都屬於Map接口的類,實現了唯壹鍵到特定值的映射。

HashMap類沒有被分類或排序。它允許壹個空鍵和多個空值。

Hashtable類似於HashMap,但是不允許空鍵和空值。它也比HashMap慢,因為它是同步的。

第六,收藏與收藏的區別。

Collections是java.util下的壹個類,包含了各種關於集合操作的靜態方法。

集合是java.util下的壹個接口,是各種集合結構的父接口。

第七,什麽時候使用assert。

斷言是包含布爾表達式的語句,在執行時假設為真。如果表達式的計算結果為false,則報告AssertionError。它用於調試目的:

斷言(a & gt0);//如果& lt= 0

斷言有兩種形式:

斷言表達式1;

assert expression 1:expression 2;

Expression1應該總是產生壹個布爾值。

Expression2可以是任何產生值的表達式。該值用於生成顯示更多調試信息的字符串消息。

默認情況下,斷言是禁用的。要在編譯時啟用斷言,您需要使用source 1.4標記:

javac-source 1.4 Test.java

要在運行時啟用斷言,可以使用-enableassertions或-ea標記。

要選擇在運行時禁用斷言,可以使用-da或-disable assessments標記。

要在系統類中啟用斷言,可以使用-esa或-dsa標記。您還可以在包的基礎上啟用或禁用斷言。

斷言可以放在正常情況下不會到達的任何地方。斷言可以用來驗證傳遞給私有方法的參數。但是,斷言不應該用於驗證傳遞給公共方法的參數,因為無論斷言是否啟用,公共方法都必須檢查它們的參數。但是,您可以在公共和非公共方法中使用斷言來測試後置條件。此外,斷言不應該以任何方式改變程序的狀態。

第八,什麽是GC?為什麽會有GC?(基礎)。

GC是壹個垃圾收集器。Java程序員不必擔心內存管理,因為垃圾收集器會自動管理它。若要請求垃圾回收,可以調用下列方法之壹:

System.gc()

Runtime.getRuntime()。gc()

第九,字符串s =新字符串(" XYZ ");創建了多少個stringobjects?

兩個對象,壹個是“xyx”,另壹個是指向“xyx”的引用對象S。

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

Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

第十壹,短s 1 = 1;s 1 = s 1+1;怎麽了?短s 1 = 1;s 1+= 1;怎麽了?

短s 1 = 1;s 1 = s 1+1;不對。s1是short類型,s1+1是int類型,不能顯式轉換為short類型。可以修改為s1 =(短)(s1+1)。短s 1 = 1;S1 += 1是正確的。

第十二,sleep()和wait()有什麽區別?制線最愛

sleep()方法是壹種在壹段時間內停止線程的方法。休眠間隔到期後,線程不壹定會立即恢復執行。這是因為在那個時刻,其他線程可能正在運行並且沒有被調度來放棄執行,除非(a)“喚醒”線程具有更高的優先級,以及(b)正在運行的線程由於其他原因被阻塞。

Wait()是壹個線程交互。如果壹個線程調用了壹個同步對象X,那麽這個線程就會掛起執行,被調用的對象就會進入等待狀態,直到被喚醒或者等待時間到了。

第十三,Java有goto嗎?

Goto?java裏的保留字現在java裏不用了。

第十四,數組有length()方法嗎?String有length()方法嗎?

數組沒有length()的方法,但具有length的屬性。

字符串的方法長度為()。

第五,超載和越權的區別。重載的方法可以改變返回值的類型嗎?

方法的覆蓋和重載是Java多態性的不同表現。重寫是父類和子類之間多態性的表現,重載是壹個類中多態性的表現。如果在子類中定義的方法與其父類具有相同的名稱和參數,我們說該方法是重寫的。當子類中的對象使用這個方法時,它將調用子類中的定義。對於它來說,父類中的定義似乎是“屏蔽”的。如果在壹個類中定義了多個同名的方法,它們要麽有不同的參數號,要麽有不同的參數類型,這就是所謂的方法重載。重載的方法是改變返回值的類型。

第十六,集合中的元素不能重復,那麽用什麽方法來區分是否重復呢?是= =還是等於()?兩者有什麽區別?

集合中的元素不能重復,所以用iterator()方法來區分是否重復。Equals()是判斷兩個集合是否相等。

equals()和= =方法確定引用值是否指向同壹個對象。equals()在類中被覆蓋,以便在兩個獨立對象的內容和類型匹配時返回壹個true值。

第十七,給我壹個妳最常聽到的運行時異常。

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

第十八,錯誤和異常有什麽區別?

錯誤表示當恢復不是不可能而是困難時,恢復是壹個嚴重的問題。例如,內存溢出。期望程序處理這樣的情況是不可能的。

異常表示設計或實現問題。換句話說,就是程序正常運行的話,永遠不會發生。

第十九,list,set,map是否從集合接口繼承?

列表,設置為

地圖不是。

第二十,抽象類和接口有什麽區別?

聲明方法存在而不實現它的類稱為抽象類。當妳想創建壹個體現壹些基本行為的類,並為這個類聲明壹個方法,但不能在這個類中實現這個類的時候,就要用到它。您不能創建抽象類的實例。但是,您可以創建壹個類型為抽象類的變量,並將其指向壹個具體子類的實例。不能有抽象構造函數或抽象靜態方法。抽象類的子類為其父類中的所有抽象方法提供實現,否則它們也是抽象類。相反,在子類中實現這個方法。其他知道其行為的類可以在類中實現這些方法。

接口是抽象類的變體。在接口中,所有的方法都是抽象的。通過實現這樣的接口可以獲得多重繼承。接口中的所有方法都是抽象的,它們都沒有程序體。接口只能定義靜態最終成員變量。接口的實現類似於子類的實現,只是實現類不能從接口定義繼承行為。當壹個類實現壹個特殊的接口時,它定義(也就是給程序體)所有這樣的接口的方法。然後,它可以在實現接口的類的任何對象上調用接口的方法。由於抽象類,它允許使用接口名稱作為引用變量的類型。通常的動態綁定將生效。引用可以與接口類型相互轉換,instanceof運算符可用於確定對象的類是否實現接口。

第二十壹,抽象方法可以同時是靜態的、原生的和同步的嗎?

都不是。

第二十二,接口可以繼承接口嗎?抽象類可以實現接口嗎?抽象類可以繼承具體類嗎?

接口可以從接口繼承。抽象類可以實現接口,不管抽象類是否可以繼承實體類,但前提是實體類有顯式的構造函數。

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

啟動壹個線程就是調用start()方法,使線程所代表的虛擬處理器處於可運行狀態,也就是說可以被JVM調度執行。這並不意味著線程會立即運行。run()方法可以通過生成壹個必須退出的標誌來停止線程。

第二十四,構造函數可以被重寫嗎

構造函數不能被繼承,因此它不能重寫重載,但可以重載。

第二十五,可以繼承字符串類嗎?

String類是final類,因此不能被繼承。

第二十六,當壹個線程進入壹個對象的同步方法時,其他線程可以進入這個對象的其他方法嗎?

不,壹個對象的同步方法只能被壹個線程訪問。

第二十七,try {}中有壹個return語句,那麽這個try之後的finally {}中的代碼是否會立即執行,什麽時候執行,return之前還是之後?

將在返回之前執行。

第二十八,編程問題:用最高效的方法計算2乘8等於多少?

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

2 & lt& lt三

第二十九,兩個對象有相同的值(x.equals(y) == true),但是可以有不同的哈希碼。這是正確的嗎?

不,它有相同的散列碼。

第三十,當壹個對象作為參數傳遞給壹個方法時,這個方法可以改變對象的屬性,返回改變後的結果。那麽,這個是值傳遞還是引用傳遞呢?

是價值轉移。Java編程語言只通過值傳遞參數。當對象實例作為參數傳遞給方法時,參數的值是對該對象的引用。對象的內容可以在被調用的方法中改變,但是對象的引用永遠不會改變。

第三十壹,swtich可以作用於byte,long,String嗎?

在switch(expr1)中,expr1是壹個整數表達式。所以傳遞給switch和case語句的參數應該是int,short,char或者byte。繩子既不能長,也不能短。

第三十二,編程問題:寫壹個單體。

Singleton模式的主要功能是確保Java應用程序中只存在壹個類的實例。

壹般的單例模式通常有幾種形式:

第壹種形式:定義壹個類,它的構造函數是私有的,它有這個類的靜態私有變量。當類被實例化時,通過公共getInstance方法獲取對它的引用,然後調用它的方法。

公共類Singleton {

私有Singleton(){}

//在自己內部定義壹個自己的實例是不是很奇怪?

//註意,這是私有的,僅用於內部調用。

私有靜態Singleton實例= new Singleton();

//這裏有壹個外部訪問這個類的靜態方法,可以直接訪問。

公共靜態Singleton getInstance() {

返回實例;

}

}

第二種形式:

公共類Singleton {

私有靜態單例實例= null

公共靜態同步單例getInstance() {

//這個方法比上面的好。沒有每次都生成對象只是第壹次。

//使用過程中生成實例,提高效率!

if (instance==null)

instance = new Singleton();

返回實例;}

}

其他形式:

定義壹個類,它的構造函數是私有的,所有方法都是靜態的。

壹般認為第壹種形式更安全。

第三十三條散列表和散列表

Hashtable繼承自Dictionary類,HashMap是Java1.2引入的Map接口的實現。

HashMap允許null作為條目的鍵或值,而Hashtable不允許。

此外,HashMap移除了Hashtable的contains方法,將其改為containsvalue和containsKey。因為contains方法具有誤導性。

最大的區別是Hashtable的方法是同步的,而HashMap不是。多線程訪問Hashtable時,不需要同步自己的方法,但是HashMap必須為它們提供外部同步。

Hashtable和HashMap使用大致相同的hash/rehash算法,所以性能不會有很大差別。

  • 上一篇:數控仿真華中系統加工螺紋的程序,完整格式是什麽?
  • 下一篇:如何用樂高制作陀螺
  • copyright 2024編程學習大全網