自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

適用于軟件工程師編碼面試的十大算法

開發(fā) 前端 算法
您剛剛從大學獲得計算機科學或軟件工程學位,并且正在尋找職業(yè)。您還記得自己喜歡單身漢編寫代碼,并與好友一起做過一些很棒的項目,然后決定要成為一名開發(fā)人員。

 您剛剛從大學獲得計算機科學或軟件工程學位,并且正在尋找職業(yè)。您還記得自己喜歡單身漢編寫代碼,并與好友一起做過一些很棒的項目,然后決定要成為一名開發(fā)人員。

您開始準備工作面試,卻無法弄清楚記住哪些算法對于評分工作很重要。如果您處于這樣的位置,并且足夠快地進行面試,那么本文將幫助您記住求職面試可能需要的所有編碼算法。

軟件工程師的基本工作描述包括設計,增強和實施系統(tǒng)和應用程序。

為此,軟件工程師無需記住許多復雜的算法。相反,要求他們使用工作庫,框架和數(shù)據(jù)庫的組合來創(chuàng)建滿足其軟件需求的工具。

根據(jù)軟件工程領(lǐng)域的專家介紹,了解一些高級搜索算法在優(yōu)化它們時會有所幫助,否則,您更有可能使用內(nèi)置庫。話雖如此,這里列出了一些重要的算法,在進行面試時您應該具有一些基本的知識。

動態(tài)編程

動態(tài)編程是通過消除對遞歸調(diào)用的需求來優(yōu)化隱性函數(shù)的策略。每當我們看到一個遞歸函數(shù),其中某個代碼的某個部分被多次調(diào)用時,可以通過使用動態(tài)編程來大大改進。通過存儲前一個子函數(shù)的結(jié)果,可以消除遞歸性,從而不必多次調(diào)用它們。這樣可以將時間復雜度從指數(shù)時間降低到多項式時間。屬于動態(tài)編程類別的算法示例如下:

二進制搜索

顧名思義,搜索算法用于從稱為數(shù)據(jù)結(jié)構(gòu)的給定集合中搜索元素。二進制搜索在提供排序后的元素數(shù)組和搜索鍵時有效。二進制搜索通過選擇中間元素并將其與搜索關(guān)鍵字進行比較來實現(xiàn),如果該關(guān)鍵字小于中間元素的左側(cè)部分,則以相同的方式進行遍歷。如果現(xiàn)在在右部分上搜索密鑰。二進制搜索的時間復雜度為O(log n),其中n是數(shù)組中元素的數(shù)量。

排序算法

排序算法用于對數(shù)組進行排序,輸入中包含需要排序的數(shù)據(jù)類型。數(shù)據(jù)集可以按升序或降序排序。以下是一些要記住的重要排序算法。

合并排序

合并排序基于分而治之算法的原理進行。它是指將問題分解為較小的部分,并一一解決并最終合并在一起的實踐。合并排序?qū)?shù)組分為兩半,并在兩個半部分上調(diào)用sort函數(shù),對這兩個半部分進行排序,然后使用merge函數(shù)合并在一起。合并排序的時間復雜度為O(n log n)。

快速排序

像合并排序一樣,快速排序也是基于分而治之的算法,它在排序功能方面與合并排序有所不同。Quicksort的工作原理是選擇最后一個元素作為樞軸數(shù)字,并將其放在中間,左側(cè)數(shù)字較小,而右側(cè)數(shù)字較大。左側(cè)和右側(cè)再次使用sort函數(shù)進行調(diào)用,結(jié)果對整個數(shù)組進行了排序??焖倥判虻臅r間復雜度為O(n ^ 2)。

深度優(yōu)先搜索

DFS是一種搜索算法,它從節(jié)點開始搜索過程,一直向下到最左邊分支的最后一個葉子。在到達最左邊的葉子之后,算法開始回溯并遍歷樹的右側(cè),依此類推。此DFS的問題在于,如果存在一個周期,則可以多次訪問某個節(jié)點。DFS的時間復雜度為O(V + E),其中V和E分別表示圖中的頂點和邊數(shù)。

廣度優(yōu)先搜索

BFS是一種與DFS一樣從根開始的搜索算法。但是,它沒有遍歷左側(cè)的所有葉子,而是在同一級別上的節(jié)點附近搜索。遍歷一個級別后,算法將前進到下一個級別,并繼續(xù)遍歷直到找到元素。BFS的時間復雜度與DFS相同,為O(V + E)。

自定義數(shù)據(jù)結(jié)構(gòu)

有時,典型的預定義數(shù)據(jù)結(jié)構(gòu)無法完成任務,您需要更好,更強大的功能。自定義數(shù)據(jù)結(jié)構(gòu)可以是真實或抽象對象,具體取決于其數(shù)據(jù)成員的用途。數(shù)據(jù)成員可以視為屬于指定對象的變量。

哈希表

哈希表是一種數(shù)據(jù)結(jié)構(gòu),用于存儲,訪問和修改時間為O(1)的數(shù)據(jù)。哈希數(shù)據(jù)結(jié)構(gòu)使用哈希函數(shù)將給定值映射到特定鍵。然后,使用此密鑰快速訪問和檢索這些值,哈希的執(zhí)行效率取決于所使用的哈希函數(shù)的類型。

鏈表

通常,數(shù)組的組件或任何鏈接的數(shù)據(jù)結(jié)構(gòu)存儲在連續(xù)的內(nèi)存位置中。這將占用空間,并且某些內(nèi)存塊不可訪問(也就是說,如果內(nèi)存不足)。為了克服這個問題,使用了鏈表數(shù)據(jù)結(jié)構(gòu),其中的數(shù)據(jù)不是連續(xù)存儲的,而是列表中的每個項目都有一個指向下一個元素的存儲位置的指針。第一個元素被稱為頭,最后一個元素被稱為尾。

問問題

軟件工程師應該知道的最重要的事情是詢問客戶。大多數(shù)客戶無法理解他們的觀點,如果開發(fā)人員不提出任何問題,則可能由于溝通不暢而引起問題。這樣,您將能夠理解他們正在努力實現(xiàn)的核心問題,而不僅僅是他們面臨的困難。

結(jié)論

有了這些基本算法的知識,就可以輕松進行面試。請記住,軟件工程師通常不依靠這些算法來完成工作。取而代之的是,它們被用來測試個人對他是否了解代碼工作的理解。如此說來,祝您下次面試順利。

 

責任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2021-02-14 00:26:44

LinuxIT開發(fā)

2022-05-17 08:00:00

人工智能社交媒體工具

2020-11-05 09:39:32

Java技術(shù)開發(fā)

2023-02-06 10:24:26

Linux命令行游戲

2020-08-03 10:20:03

應用程序鎖數(shù)據(jù)安全Android

2009-06-29 10:58:08

軟件工程師求職者

2017-04-18 09:46:31

機器學習工程師算法

2017-11-09 14:12:44

大數(shù)據(jù)軟件工程師算法工程師

2016-02-18 10:18:34

Java工程師面試考綱

2009-11-04 10:57:35

2020-09-17 16:11:04

軟件開發(fā) 技術(shù)

2009-07-16 13:28:14

2021-04-30 08:00:00

數(shù)據(jù)工程師開發(fā)工具

2022-07-29 09:12:44

軟件硬件開發(fā)

2022-01-16 07:12:30

軟件工程師吵架開發(fā)

2017-05-05 10:45:45

大數(shù)據(jù)動向

2021-11-04 10:42:43

汽車軟件技術(shù)

2013-09-03 09:30:44

軟件工程師軟件工程師頭銜

2022-09-16 08:00:00

軟件工程師求職薪酬

2013-09-18 14:38:06

面試
點贊
收藏

51CTO技術(shù)棧公眾號