python面試時常考的資料結構和演算法有哪些

時間 2021-05-29 23:53:21

1樓:

1 給乙個陣列,有100個數,數字,是0到50的

找出,出現次數,前3的數字,和他們出現次數

2 給乙個陣列,有100個數,數字,是-10到10的

找出,從乙個索引下標,到另外乙個索引下標之間,元素合的最大值,並且說出索引位置

3 遞迴方法寫斐波那契數列,要求,速度,越快越好,所求數量長度,從100到100W,隨機值

4 回環列印數字

5 手動實現內建方法eval,輸入乙個數字計算公式,實現計算

難度逐步提公升

1是只加減法利潤 5 +5 +10 -2

2是有加減乘除 5+6*5-2/3

3是帶小括號 5*(6+5)-20 * 3

如果是面的基礎崗位,一般是這些

一般考察的,是python特性和基礎邏輯關係

第一題目

l為原始列表

l=[1,2,3,4,5,....]

data=( (x,l.count(x)) for x in set(l) )

sorted(data,key=lambda x:x[1],reverse=True)[:3]

先形成乙個陣列,前面是去重的元素,後面是元素出現次數

然後,在根據出現次數排序,取前3位。。。。。。

這個答案,是看python基礎特性的,但並不是最好的解決方法,本身也很多問題

1 演算法複雜度太高

每次用 l.count相當於遍歷一次列表

而本身,可以用一次for迴圈,遍歷一次,就OK的

2 思維不嚴謹

如果前3名,是出現了3次,但其實一共有5個數都出現了3次呢?

上班了,有時間在更新(這些題一般只是做爬蟲和web開發的基礎題,演算法的肯定不考這個。。。。)

2樓:A.Star

面試常考的,當然是排序。

不用list自帶的sort或者sorted, 要求寫一段排序。

一般的程式設計師搞氣泡排序寫出來,就已經很不錯了。

好一點的程式設計師可以手寫快速排序。

寫選擇排序的也有但不多,寫堆排、希爾、基數、計數的基本沒有。

我目前為止聽到的答案裡面,我認為最優秀的是--如果小於8個用插入排序,多於8個但是資料量不是太大,用快速排序。資料量再大,把任務分給子執行緒,每乙個任務用插入優化過的快排,最後用歸併排序合併。

嗯,確實厲害。

有必要學好資料結構和演算法嗎?

一定要學,學得多好因人而異。雖然現在有好多複雜的演算法有各種各樣的庫為你提供解決方案。你可以不需要會寫這些複雜的演算法。但是,如果你不知道這些演算法的基本原理,時空複雜度,你又如何知道該選哪個演算法呢?呼叫了這些函式後,你又如何去估計整個方法的時空複雜度呢? 有一定必要。資料結構和演算法實際上也是技...

前端開發是否有必要知道資料結構和演算法?

說複雜點,資料結構是用來重構系統的,前端沒有複雜到這種程度,而且實際開發中有幾個人合作,這會給交流帶來困難 演算法就寬泛一點,其實就是流程,也就不限於書上那幾種。演算法是跟開銷和效率掛鉤的,實際工作中如果有必要考慮這些,自然會有改進 一切都看實際情況,如果連整個開發流程都不清楚的,談這些還太過遙遠 ...

需不需要選資料結構和演算法的課程?

創業GO 做IT最後的發展瓶頸就是演算法,所以這兩門是很有必要要學習,而且一定要學好。現在很多人做開發,都是基於上層一些簡單的頁面開發,這樣的開發是很容易吃青春飯的。 網路工程是網際網路方向?不過如果你想走機器學習和大資料方向的話,資料結構以及演算法應該說是必修了吧。自學很有侷限性,入門的演算法如 ...