Python面試題170道

【已完成23道】

Python 今年還是很火,不僅是編程語言排行榜前二,更成爲互聯網公司最火熱的招聘職位之一。伴隨而來的則是面試題目越來越全面和深入化。有的時候不是你不會,而是觸及到你的工作邊緣,並沒有更多的使用,可是面試卻需要了解。

所以我結合自己的面試經歷以及各大廠的面試題庫,準備了 170 道 2019 年最新的 Python 面試題解析,很多老舊的問題已經幫你剔除,直接看這份最新的即可。讓你最短時間內掌握核心知識點,更高效的搞定 Python 面試!

點擊查看標準答案

1. 語言特性

1.談談對 Python 和其他語言的區別
答:Python是一門語法簡潔優美,功能強大無比,應用領域非常廣泛,具有強大完備的第三方庫,它是一門強類型可移植,可擴展,可嵌入的解釋型編程語言,屬於動態語言。

拿C語言和Python比較:Python的第三方庫比較齊全並且使用簡潔,很少代碼就能實現一些功能,如果用C語言去實現相同的功能可能就比較複雜。但是對於速度來說Python的運行速度相較於C語言就比較慢,有利的同時也有弊端,畢竟我們的學習成本降低了。

2.簡述解釋型和編譯型編程語言
答:解釋型語言是在運行時才翻譯,每執行一次,就翻譯一次,效率較低。編譯型就是直接翻譯成機型可以執行的,只翻譯一次,所以效率相對較高。

3.Python 的解釋器種類以及相關特點?
答:

  • CPython,C語言開發,使用最廣泛的解釋器。
  • IPython,基於cpython之上的一個交互式計時器,交互方式增強功能和cpython一樣
  • PyPy,目標是執行效率,採用JIT技術。對Python代碼進行動態編譯,提高執行效率
  • JPython,運行在Java上的解釋器,直接把Python代碼編譯成Java字節碼執行
  • IronPython,運行在微軟.NET平臺上的解釋器,把Python編譯成.NET的字節碼

4.說說你知道的Python3 和 Python2 之間的區別?
答: 這裏例舉 5 條

  • print 在 Python3 中是函數必須加括號,Python2 中 print 爲 class。
  • Python2 中使用 xrange,Python3 使用 range。
  • Python2 中默認的字符串類型默認是 ASCII,Python3 中默認的字符串類型是 Unicode。
  • Python2 中/的結果是整型,Python3 中是浮點類型。
  • Python2 中聲明元類:metaclass = MetaClass,Python3 中聲明元類:class newclass(metaclass=MetaClass):pass。

5.Python3 和 Python2 中 int 和 long 區別?
答:Python2 有 int 和 long 類型。int 類型最大值不能超過 sys.maxint,而且這個最大值是平臺相關的。可以通過在數字的末尾附上一個L來定義長整型,顯然,它比 int 類型表示的數字範圍更大。在 Python3 裏,只有一種整數類型 int,大多數情況下,和 Python2中的長整型類似。

6.xrange 和 range 的區別?
答:xrange 是在 Python2 中的用法,Python3 中只有 range xrange 用法與 range 完全相同,所不同的是生成的不是一個 list 對象,而是一個生成器。

2. 編碼規範

7.什麼是 PEP8?
答:PEP是Python Enhancement Proposal的縮寫,通常翻譯爲“Python增強提案”。PEP8是Python代碼格式二編訂的風格指南

8.瞭解 Python 之禪麼?
答:通過 import this語句可以獲取其具體的內容。它告訴大家如何編寫高效整潔的代碼。

9.瞭解 DocString 麼?
答:DocString 文檔字符串是一個重要的工具,用於解釋文檔程序,幫助你的程序文檔更加簡單易懂。主要是解釋代碼作用的。

10.瞭解類型註解麼?
答:PEP 484 引入了類型提示,這使得可以對 Python 代碼進行靜態類型檢查。 在使用 Ide 的時候可以獲取到參數的類型,更方便傳入參數。使用格式如下:

def foo(num: int) -> None:
    print(f"接收到的數字是:{num}")

介紹下這個簡單例子,我們可以在函數的參數部分使用參數名+冒號+類型,來指定參數可以接受的類型,這裏的話就是 num 參數爲 int 類型,然後後面->接的是返回值的類型。這裏返回值爲 None,然後通過 fstring 格式化字符串輸出傳入的數字。

11.例舉你知道 Python 對象的命名規範,例如方法或者類等
答:類:總是使用首字母大寫單詞串,如 MyClass。內部類可以使用額外的前導下劃線。
變量:小寫,由下劃線連接各個單詞。方法名類似
常量:常量名所有字母大寫 等

12.Python 中的註釋有幾種?
答:總體來說分爲兩種,單行註釋和多行註釋。

單行註釋在行首是 #。
多行註釋可以使用三個單引號或三個雙引號,包括要註釋的內容。

13.如何優雅的給一個函數加註釋?
答:可以使用 docstring 配合類型註解

14.如何給變量加註釋?
答:可以通過變量名:類型的方式如下

a: str = "this is string type"

15.Python 代碼縮進中是否支持 Tab 鍵和空格混用。
答:不允許 tab 鍵和空格鍵混用,這種現象在使用 sublime 的時候尤爲明顯。
一般推薦使用 4 個空格替代 tab 鍵。

16.是否可以在一句 import 中導入多個庫?
答:可以是可以,但是不推薦。因爲一次導入多個模塊可讀性不是很好,所以一行導入一個模塊會比較好。同樣的儘量少用 from modulename import *,因爲判斷某個函數或者屬性的來源有些困難,不方便調試,可讀性也降低了。

17.在給 Py 文件命名的時候需要注意什麼?
答:給文件命名的時候不要和標準庫的一些模塊重複,比如 abc。 另外要名字要有意義,不建議數字開頭或者中文命名。

18.例舉幾個規範 Python 代碼風格的工具
答:pylint 和 flake8

數據類型-字符串
19. 列舉 Python 中的基本數據類型?
答: Python3 中有六個標準的數據類型:字符串(String)、數字(Digit)、列表(List)、元組(Tuple)、集合(Sets)、字典(Dictionary)。

20.如何區別可變數據類型和不可變數據類型
答: 從對象內存地址方向來說

可變數據類型:在內存地址不變的情況下,值可改變(列表和字典是可變類型,但是字典中的 key 值必須是不可變類型)
不可變數據類型:內存改變,值也跟着改變。(數字,字符串,布爾類型,都是不可變類型)可以通過 id() 方法進行內存地址的檢測。

21.將"hello world"轉換爲首字母大寫"Hello World"

"hello world".title()

22.如何檢測字符串中只含有數字?
答:可以通過 isdigit 方法,例子如下

s1 = "12223".isdigit()
print(s1)

s2 = "12223a".isdigit()
print(s2)

23.將字符串"ilovechina"進行反轉
答:

s1 = "ilovechina"[::-1]
print(s1)

待完善…

發佈了112 篇原創文章 · 獲贊 316 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章