更新時間:2020-03-06 10:58:46 來源:動力節點 瀏覽3741次
數組是最常用的基礎數據結構,它將元素保存在連續的內存中。它也是面試最喜歡的問題之一,在代碼面試中你會經常聽到很多關于數組的問題,例如,數組的反轉、數組的排序或者查找數組中的一個元素。
數組結構的一個關鍵優點是在知道索引的情況能夠以O(1)的復雜度找到一個元素。但是增加或者刪除一個元素是很慢的,因為一旦創建了一個數組,你就不能改變它的大小了。
為了創建一個更長或者更短的數組,你需要創建一個新的數組,然后將所有元素從舊數組中復制到新數組中。
解決數組問題的關鍵是,你要對數組這種數據結構有一個深刻的認識,同時還要了解基本的程序流程如循環、遞歸以及基本的操作符。
下面是一些經常問到和數組相關的面試題,你可以拿來練習:
1、在一個給定的從1到100的整型數組中,如何快速找到缺失的數字?
2、如何找到一個給定的整型數組中的重復數字?
3、在一個未排序的整型數組中,如何找到最大和最小的數字?
4、在一個整型數組中,如何找到一個所有成對的數字,滿足它們的和等于一個給定的數字?
5、如果一個數組包含多個重復元素,如何找到這些重復的數字?
6、用Java實現從一個給定數組中刪除重復元素?
7、如何利用快速排序對一個整型數組進行排序?
8、如何從一個數組中刪除重復元素?
9、用Java實現數組反轉?
10、如何不借助庫實現從數組中刪除重復元素?
鏈表問題
鏈表是另外一個常見的數據結構,對數組結構是一個補充。和數組類似,它也是一個線性的數據結構,以線性方式存儲元素。
不過和數組不同的是,鏈表的元素不是存儲在連續位置中,而是分散在各個內存中的各個位置,通過節點鏈接起來。一個鏈表就是一個包含了下個節點內存地址的節點列表。
基于這種結構,可以很容易實現鏈表中元素的添加和刪除,因為只需要改變節點的指向而無需創建一個新的數組。不過鏈表中的查找是相對困難的,在一個單向鏈表中需要花費O(n)的時間代價來查找一個元素。
鏈表有幾種不同的形式。首先是單向鏈表,在這個結構你只能向一個方向遍歷(向前或者反轉);其次是雙向鏈表,你可以雙向遍歷(向前或者向后);最后是環形鏈表,組成一個環的形式。
要解決鏈表問題,你就必須了解遞歸的相關知識,因為鏈表是一種遞歸的數據結構。如果你從鏈表中去掉一個節點,剩下的數據結構仍然是鏈表,因此,許多鏈表問題有比遍歷更簡單的遞歸解決方案.
下面是一些最常見和流行的鏈表面試問題
1、在一次遍歷中,怎樣發現單個鏈表的中間元素?
2、怎樣驗證給定的鏈表是環形的?怎樣發現這個環的起始節點?
3、怎樣翻轉鏈表?
4、不使用遞歸,怎樣反轉單個鏈表?
5、在未排序鏈表中,怎樣移除重復的節點?
6、怎樣找出單個鏈表的長度?
7、從單個鏈表的結尾處,怎樣找出鏈表的第三個節點?
8、怎樣使用棧計算兩個鏈表的和?
字符串相關問題
與數組和鏈表數據結構一起,字符串是編程工作面試中的另一個熱門話題。我從未參加過沒有問過基于字符串相關問題的編碼面試。
字符串的一個優勢在于,如果你了解數組,你可以很容易地解決基于字符串的問題,因為字符串僅僅是一個字符數組。
因此,在解決基于數組的編程問題中所學到的所有技術也可用于解決字符串編程問題。
以下是編程求職面試中常見的字符串編程問題:
1、如何輸出字符串中的重復字符?
2、如何判斷兩個字符串是否互為回文?
3、如何從字符串中輸出第一個不重復字符?
4、如何使用遞歸實現字符串反轉?
5、如何檢查字符僅包含數字字符?
6、如何在字符串中找到重復字符?
7、如何對給定字符串中的元音及輔音進行計數?
8、如何計算給定字符傳中特定字符出現的次數?
9、如何找到一個字符串的全排列?
10、在不使用任何庫方法的情況下如何反轉給定語句中的單詞?
11、如何判斷兩個字符串是否互為旋轉?
12、如何判斷給定字符串是否是回文?
以上就是動力節點Java培訓機構小編介紹的“數據結構java面試題及答案”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習