一次真實python web面試經歷

2021-10-07 01:47:46 字數 1930 閱讀 8476

首先我挺喜歡這家公司的面試風格的,也是比較務實的吧。無奈自己的心理因素和技術水平都不好,導致面試失敗。

一上來就是程式設計題三連。

**1、**大概意思就是:

倆列表a b,如果a中的元素在b中,那麼就儲存此元素在a中的索引值,最後統一輸出所有索引值。

要求:時間複雜度小於o(n)

這個我當時想到的是迴圈遍歷a,然後判斷是否i in b,但是這個時間複雜度是o(n2),gg。最後面試官提醒了我一下hashmap,瞬間捶胸頓足……。最後自己想了一下,可以將b先轉成字典,然後再使用in。

a = [5,3,1,5,4]

b = [5,3]

d = {}

for i in b:

d[i] = 0

res =

l = len(a)

for i in range(l):

if a[i] in d:

print(res)

**2、**如圖,輸入為這樣,輸出為那樣,寫吧……

輸入幾組資料,pid為-1的代表根節點。如果資料為非根節點,那麼就要搜尋此節點直至找到根節點。

3、這個題太經典了。最短路徑和。

要注意是從第一行走到最後一行,而且只能向下或者斜向下走(我當時沒看清就寫,寫成了從左上走到右下……)。我這裡寫的是動態規劃的解法。leetcode上有原題,解法不唯一。

array = [[1,8,5,2],

[4,1,7,3],

[3,6,2,9]]

x = len(array)

y = len(array[0])

dp = [[0 for i in range(y)] for j in range(x)]

# 遍歷順序是每行內的每列。所以遍歷array中第一行只執行到if,dp中第一行就確定了,然後再確定dp第二行。

# 要注意兩個邊界條件

for i in range(x):

for j in range(y):

if i == 0:

dp[i][j] = array[i][j]

elif j == 0:

dp[i][j] = array[i][j] + min(dp[i-1][j], dp[i-1][j+1])

elif j == y-1:

dp[i][j] = array[i][j] + min(dp[i-1][j-1],dp[i-1][j])

else:

dp[i][j] = array[i][j] + min(dp[i-1][j-1],dp[i-1][j],dp[i-1][j+1])

# [[1, 8, 5, 2],

# [5, 2, 9, 5],

# [5, 8, 4, 14]]

print(min(dp[-1]))

# 4

記錄一次面試

怎麼觀察系統中 記憶體 行為 a.通過 proc zoneinfo 檔案,可以看到 free high low min pages 關係 free high 時候 一般不開啟 kswapd 執行緒 high free low 時,開啟 kswapd 執行緒 low free min時,alloc p...

記一次面試

最近面試經常碰到這樣一道題 或者類似 ps.因為我阿姨不會就詳細分析吧。var btns document.getelementsbyclassname btn for let i 0 i btns.length i 這個之前說過,因為面試的時候,說了主要看閉包。所以也沒有多想。function f...

記一次面試

1 給定乙個字串str,怎麼判斷它是否是乙個陣列arr的鍵名?array keys exists str,arr 2 dns協議怎麼工作的?dns是應用層協議 實現ip與網域名稱的對映,將網域名稱轉成對應的ip位址。3 怎樣判斷乙個陣列是否為空?count arr 和empty arr 4 開啟檔案...