1. 程式人生 > 其它 >獻芹奏曝-Python面試題-演算法-陣列篇

獻芹奏曝-Python面試題-演算法-陣列篇

上一篇:獻芹奏曝-Python面試題

開篇的話:本文目的是收集和歸納力扣上的演算法題,希望用python語言,竭我所能做到思路最清奇、程式碼最簡潔、方法最廣泛、效能最高效,瞭解常見題目,找到最利於記憶的答案,更加從容的應對面試。希望廣思集益,共同進步。

  1. 陣列篇

    1. 簡述解釋型和編譯型程式語言(難度係數✯)

      簡述解釋型和編譯型程式語言

      屬於概念型題目,多是對一些概念的考查。可參考部落格C#與Python對比

    2. Python直譯器的種類和特點(難度係數✯)

      答案

      屬於理解記憶型題目

    3. 簡述賦值深拷貝與淺拷貝(難度係數✯✯)

      答案

      答案簡潔,如果深入瞭解。可參考部落格淺拷貝與深拷貝

運算子

  1. 以點帶面:相關知識可參考部落格

求出下列邏輯語句的值(難度係數✯)

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:理解可變物件的引用和傳遞方式

傳送到 

資料型別

  1. 以點帶面:相關知識可參考部落格資料型別
  2. 99(10進位制)以八進位制表示是多少(難度係數✯✯)

    答案

    主要考點:1:進位制轉換。

    知識點/技巧:1:可用 int(99,base=8)快速轉換。

  3. 判斷一個字串是否為迴文。如“霧鎖山頭山鎖霧”(難度係數✯)

    答案

    主要考點:1:字串中常用方法的靈活運用。

    知識點/技巧:1:切片方法。

  4. 把1d2c3b4a轉換成abcd?(難度係數✯)

    答案

    主要考點:1:字串中常用方法的靈活運用。

    知識點/技巧:1:切片方法。

  5. eName="aaron";   cName="逍遙小天狼";

    print(eName.join(cName))的輸出結果是?(難度係數✯)

    答案

    主要考點:1:字串中常用方法的join方法。

    知識點/技巧:1:x.join(y):是把前面的插入到後面。

  6. dic = {"ab":"123"}

    s = dic.fromkeys("bc", "456" ) 其中s的結果是?(難度係數✯✯)

    答案

    主要考點:1:字典中常用方法的fromkeys方法。

    知識點/技巧:1:fromkeys方法是字典的靜態方法 。產生新的字典,不會對原來的字典產生影響,以序列seq中元素做字典的鍵,value為字典所有鍵對應的初始值

  7. a="asdfqwedd";b="".join([x for x in a]); set(a)==set(b) 的值是多少?(難度係數✯)

    答案

    主要考點:1:列表表示式 2:set去重

    知識點/技巧:先判斷大方向其結果無非是True/False。然後在進行分析

  8. 統計一個字串中,每個單詞出現的頻率(難度係數✯) 答案

    主要考點:1:字典屬性 2:字串的分割。3:其他相關模組的瞭解。

    知識點/技巧:細節1:首先,引入re,進行多字串分割。細節2:其次,注意大小寫統一。

  9. 對[1,5,32,6,7,6,5,9,100]去重,並保持原來的順序(難度係數✯) 答案

    主要考點:1:列表去重 2:列表排序。

    知識點/技巧:細節1:首先,引入re,進行多字串分割。細節2:其次,注意大小寫統一。

  10. aaronList=[1,-2,-5,4,-3,5,-9,3,];sorted(aaronList,key=lambda x:(x<0,abs(x)) ) 的結果是多少(難度係數答案

    主要考點:1:列表排序 2:元組排序。3:abs()函式。

    知識點/技巧:注意執行的順序。

迴圈 

  1. 輸入一個數判斷其是否為質數(難度係數✯)

    判斷一個數是否是質數

    主要考點:1:迴圈 2:質數定義 3:輸入輸出互動。

    知識點/技巧:1:除了1和它本身外,不能被其他自然數(質數)整除(如:2, 3, 5, 7等)2:for 迴圈可結合range函式使用

  2. 9*9乘法表(難度係數✯)

    答案

    主要考點:1:迴圈

  3. 百錢百雞(難度係數✯)

    答案

    主要考點:1:迴圈

  4. 氣泡排序(難度係數✯)

    答案

    主要考點:1:迴圈 2:氣泡排序。

    知識點/技巧:1:假設第一個元素是最小值,2:如果發現後面的元素是更小的與之交換位置。3:假設第二個元素是最小值,迴圈往復

  5. 觀察規律,1,1,2,3,5,8,13,用迴圈和遞迴求出第20000項數字的長度。 答案

    主要考點:1:斐波那切數列。2:遞迴深度。

    知識點/技巧:1:牢記預設情況下的遞迴深度

函式

  1. 相關知識可參考部落格變數與函式
  2. 一行程式碼計算出1+2+3......+100的和(難度係數✯)

    答案

    主要考點:1:列表推到式 2:內建函式。

    知識點/技巧:1:先生成可迭代物件。2:再對可迭代物件進行求和迭代

  3. 請寫出此程式碼輸出結果(難度係數✯)

    請寫出此程式碼輸出結果 答案

    主要考點:1:變數作用域 2:nonlocal 用法。

    知識點/技巧:1:變數使用遵守就近原則。2:nonlocal 表⽰在區域性作⽤域中, 調⽤⽗級名稱空間中的變數

  4. 請寫出此程式碼輸出結果(難度係數✯✯)

    請寫出此程式碼輸出結果 答案

    主要考點:1:函式預設引數。

    知識點/技巧:1:預設值只會執行一次。

  5. 利用多種方法實現二分查詢66(難度係數✯✯)

    答案

    主要考點:1:程式設計的思維

    知識點/技巧:1:可使用遞迴。

  6. 請寫出此程式碼輸出結果(難度係數✯✯) 請寫出此程式碼輸出結果 答案

    主要考點:1:Python函式引數的傳遞方式

    知識點/技巧:1:Python中函式引數的傳遞是傳遞的變數的值,即就是變數所指向的物件的地址

  7. 待續

閉包、迭代器、生成器、裝飾器

  1. 相關知識可參考部落格閉包、迭代器、生成器、裝飾器
  2. 請寫出此程式碼輸出結果(難度係數✯✯✯)

    請寫出此程式碼輸出結果 答案

    主要考點:1:函式。2:閉包。

    知識點/技巧:1:理解python直譯器執行原理,通過畫圖分析。鑑於篇幅問題,詳細說明請參考

  3. 請寫出此程式碼輸出結果(難度係數✯✯✯)

    請寫出此程式碼輸出結果 答案

    主要考點: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]

  4. 請實現一個裝飾器, 計算函式的執行時間(難度係數✯✯)

    答案

    主要考點:1:裝飾器結構。

    知識點/技巧:裝飾器=高階函式(傳入引數或輸出結果是一個函式)+函式巢狀(函式中定義函式)+閉包

  5. 請實現一個裝飾器,完成以下功能(難度係數✯

    題目詳情 答案

    主要考點:1:裝飾器結構。2:裝飾器傳參

    知識點/技巧: 裝飾器相關內容,可參考 https://www.bilibili.com/video/BV18i4y1u7Cr?p=23 

  6. 生成一個[[0, 0, 0], [0, 1, 2], [0, 2, 4], [0, 3, 6]]的列表(難度係數✯) 答案

    主要考點:1:列表推導式。

    知識點/技巧:列表推到式相當於for迴圈,前面相當於迴圈結果,可以巢狀

面向物件

  1. 相關知識可參考部落格面向物件
  2. 請寫出此程式碼輸出結果(難度係數✯✯)

    請寫出此程式碼輸出結果 答案

    主要考點:1:面向物件。2:繼承順序。

    知識點/技巧:1:多繼承中新式類的繼承順序是廣度優先

  3. 請寫出一個單例模式(難度係數✯✯)

    答案

    主要考點:1:單例模式。2:內建方法__new__。3:類初始化的原理

    知識點/技巧:1:__new__ 方法。2:先定義屬性,new的時候判斷該屬性是否有值,如果有值返回。沒有值再new值單例

  4. 員工去重

    員工去重 答案

    主要考點:1:set去重原理。2:內建方法__hash__、__eq__

    知識點/技巧:去重原理:set() 函式中會先呼叫物件的 __hash__() 方法,獲取 hash 結果;如果 hash 結果相同,進一步呼叫函式 __eq__()判斷二者的值是否相等;

程式設計

  1. 手寫一個類似字典行為的類(難度係數✯ 題目詳情 答案

    主要考點:1:思維邏輯。2:內建方法__getitem__、__setitem__

    知識點/技巧: 答案不唯一,這裡採用的是具名元組手寫一個類似字典行為的類

  2. 類似數獨的填字遊戲(難度係數✯ 題目詳情 答案

    主要考點:1:思維邏輯。2:numpy 庫

    知識點/技巧: 答案不唯一,這裡採用的是通過numpy來實現

演算法 

  1. 陣列相關知識可參考部落格面向物件

未完