數據結構java面試題及答案

2020-12-16 騰訊網

數組是最常用的基礎數據結構,它將元素保存在連續的內存中。它也是面試最喜歡的問題之一,在代碼面試中你會經常聽到很多關於數組的問題,例如,數組的反轉、數組的排序或者查找數組中的一個元素。

數組結構的一個關鍵優點是在知道索引的情況能夠以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面試題及答案」的內容,希望對大家有幫助,關注動力節點,想了解更多Java技術知識或視頻資源留言給小編。

相關焦點

  • Java 程式設計師必須掌握的 8 道數據結構面試題你會幾道?
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫40多年後,這個等式仍被奉為真理。這就是為什麼在面試過程中,需要考察軟體工程師對數據結構的理解。幾乎所有的問題都需要面試者對數據結構有深刻的理解。
  • 阿里P8終於總結出:SpringBoot+Tomcat+Nginx+Netty面試題及答案
    前言相信在此之前大家肯定看到過很多的面試題,但是呢多半是木有答案的。今天給大家分享的是阿里大佬整理總結出的SpringBoot+Tomcat+Nginx+Netty面試題及答案,希望大家能夠喜歡!因為內容實在是太多了,只把問題和部分答案給大家展示出來了,裡面還有更加細化的內容,希望大家能夠理解!!第二版: Netty 11道1.Netty是什麼?2.Netty的特點是什麼?
  • Java數據結構與算法之,二分查找算法
    學習過數據結構與算法的同學都知道,在 java 中,常用的查找有四種:二分查找、線性查找、插值查找、斐波那契查找。今天我們來聊一聊其中一種「二分查找算法」。需要Java、大數據、框架、Redis等學習視頻以及電子版,關注並且私信「資料」即可獲得。另,如果覺得這本篇文章寫得不錯,有點東西的話,各位人才記得來個三連【點讚+關注+分享】。
  • JAVA必須掌握的數據結構和算法
    常見的數據結構鍊表LinkedHashSet LinkedList 底層數據結構由鍊表和哈希表組成。數據的添加和刪除都較為方便,就是訪問比較耗費時間。數組ArrayList 訪問數據十分簡單,而添加和刪除數據比較耗工夫堆堆是一種圖的樹形結構,被用於實現「優先隊列",優先隊列是一種數據結構,可以自由添加數據,但取出數據時要從最小值開始按順序取出
  • 2021年金三銀四跳槽必備對標阿里P5的685集java就業班全套視頻
    在隔離的這段時間,小編就給大家準備了金三銀四跳槽必備的685集java就業班教程視頻來學習,希望大家能夠喜歡!!_do-while循環68_流程控制_循環結構_for循環69_流程控制_循環結構_關鍵字break70_流程控制_循環結構_關鍵字continue71_流程控制_循環結構_關鍵字return72_流程控制_循環結構_循環練習173流程控制循環結構循環練習274_流程控制_循環結構_循環嵌套(雙重)_乘法口訣
  • 超全,110+數據挖掘面試題整理(附答案)
    4.根據要求寫出SQL表A結構如下:Member_ID(用戶的ID,字符型)Log_time(用戶訪問頁面時間,日期型(只有一天的數據))URL(訪問的頁面地址,字符型)數據倉庫隨時間的變化不斷增加新的數據內容 B. 捕捉到的新數據會覆蓋原來的快照 C. 數據倉庫隨事件變化不斷刪去舊的數據內容 D. 數據倉庫中包含大量的綜合數據,這些綜合數據會隨著時間的變化不斷地進行重新綜合27.關於基本數據的元數據是指: (D) A. 基本元數據與數據源,數據倉庫,數據集市和應用程式等結構相關的信息; B.
  • 挑戰全網Java最新面試匯總:Redis+ JVM+ Spring+消息中間+微服務
    RocketMq邏輯結構Dubbo服務框架面試題及答案Dubbo 支持哪些協議,每種協議的應用場景,優缺點?Dubbo 超時時間怎樣設置?簡述java內存分配與回收策略以及Minor GC和Major GCMySQL面試題mysql 中 myisam 與 innodb 的區別?
  • 結合JAVA詳解鍊表、棧、隊列等數據結構
    前言其實在學習數據結構之前,我也是從來都沒了解過這門課,但是隨著工作的慢慢深入,之前學習的東西實在是不夠用,並且太皮毛了。太淺,只是懂得一些淺層的,我知道這個東西怎麼用,但是要優化、或者是解析,就不知道該咋弄了。
  • Java實現冒泡排序算法
    1.引子1.1.為什麼要學習數據結構與算法?有人說,數據結構與算法,計算機網絡,與作業系統都一樣,脫離日常開發,除了面試這輩子可能都用不到呀!於是問題來了:為什麼還要學習數據結構與算法呢?>1.2.如何系統化學習數據結構與算法?
  • 2020學習Java必看的3本書籍
    本書的目標是幫助讀者更加有效地使用Java程式語言及其基本類庫:java.lang、java.util和java.io,以及子包,如java.util.concurrent和java.util.function。本書時不時地也會討論其他的類庫。3.
  • 動力節點Java學院2021年Java學習路線圖最新出爐啦
    用於對交互過程中客戶的數據進行存儲,該板塊包括關係型資料庫和非關係型資料庫。重點學習:SQL精講、MySQL、oracle、MySQL索引實現原理及優化、JDBC這一部分學完可以通過SQL語言從資料庫中查詢數據,結合Java項目實現動態站點數據的保存。第三階段:WEB前端
  • 跟我學java編程—Java嵌套if
    嵌套if結構的語法如下:在編寫嵌套if結構時,有時會引發一些疑問,下面是一個例子:按條件語句的語法形式,上面的例子似乎有兩種可能的解釋,第一種理解:外層的if是一個沒有else部分的條件語句,最後的else部分屬於內層的if語句;第二種理解:內層if是一個不帶else部分的條件語句,最後的else屬於外層的if條件語句。
  • 我們到底該如何學習《數據結構與算法》
    在網上開始問各種大佬,統一回復的一句話是,你現在學數據結構了嗎?你數據結構咋學的?現在想想真的是留下啦悔恨的眼淚。既然數據結構與算法重要,到底哪個地方重要呢?可以看出國內外大廠對於算法與數據結構的看重。第二:工作現在的大廠api框架基本上背後的邏輯就是基於算法實現的。其實算法的種類有很多,比如說機器學習、神經網絡算法,還有java中的排序算法,網際網路的商品推薦、股票預測其背後的邏輯都是算法。就算是熟悉的那些框架,背後的邏輯也是數據結構與算法。
  • java和python哪個更好用?
    但是沒有人給出「 java和python哪個更好用?」的明確理由。我們都知道,如今Python正在與幾乎每種程式語言競爭。甚至它還在與世界上最強大的程式語言-Java競爭,Java是創建桌面應用程式的最佳程式語言之一。同時它也用於數據科學領域。因此,這兩種程式語言在各個行業中都在相互競爭。在進行比較之前,讓我們看一下這兩種語言的概述。
  • 跟我學java編程—Java布爾類型
    java語言通過關鍵字boolean來定義布爾類型變量,只有true和false兩個值,分別代表布爾邏輯中的「真」和「假」。Java語言雖然定義了boolean這種數據類型,但是只對它提供了非常有限的支持。在Java虛擬機中沒有任何供boolean值專用的字節碼指令,Java語言表達式所操作的boolean值,在編譯之後都使用Java虛擬機中的int數據類型來代替。
  • Java筆試題50道帶答案
    Java程序文件的擴展名是( b )A. .txtB. .javaC. .classD. .exe3.在控制臺運行一個Java程序,使用的命令正確的是(c)A. java Test.javaB. javac Test.javaC. java TestD. javac Test5.
  • java集合詳解合集
    一旦在數組初始化時指定了這個數組長度,這個數組長度就是不可變的,如果我們需要保存一個可以動態增長的數據(在編譯時無法確定具體的數量),java的集合類就是一個很好的設計方案了。集合類主要負責保存、盛裝其他數據,因此集合類也被稱為容器類。
  • 2020年6月最新BAT一線大廠JAVA崗高頻面試題:阿里+華為+字節跳動
    參考答案:A,B,C2.ConcurrentHashMap原理,JDK1.8都有什麼新特性3.HBase底層數據存儲的結構4.java內存模型分為了幾塊區域?元空間裡有些啥?6.JVM內存模型了解下,是否有過調優經驗(大互聯公司)7.題目:MySQL 的數據如何恢復到任意時間點?參考答案:恢復到任意時間點以定時的做全量備份,以及備份增量的 binlog 日誌為前提。
  • java是什麼文件格式?.java文件怎麼打開?
    java是什麼文件?  Java文件是由Sun Microsystems公司於1995年5月推出的Java程序設計語言和Java平臺的總稱。用Java實現的HotJava瀏覽器(支持Java applet)顯示了Java的魅力:跨平臺、動態的Web、Internet計算。從此,Java被廣泛接受並推動了Web的迅速發展,常用的瀏覽器現在均支持Java applet。
  • Java異常的十大問題總結
    Integer.parseInt(null); // throws java.lang.NumberFormatException: nullDouble.parseDouble(null); // throws java.lang.NullPointerException