更新時間:2020-10-14 17:22:29 來源:動力節(jié)點 瀏覽3993次
數(shù)組是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)以及算法的基礎(chǔ),盡管java數(shù)組看起來非常的簡單、基礎(chǔ),但是卻是經(jīng)常出現(xiàn)在java面試題中的,所以java數(shù)組面試題是需要在面試前好好準備的,下面整理了面試中出現(xiàn)頻率較高的java數(shù)組面試題,希望對大家能夠有所幫助。
答:數(shù)組其實就是一個存儲數(shù)據(jù)長度固定的容器,它可以保證多個數(shù)據(jù)的數(shù)據(jù)類型要一致。有三種的定義方式:
int[] arr = new int[6];這是定義存儲6個整數(shù)的數(shù)據(jù)容器。
int[] arr = new int[]{1,2,3,4,5};這是定義存儲1-5整數(shù)的數(shù)組容器。
int[] arr = {1,2,3,4,5};定義了1-5的整數(shù)的數(shù)組容器,開實際中較為常用的一種方式。
答:下標從0開始;線性表數(shù)據(jù)結(jié)構(gòu);一組連續(xù)的內(nèi)存空間來存儲一組具有相同類型的數(shù)據(jù)。
答:(1)當聲明數(shù)組類型變量時,為其分配了32位引用空間,由于未賦值,因此不指向任何對象;
(2)當創(chuàng)建了一個數(shù)組對象(也就是new出來的)并將其地址賦值給了變量,其中創(chuàng)建出來的那幾個數(shù)組元素相當于引用類型變量,因此各自占用32位的引用空間并按其默認初始化規(guī)則被賦值為null;
(3)程序繼續(xù)運行,當創(chuàng)建新的對象并將其地址賦值給各數(shù)組元素,此時堆內(nèi)存就會有值了。
答:我們可以通過索引,也就是每一個存儲到數(shù)組的元素,都會自動地擁有一個編號,編號是從0開始,這個自動編號稱為數(shù)組索引(index),格式是數(shù)組名[索引]。數(shù)組的長度是固定的,可以通過數(shù)組名.length來獲取數(shù)組的長度。
答:從數(shù)組所有元素中找出最大值,實現(xiàn)的思路是這樣的,首先定義一個變量用于保存數(shù)組0索引上的元素。
然后遍歷數(shù)組,獲取數(shù)組的所有元素后就將元素的保存數(shù)組0索引上的值變量進行比較。
如果數(shù)組元素的值大于了變量的值,變量記錄住新的值。
數(shù)組循環(huán)遍歷結(jié)束,變量保存的就是數(shù)組中最大的值了。
答:數(shù)組遍歷就是數(shù)組中的每一個元素分別取出來,遍歷可以說是數(shù)組操作的基石,常用的遍歷方式就是使用for循環(huán)如下圖:
答:將多次刪除操作中集中在一起執(zhí)行,可以先記錄已經(jīng)刪除的數(shù)據(jù),但是不進行數(shù)據(jù)遷移,而僅僅是記錄,當發(fā)現(xiàn)沒有更多空間存儲時,再執(zhí)行真正的刪除操作,這樣減少數(shù)據(jù)搬移次數(shù)節(jié)省耗時。
這也是跟 JVM 標記清除垃圾回收算法的核心思想相似。標記-整理垃圾回收算法,在垃圾收集時此算法分為“標記”、“清除”兩個階段,先標記出需要回收的對象,再統(tǒng)一清除標記的對象。清除之后會產(chǎn)生大量不連續(xù)的內(nèi)存碎片。在標記完成之后讓所有存活的對象都向一端移動,然后直接清理掉邊界以外的內(nèi)存。
答:數(shù)組先指定容器大小,容器ArrayList可以動態(tài)擴容,并且封裝了好多方法,一旦超過存儲容量,擴容時比較耗時,因為涉及內(nèi)存申請和數(shù)據(jù)復(fù)制搬移到擴容后的數(shù)組。如果已知數(shù)據(jù)大小,且涉及的數(shù)據(jù)操作比較簡單,可以用數(shù)組。比如已知一萬條數(shù)據(jù)要存入 ArrayList,我們就可以事先指定容器大小。
以上就是這篇文章為朋友們整理的java數(shù)組面試題,希望大家可以對照著給出的參考答案好好學(xué)習(xí)數(shù)組的知識。數(shù)組是最基礎(chǔ)的一種數(shù)據(jù)結(jié)構(gòu),java零基礎(chǔ)的新手小白想要學(xué)好java,在學(xué)習(xí)的初期就要掌握java數(shù)組的知識,這樣會為后面的學(xué)習(xí)打好基礎(chǔ)。
相關(guān)閱讀