1.Java容器框架有哪些?
#Java容器框架中有兩個名稱分別為Collection和Set的介面
2.list,map,set,array,它們有什麼差別 (建議學習:java實習生面試題
#List介面主要有三個實作類別:LinkedList,ArrayList,Vector.
LinkedList:底層基於鍊錶實現,鍊錶記憶體是散亂的,每一個元素儲存本身記憶體位址的同時也儲存下一個元素的位址
ArrayList和Vector的差別:ArrayList是非線程安全的,效率高;Vector是基於線程安全的,效率低。
1)Set介面主要有兩個實作類別:HashSet(底層由HashMap實作)和LinkedHashSet
2)Map介面主要實作類別:HashMap,HashTable和LinkedHashMap
#HashMap非線程安全,高效,支援NULL;HashTable線程安全,低效,不支援NULL
Array:數組,可以儲存物件和基本資料類型,長度固定。
List:元素有序,可重複.
Set:元素無序,不重複,無索引。
Map:雙列集合,用來存放鍵值對。鍵值是唯一的,不可重複。
3.collection與collections有什麼不同
a.javutil.Collection是一個集合介面。它提供了對集合物件進行基本操作的通用介面方法。 Collection介面在Java類別庫中有很多具體的實作。 Collection介面的意義是為各種具體的集合提供了最大化的統一操作方式。
b.java.util.Collections是一個包裝類別。它包含有各種有關集合運算的靜態多型方法。此類別不能實例化,就像一個工具類,服務於Java的Collection框架。
4.string,stringbuilder,stringbuffer有什麼差別
程式中用到的字串可以分為兩大類別:一類別是建立之後不會再做修改和變動的字串變數;另一種是創建之後允許再做修改的字串變數。
對於前一種字串變量,由於程式中經常需要對它做比較、搜尋之類的操作,所以通常把它放在一個具有一定名稱的物件之中,由於程式完成對該物件的上述操作,在Java程式中存放這種字串變數是String類別變數;
對於後一種字串變量,由於程式中經常需要對它做添加、插入、修改之類的操作,所以這種字串變數一般都存放在StringBuilder類別的物件之中。
String 字串變數,
StringBuffer字串變數(線程安全),
StringBuilder字串變數(非線程安全)
5.==與equals有什麼區別
程式中比較兩個字元時,使用關係運算子」==”,而比較兩個字串時,則需使用equals()方法。
6.&和&&的區別
&&是簡潔運算符,&是非簡潔運算符。簡潔運算子(&&,||)與非簡潔運算子(&,|)的差別在於:非簡潔運算在必須計算完左右兩個表達式之後,才取結果值;而簡潔表達式可能只計算左邊的表達式而不計算右邊的表達式,即對於表達式&&,只要左邊表達式為false,就不計算右邊表達式,則整個表達式為false;對於||,只要左邊表達式為true,就不計算右邊表達式,則整個表達式為true.
7.程序,進程和線程的區別
1)程序是含有指令和資料的文件,被儲存在磁碟或其他的資料儲存設備中,也就是說程式是靜態的程式碼。
2)進程是程式的一次執行過程,是系統運行程序的基本單位,因此進程是動態的。系統運行一個程式即是一個程式從創建、運行到消亡的過程。簡單地說,一個行程就是一個執行中地程序,它在電腦中一個指令接著一個指令地執行,同時,每個行程還佔有某些系統資源,如CPU時間、記憶體空間、檔案、輸入輸出裝置地使用權等等。
3)執行緒:其實與行程相似,也是執行中地程序,但是執行緒是一個比行程更小地執行單位。一個行程在執行過程中可以產生多個執行緒,形成多條執行執行路徑。但與進程不同的是,同類的多個線程共享同一塊記憶體空間和一組系統資源,所以系統在產生一個線程,或是在各個線程之間作切換的工作時,負擔要比進程小得多,也因為如此,也因為如此,執行緒也被稱為輕量級進程。
8.執行緒有哪幾種狀態?
新狀態、就緒狀態、運作狀態、阻塞狀態、消亡狀態這五種狀態
#9.執行緒的互斥與同步的差異
互斥是指兩個或多個執行緒不能同時執行,而同步則是兩個或多個執行緒的運行有先後次序的約束。
10.線程的同步與共享數據的區別?
共享是指線程之間對內存數據的共享,因為線程共同擁有對內存空間中數據的處理權力,這會導致因為多個執行緒同時處理資料而使資料出現不一致,所以提出同步解決此問題,即同步是在共享的基礎上,是針對多個執行緒共享會導致資料不一致而提出來的。
同步指的是處理資料的執行緒不能處理其他執行緒目前還沒處理完的數據,但是可以處理其他資料。
11.執行緒同步與非同步差異
執行緒同步是多個執行緒同時存取相同資源,等待資源存取結束,浪費時間,效率低;執行緒同步:存取資源時在空閒等待時同時存取其他資源,實現多執行緒機制。
12.Java中四捨五入有哪些方法?
Math類別中提供了三個與取整有關的方法:ceil,floor,round,這些方法的作用於它們的英文名稱的含義相對應,例如:
ceil的英文意義是天花板,該方法就表示向上取整,Math.ceil(11.3)的結果為12,Math.ceil(- 11.6)的結果為-11;
floor的英文是地板,該方法就表示向下取整,Math.floor(11.6)的結果是11,Math.floor(-11.4)的結果- 12;
最難掌握的是round方法,他表示“四捨五入”,演算法為Math.floor(x 0.5),即將原來的數字加上0.5後再向下取整,所以,Math. round(11.5)的結果是12,Math.round(-11.5)的結果-11.
Math.round( )符合這樣的規律:小數點後大於5全部加,等於5正數加,小於5全不加。
13.MVC分別指的是什麼?
M - model 模型層,通常我們寫的類別放在模型層
V - View 是視圖層,一般就說jsp頁面
C - control 控制層,包括action,service,dao,處理相關業務邏輯
14.類別與物件的區別?
類別是對某一類事物的描述,是抽象的、概念上的定義;而物件是實際存在的屬該類事物的具體的個體,因而也稱是實例。
15.Final的用法?
a.將一個類別宣告為最終類別即非繼承類,表示它不能其他類別所繼承。
b.最終修飾符。指定此變數的值不能改變。
c.最終修飾符。指定該方法不能被重載。
Abstact的用法
a.將一個類別宣告為抽象類,沒有實現方法,需要子類別提供方法的實現,所以不能建立該類別的實例。
b.抽象修飾符。指定方法只宣告方法頭,而沒有方法體,抽象方法需在子類別中實現。
Static的用法
a.靜態修飾符。指定該變數被所有物件共用,即所有的實例都可使用該變數。
b.最終修飾符。指定不需要實例化一個物件就可以呼叫的方法。
16.成員變數和局部變數的差異
類別中定義的變數是成員變量,而方法中定義的變數是局部變數。
區別:
a.從語法形式來看,成員變數是屬於類別的,而局部變數是在方法中定義的變數或是方法的參數;成員變數可以被public、private、static等修飾符修飾,而局部變數則不能被存取控制修飾符及static修飾;成員變數和局部變數都可以被final所修飾。
b.從變數在記憶體中的儲存方式來看,成員變數是物件的一部分,而物件是存在於堆疊記憶體的,而局部變數是存在於堆疊記憶體的。
c.從變數在記憶體中的生存時間上看,成員變數是物件的一部分,它隨著物件的創建而存在,而局部變數隨著方法的呼叫而產生,隨著方法調用的結果而自動消失。
d.成員變數如果沒有被賦初值,則會自動以類型的預設值賦值(有一種情況例外,被final修飾但沒有被static修飾的成員變數必須明確地賦值);而局部變數則不會自動賦值,必須明確賦值後才能使用。
以上是java實習生面試題(含答案)的詳細內容。更多資訊請關注PHP中文網其他相關文章!