您好,登錄后才能下訂單哦!
本篇內容介紹了“Java和Python的算法和數據結構面試問題有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
1.數組編碼面試問題
數組是最基本的數據結構,它將元素存儲在連續的內存位置。這也是采訪者的一個主要話題,你會在任何編碼訪談中聽到很多關于數組的問題,例如反轉數組,排序數組或搜索數組中的元素。
數組數據結構的主要優點是,如果您知道索引,它會提供快速的O(1)搜索,但是從數組中添加和刪除元素的速度很慢,因為一旦創建了數組,就無法更改數組的大小。
要創建更短或更長的數組,您需要創建一個新數組并將所有元素從舊復制到新。
解決基于數組的問題的關鍵是熟悉 數組數據結構以及基本編程結構,如循環,遞歸和基本運算符。
以下是一些流行的基于數組的編碼面試問題供您練習:
如何在給定的1到100的整數數組中找到缺失的數字?(解決方案)
如何在給定的整數數組上找到重復的數字?(解決方案)
如何在未排序的整數數組中找到***和最小的數字?(解決方案)
你如何找到所有對的整數數組,其總和等于給定的數字?(解決方案)
如果數組包含多個重復項,如何在數組中找到重復的數字?(解決方案)
如何從Java中的給定數組中刪除重復項?(解決方案)
如何使用quicksort算法對整數數組進行排序?(解決方案)
如何從陣列中刪除重復項?(解決方案)
你如何在Java中反轉數組?(解決方案)
如何在不使用任何庫的情況下從數組中刪除重復項?(解決方案)
這些問題不僅可以幫助您提高解決問題的能力,還可以提高您對陣列數據結構的了解。
如果您需要基于陣列的更高級的問題,那么您還可以看到編碼面試訓練營:算法+數據結構,算法的訓練營風格課程,專門用于面試準備,以獲得谷歌,微軟,蘋果等科技巨頭的工作,Facebook等。
而且,如果您覺得10個問題還不夠,而且您需要更多練習,那么您還可以查看30個陣列問題列表。
2.鏈接列表編程面試問題
甲鏈表是另一個常見的數據結構,它補充了陣列。與數組類似,它也是線性數據結構,并以線性方式存儲元素。
但是,與數組不同,它不會將它們存儲在連續的位置; 相反,它們分散在內存中,并使用節點相互連接。
鏈表是節點列表,其中每個節點包含存儲的值和下一個節點的地址。
由于這種結構,在鏈表中添加和刪除元素很容易,因為您只需要更改鏈接而不是創建數組,但搜索很困難,并且通常需要花費O(n)時間來查找元素。單鏈表。
此文章提供了在陣列和鏈表數據結構之間的區別的詳細信息。
它還有各種類似鏈表,可以讓你在一個方向上移動(向前或向后); 雙向鏈表,允許您雙向移動(向前和向后); ***,圓形鏈表,形成一個圓圈。
為了解決基于鏈表的問題,良好的遞歸知識很重要,因為鏈表是遞歸數據結構。
如果從鏈接列表中獲取一個節點,則剩余的數據結構仍然是鏈接列表,因此,許多鏈接列表問題具有比迭代解決方案更簡單的遞歸解決方案。
以下是一些最常見和***的鏈接列表面試問題及其解決方案:
如何在一次通過中找到單鏈表的中間元素?(解決方案)
如何檢查給定鏈表是否包含循環?你如何找到循環的起始節點?(解決方案)
你如何扭轉鏈表?(解決方案)
如何在沒有遞歸的情況下反轉單鏈表?(解決方案)
如何在未排序的鏈表中刪除重復節點?(解決方案)
你如何找到單鏈表的長度?(解決方案)
如何在單鏈表中找到***的第三個節點?(解決方案)
如何使用Stack找到兩個鏈表的總和?(解決方案)
這些問題將幫助您提高解決問題的能力,并提高您對鏈表數據結構的了解。
如果您在解決這些鏈表編碼問題時遇到問題,那么我建議您通過數據結構和算法:深入使用Java課程來刷新您的數據結構和算法技能。
您還可以查看30個鏈接列表面試問題列表, 了解更多練習題。
3.字符串編碼面試問題
與數組和鏈表數據結構一起,字符串是編程工作訪談的另一個熱門話題。我從未參加過編碼面試,其中沒有提出基于字符串的問題。
字符串的一個好處是,如果你知道數組,你可以很容易地解決基于字符串的問題,因為字符串只是一個字符數組。
因此,通過求解基于數組的編碼問題所學到的所有技術也可用于解決字符串編程問題。
以下是編程求職面試中常見的字符串編碼問題列表:
如何從字符串中打印重復的字符?(解決方案)
你如何檢查兩個字符串是否是彼此的字謎?(解決方案)
如何從字符串中打印***個不重復的字符?(解決方案)
如何使用遞歸來反轉給定的字符串?(解決方案)
如何檢查字符串是否只包含數字?(解決方案)
如何在字符串中找到重復的字符?(解決方案)
你如何計算給定字符串中的元音和輔音?(解決方案)
如何計算字符串中給定字符的出現次數?(解決方案)
你如何找到字符串的所有排列?(解決方案)
如何在不使用任何庫方法的情況下反轉給定句子中的單詞?(解決方案)
你如何檢查兩個字符串是否相互旋轉?(解決方案)
你如何檢查給定的字符串是否是回文?(解決方案)
這些問題有助于提高您對字符串作為數據結構的了解。如果您可以在沒有任何幫助的情況下解決所有這些字符串問題,那么您的狀態良好
對于更高級的問題,我建議你解決Steven Skiena在算法設計手冊中給出的問題,這是一本有最棘手的算法問題的書。
如果您需要更多練習,這里是另一個20個字符串編碼問題的列表 。
4.二叉樹編碼面試問題
到目前為止,我們只研究了線性數據結構,但現實世界中的所有信息都無法以線性方式表示,而這正是樹數據結構所幫助的地方。
樹數據結構是一種數據結構,允許您以分層方式存儲數據。根據您存儲數據的方式,有不同類型的樹,例如二叉樹,其中每個節點最多具有兩個子節點。
除了它的近親 二叉搜索樹,它也是***的樹數據結構之一。因此,您會發現很多基于它們的問題,例如如何遍歷它們,計算節點,查找深度,以及檢查它們是否平衡。
解決二叉樹問題的一個關鍵點是對理論的強烈了解,例如二叉樹的大小或深度,葉子是什么,節點是什么,以及對流行的遍歷算法的理解,例如前,后和有序遍歷。
以下是軟件工程師或開發人員訪談中流行的基于二叉樹的編碼問題列表:
如何實現二叉搜索樹?(解決方案)
如何在給定的二叉樹中執行前序遍歷?(解決方案)
如何在沒有遞歸的情況下按預先遍歷給定的二叉樹?(解決方案)
如何在給定的二叉樹中執行有序遍歷?(解決方案)
如何在沒有遞歸的情況下使用inorder遍歷打印給定二叉樹的所有節點?(解決方案)
你如何實現一個后序遍歷算法?(解決方案)
如何在沒有遞歸的情況下遍歷后序遍歷中的二叉樹?(解決方案)
如何打印二叉搜索樹的所有葉子?(解決方案)
如何計算給定二叉樹中的多個葉節點?(解決方案)
如何在給定數組中執行二進制搜索?(解決方案)
如果你覺得你對二叉樹編碼的理解不充分并且你不能自己解決這些問題,我建議你回過頭來選擇一個好的數據結構和算法課程,如從0到1:Java中的數據結構和算法。
如果您需要更多建議,請參閱我的有用數據結構算法書籍和課程列表。
5.雜項編碼面試問題
除了基于數據結構的問題之外,大多數編程工作訪談還會詢問算法,設計,位操作和基于邏輯的一般問題,我將在本節中對其進行描述。
練習這些概念很重要,因為有時在實際的面試中解決這些概念很棘手。
之前練習它們不僅讓你熟悉它們,而且讓你更有信心向面試官解釋解決方案。
如何實現冒泡排序算法?(解決方案)
如何實現迭代快速排序算法?(解決方案)
你如何實現插入排序算法?(解決方案)
如何實現合并排序算法?(解決方案)
如何實現桶排序算法?(解決方案)
你如何實現計數排序算法?(解決方案)
如何實現基數排序算法?(解決方案)
如何在不使用第三個變量的情況下交換兩個數字?(解決方案)
如何檢查兩個矩形是否相互重疊?(解決方案)
你如何設計自動售貨機?(解決方案)
如果你需要更多這樣的編碼問題,你可以從像Cracking The Code Interview這樣的書籍中獲取幫助,由Gayle Laakmann McDowell提供189+編程問題和解決方案。一本好書,可以在短時間內編寫求職面試。
順便說一下,你在實踐中解決的問題越多,你的準備就越好。因此,如果您認為50還不夠而且您需要更多,那么請查看這些額外的50個編程問題,以便進行電話訪談以及這些書籍和課程,以便進行更全面的準備。
現在,您已準備好進行編碼面試
這些是一些最常見的問題,可以幫助您在面試中做得很好。
我也在我的博客上分享了很多這些問題,所以如果你真的很感興趣,你可以隨時去那里搜索它們。
這些常見的編碼,數據結構和算法問題是您在任何級別的編程工作中成功訪問任何公司(大或小)時需要了解的問題。
如果您正在尋找2018年的編程或軟件開發工作,您可以使用此編碼問題列表開始準備。
此列表提供了準備的好主題,也有助于評估您的準備工作,以找出您的優勢和劣勢領域。
熟悉數據結構和算法對于成功編寫訪談非常重要,而且您應該將注意力集中在大部分時間。
“Java和Python的算法和數據結構面試問題有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。