獻芹奏曝-Python面試題-演算法-陣列篇
上一篇:獻芹奏曝-Python面試題
開篇的話:本文目的是收集和歸納力扣上的演算法題,希望用python語言,竭我所能做到思路最清奇、程式碼最簡潔、方法最廣泛、效能最高效,瞭解常見題目,找到最利於記憶的答案,更加從容的應對面試。希望廣思集益,共同進步。
-
陣列篇
-
簡述解釋型和編譯型程式語言(難度係數✯)
簡述解釋型和編譯型程式語言屬於概念型題目,多是對一些概念的考查。可參考部落格C#與Python對比
-
Python直譯器的種類和特點(難度係數✯)
答案屬於理解記憶型題目
-
簡述賦值深拷貝與淺拷貝(難度係數✯✯)
答案答案簡潔,如果深入瞭解。可參考部落格淺拷貝與深拷貝
-
運算子
- 以點帶面:相關知識可參考部落格
求出下列邏輯語句的值(難度係數✯)
0 or 0 and 3 or 7 or 9 and 6 答案主要考點:1:邏輯運算子符號之間的優先順序 2:邏輯符號運算特性。
知識點/技巧:1:邏輯符號之間的優先順序(括號>not>and>or) 2:特性可簡單歸為:and 一假則假返前假 ,全真返後真。or 一真則真返前真。
求i =10;i += i-i-1的值(難度係數✯)
View Code主要考點:1:運算子之間的優先順序 2:賦值運算子+=的特性
用一行程式碼實現 a=“hello”;b=12中a,b交換(難度係數✯)
答案主要考點:賦值運算子的靈活拓展
求出下列邏輯語句的值(難度係數✯✯)
weird_board = [['_'] * 3] * 3
weird_board[1][2] = 'X'
答案主要考點:1:外面的列表其實包含 3 個指向同一個列表的引用。
知識點/技巧:1:理解可變物件的引用和傳遞方式。
傳送到
資料型別
- 以點帶面:相關知識可參考部落格資料型別
-
99(10進位制)以八進位制表示是多少(難度係數✯✯)
答案主要考點:1:進位制轉換。
知識點/技巧:1:可用 int(99,base=8)快速轉換。
-
判斷一個字串是否為迴文。如“霧鎖山頭山鎖霧”(難度係數✯)
答案主要考點:1:字串中常用方法的靈活運用。
知識點/技巧:1:切片方法。
-
把1d2c3b4a轉換成abcd?(難度係數✯)
答案主要考點:1:字串中常用方法的靈活運用。
知識點/技巧:1:切片方法。
-
eName="aaron"; cName="逍遙小天狼";
print(eName.join(cName))的輸出結果是?(難度係數✯)
答案主要考點:1:字串中常用方法的join方法。
知識點/技巧:1:x.join(y):是把前面的插入到後面。
-
dic = {"ab":"123"}
s = dic.fromkeys("bc", "456" ) 其中s的結果是?(難度係數✯✯)
答案主要考點:1:字典中常用方法的fromkeys方法。
知識點/技巧:1:fromkeys方法是字典的靜態方法 。產生新的字典,不會對原來的字典產生影響,以序列seq中元素做字典的鍵,value為字典所有鍵對應的初始值
-
a="asdfqwedd";b="".join([x for x in a]); set(a)==set(b) 的值是多少?(難度係數✯)
答案主要考點:1:列表表示式 2:set去重
知識點/技巧:先判斷大方向其結果無非是True/False。然後在進行分析
- 統計一個字串中,每個單詞出現的頻率(難度係數✯)
答案
主要考點:1:字典屬性 2:字串的分割。3:其他相關模組的瞭解。
知識點/技巧:細節1:首先,引入re,進行多字串分割。細節2:其次,注意大小寫統一。
- 對[1,5,32,6,7,6,5,9,100]去重,並保持原來的順序(難度係數✯)
答案
主要考點:1:列表去重 2:列表排序。
知識點/技巧:細節1:首先,引入re,進行多字串分割。細節2:其次,注意大小寫統一。
- aaronList=[1,-2,-5,4,-3,5,-9,3,];sorted(aaronList,key=lambda x:(x<0,abs(x)) ) 的結果是多少(難度係數✯✯)
答案
主要考點:1:列表排序 2:元組排序。3:abs()函式。
知識點/技巧:注意執行的順序。
迴圈
-
輸入一個數判斷其是否為質數(難度係數✯)
判斷一個數是否是質數主要考點:1:迴圈 2:質數定義 3:輸入輸出互動。
知識點/技巧:1:除了1和它本身外,不能被其他自然數(質數)整除(如:2, 3, 5, 7等)2:for 迴圈可結合range函式使用
-
9*9乘法表(難度係數✯)
答案主要考點:1:迴圈
-
百錢百雞(難度係數✯)
答案主要考點:1:迴圈
-
氣泡排序(難度係數✯)
答案主要考點:1:迴圈 2:氣泡排序。
知識點/技巧:1:假設第一個元素是最小值,2:如果發現後面的元素是更小的與之交換位置。3:假設第二個元素是最小值,迴圈往復
- 觀察規律,1,1,2,3,5,8,13,用迴圈和遞迴求出第20000項數字的長度。
答案
主要考點:1:斐波那切數列。2:遞迴深度。
知識點/技巧:1:牢記預設情況下的遞迴深度
函式
- 相關知識可參考部落格變數與函式
-
一行程式碼計算出1+2+3......+100的和(難度係數✯)
答案主要考點:1:列表推到式 2:內建函式。
知識點/技巧:1:先生成可迭代物件。2:再對可迭代物件進行求和迭代
-
請寫出此程式碼輸出結果(難度係數✯)
請寫出此程式碼輸出結果 答案主要考點:1:變數作用域 2:nonlocal 用法。
知識點/技巧:1:變數使用遵守就近原則。2:nonlocal 表⽰在區域性作⽤域中, 調⽤⽗級名稱空間中的變數
-
請寫出此程式碼輸出結果(難度係數✯✯)
請寫出此程式碼輸出結果 答案主要考點:1:函式預設引數。
知識點/技巧:1:預設值只會執行一次。
-
利用多種方法實現二分查詢66(難度係數✯✯)
答案主要考點:1:程式設計的思維
知識點/技巧:1:可使用遞迴。
- 請寫出此程式碼輸出結果(難度係數✯✯)
請寫出此程式碼輸出結果
答案
主要考點:1:Python函式引數的傳遞方式
知識點/技巧:1:Python中函式引數的傳遞是傳遞的變數的值,即就是變數所指向的物件的地址
- 待續
閉包、迭代器、生成器、裝飾器
- 相關知識可參考部落格閉包、迭代器、生成器、裝飾器
-
請寫出此程式碼輸出結果(難度係數✯✯✯)
請寫出此程式碼輸出結果 答案主要考點:1:函式。2:閉包。
知識點/技巧:1:理解python直譯器執行原理,通過畫圖分析。鑑於篇幅問題,詳細說明請參考
-
請寫出此程式碼輸出結果(難度係數✯✯✯)
請寫出此程式碼輸出結果 答案主要考點:1:生成器的惰性機制。
知識點/技巧:for n in [2,10]: 其中該列表的個數相當與迴圈的次數,列表中最後一個元素代表累加的步長。
for r_i in range(1,4) 的範圍表示最終list中有多少個元素,其中起始值代表基數。
舉例:如果for n in [2,10] 變成 [100,200,300,5] 表示迴圈以5為基數,迴圈4次
for r_i in range(1,4)變成 (10,20) 表示最終結果為9個元素,
一句話:[10,11....19],以5為步長,連加4次.結果為:[30,31....39]
-
請實現一個裝飾器, 計算函式的執行時間(難度係數✯✯)
答案主要考點:1:裝飾器結構。
知識點/技巧:裝飾器=高階函式(傳入引數或輸出結果是一個函式)+函式巢狀(函式中定義函式)+閉包
-
請實現一個裝飾器,完成以下功能(難度係數✯✯✯)
題目詳情 答案主要考點:1:裝飾器結構。2:裝飾器傳參
知識點/技巧: 裝飾器相關內容,可參考 https://www.bilibili.com/video/BV18i4y1u7Cr?p=23
- 生成一個[[0, 0, 0], [0, 1, 2], [0, 2, 4], [0, 3, 6]]的列表(難度係數✯)
答案
主要考點:1:列表推導式。
知識點/技巧:列表推到式相當於for迴圈,前面相當於迴圈結果,可以巢狀
面向物件
- 相關知識可參考部落格面向物件
-
請寫出此程式碼輸出結果(難度係數✯✯)
請寫出此程式碼輸出結果 答案主要考點:1:面向物件。2:繼承順序。
知識點/技巧:1:多繼承中新式類的繼承順序是廣度優先
-
請寫出一個單例模式(難度係數✯✯)
答案主要考點:1:單例模式。2:內建方法__new__。3:類初始化的原理
知識點/技巧:1:__new__ 方法。2:先定義屬性,new的時候判斷該屬性是否有值,如果有值返回。沒有值再new值單例
-
員工去重
員工去重 答案主要考點:1:set去重原理。2:內建方法__hash__、__eq__
知識點/技巧:去重原理:set() 函式中會先呼叫物件的 __hash__() 方法,獲取 hash 結果;如果 hash 結果相同,進一步呼叫函式 __eq__()判斷二者的值是否相等;
程式設計
- 手寫一個類似字典行為的類(難度係數✯✯✯)
題目詳情
答案
主要考點:1:思維邏輯。2:內建方法__getitem__、__setitem__
知識點/技巧: 答案不唯一,這裡採用的是具名元組手寫一個類似字典行為的類
- 類似數獨的填字遊戲(難度係數✯✯✯✯)
題目詳情
答案
主要考點:1:思維邏輯。2:numpy 庫
知識點/技巧: 答案不唯一,這裡採用的是通過numpy來實現
演算法
-
陣列相關知識可參考部落格面向物件
未完