Skip to content

Latest commit

 

History

History
318 lines (190 loc) · 6.78 KB

100.Python面試題集.md

File metadata and controls

318 lines (190 loc) · 6.78 KB

Python面試題

  1. 說一說Python中的新式類和舊式類有什麼區別。

    答:

  2. Python中is運算符和==運算符有什麼區別?

    答:請參考《那些年我們踩過的那些坑》

  3. Python中如何動態設置和獲取對象屬性?

    答:setattr(object, name, value)getattr(object, name[, default])內置函數,其中object是對象,name是對象的屬性名,value是屬性值。這兩個函數會調用對象的__getattr____setattr__魔術方法。

  4. Python如何實現內存管理?有沒有可能出現內存泄露的問題?

    答:

  5. 闡述列表和集合的底層實現原理。

    答:

  6. 現有字典d = {'a': 24, 'g': 52, 'i': 12, 'k': 33},如何按字典中的值對字典進行排序得到排序後的字典。

    答:

  7. 實現將字符串k1:v1|k2:v2|k3:v3處理成字典{'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}

    答:

    {key: value for key, value in (
        item.split(':') for item in 'k1:v1|k2:v2|k3:v3'.split('|')
    )}
  8. 寫出生成從mn公差爲k的等差數列的生成器。

    答:

    (value for value in range(m, n + 1, k))

    def generate(m, n, k):
        for value in range(m, n + 1, k):
            yield value

    def generate(m, n, k):
        yield from range(m, n + 1, k)
  9. 請寫出你能想到的反轉一個字符串的方式。

    答:

    ''.join(reversed('hello'))
    'hello'[::-1]
    def reverse(content):
        return ''.join(content[i] for i in range(len(content) - 1, -1, -1))
    
    reverse('hello')
    def reverse(content):
        return reverse(content[1:]) + content[0] if len(content) > 1 else content
    
    reverse('hello')
  10. 不使用任何內置函數,將字符串'123'轉換成整數123

答:

nums = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
total = 0 
for ch in '123': 
    total *= 10 
    total += nums[ch]
print(total)
  1. 寫一個返回bool值的函數,判斷給定的非負整數是不是迴文數。

    答:

  2. 用一行代碼實現求任意非負整數的階乘。

    答:

    from functools import reduce
    
    (lambda num: reduce(int.__mul__, range(2, num + 1), 1))(5)
  3. 寫一個函數返回傳入的整數列表中第二大的元素。

    答:

  4. 刪除列表中的重複元素並保留原有的順序。

    答:

  5. 找出兩個列表中的相同元素和不同元素。

    答:

  6. 列表中的某個元素出現次數佔列表元素總數的半數以上,找出這個元素。

    答:

  7. 實現對有序列表進行二分查找的算法。

    答:

  8. 輸入年月日,輸出這一天是這一年的第幾天。

    答:

  9. 統計一個字符串中各個字符出現的次數。

    答:

  10. 在Python中如何實現單例模式?

    答:

  11. 下面的代碼會輸出什麼。

    class A:
        
        def __init__(self, value):
            self.__value = value
        
        @property
        def value(self):
            return self.__value
    
    
    a = A(1)
    a.__value = 2
    print(a.__value)
    print(a.value)
  12. 實現一個記錄函數執行時間的裝飾器。

    答:

  13. 寫一個遍歷指定目錄下指定後綴名的文件的函數。

    答:

  14. 有如下所示的字典,請將其轉換爲CSV格式。

    轉換前:

    dict_corp = {
        'cn': {'id': 1, 'name': '土豆', 'desc': '土豆', 'price': {'gold': 20, 'kcoin': 20}},
        'en': {'id': 1, 'name': 'potato', 'desc': 'potato', 'price': {'gold': 20, 'kcoin': 20}},
        'kr': {'id': 1, 'name': '감자', 'desc':'감자', 'price': {'gold': 20, 'kcoin': 20}},
        'jp': {'id': 1, 'name': 'ジャガイモ', 'desc': 'ジャガイモ', 'price': {'gold': 20, 'kcoin': 20}},
    }

    轉換後:

    ,id,name,desc,gold,kcoin  
    cn,1,土豆,土豆,20,20
    en,1,potato,potato,20,20
    kr,1,감자,감자,20,20
    jp,1,ジャガイモ,ジャガイモ,20,20
    
  15. 有如下所示的日誌文件,請用Python程序或Linux命令打印出獨立IP並統計數量。

    221.228.143.52 - - [23/May/2019:08:57:42 +0800] ""GET /about.html HTTP/1.1"" 206 719996
    218.79.251.215 - - [23/May/2019:08:57:44 +0800] ""GET /index.html HTTP/1.1"" 206 2350253
    220.178.150.3 - - [23/May/2019:08:57:45 +0800] ""GET /index.html HTTP/1.1"" 200 2350253
    218.79.251.215 - - [23/May/2019:08:57:52 +0800] ""GET /index.html HTTP/1.1"" 200 2350253
    219.140.190.130 - - [23/May/2019:08:57:59 +0800] ""GET /index.html HTTP/1.1"" 200 2350253
    221.228.143.52 - - [23/May/2019:08:58:08 +0800] ""GET /about.html HTTP/1.1"" 206 719996
    221.228.143.52 - - [23/May/2019:08:58:08 +0800] ""GET /news.html HTTP/1.1"" 206 713242
    221.228.143.52 - - [23/May/2019:08:58:09 +0800] ""GET /products.html HTTP/1.1"" 206 1200250
    
  16. 請寫出從HTML頁面源代碼中獲取a標籤href屬性的正則表達式。

    答:

  17. 正則表達式對象的searchmatch方法有什麼區別?

    答:

  18. 當做個線程競爭一個對象且該對象並非線程安全的時候應該怎麼辦?

    答:

  19. 說一下死鎖產生的條件以及如何避免死鎖的發生。

    答:

  20. 請闡述TCP的優缺點。

    答:

  21. HTTP請求的GET和POST有什麼區別?

    答:

  22. 說一些你知道的HTTP響應狀態碼。

    答:

  23. 簡單闡述HTTPS的工作原理。

    答:

  24. 闡述Django項目中一個請求的生命週期。

    答:

  25. Django項目中實現數據接口時如何解決跨域問題。

    答:

  26. Django項目中如何對接Redis高速緩存服務。

    答:

  27. 請說明Cookie和Session之間的關係。

    答:

  28. 說一下索引的原理和作用。

    答:

  29. 是否使用過Nginx實現負載均衡?用過哪些負載均衡算法?

    答:

  30. 一個保存整數(int)的數組,除了一個元素出現過1次外,其他元素都出現過兩次,請找出這個元素。

    答:

  31. 有12個外觀相同的籃球,其中1個的重要和其他11個的重量不同(有可能輕有可能重),現在有一個天平可以使用,怎樣才能通過最少的稱重次數找出這顆與衆不同的球。

    答: