最常見的 35個Python 面試題及答案
雷鋒網按:本文為 AI 研習社編譯的技術博客,原文 Top 35 Python Interview Questions and Answers in 2018 ,作者 DataFlair Team。
翻譯 | 於志鵬 整理 | 凡江
1. Python 面試問題及答案
作為一個 Python 新手,你必須熟悉基礎知識。在本文中我們將討論一些 Python 面試的基礎問題和高級問題以及答案,以幫助你完成面試。包括 Python 開發問題、編程問題、數據結構問題、和 Python 腳本問題。讓我們來深入研究這些問題。
Python 面試問題
Q.1. Python 的特點和優點是什麼?
Python 可以作為編程的入門語言,因為他具備以下特質:
1. 解釋性
2. 動態特性
3. 面向對象
4. 語法簡潔
5. 開源
6. 豐富的社區資源
實際上 Python 的優點遠不止這些,更詳細的介紹可以閱讀 Introduction to Python( https://data-flair.training/blogs/python-tutorial/)
Q.2. 深拷貝和淺拷貝的區別是什麼?
深拷貝是將對象本身複製給另一個對象。這意味著如果對對象的副本進行更改時不會影響原對象。在 Python 中,我們使用 deepcopy()函數進行深拷貝,使用方法如下:
深拷貝-Python 面試問題及答案
淺拷貝是將對象的引用複製給另一個對象。因此,如果我們在副本中進行更改,則會影響原對象。使用 copy()函數進行淺拷貝,使用方法如下:
淺拷貝—Python 面試問題及答案
Q.3. 列表和元祖有什麼不同?
主要區別在於列表是可變的,元祖是不可變的。看下面的例子:
會出現以下錯誤提示:
TypeError: 『tuple』 object does not support item assignment
關於列表和元祖的更多內容參考 Tuples vs Lists( https://data-flair.training/blogs/python-tuples-vs-lists/)
2. Python 面試基礎題
Q.4 到 Q.20 是新手經常會被問到的一些 Python 基礎題,有經驗的人也可以參考這些問題來複習這些概念。
Q.4. 解釋 Python 中的三元表達式
與 C++不同, 在 Python 中我們不需要使用 ? 符號,而是使用如下語法:
[on true] if [expression]else [on false]
如果 [expression] 為真, 則 [on true] 部分被執行。如果表示為假則 [on false] 部分被執行
下面是例子:
2
Hi
Q.5. Python 中如何實現多線程?
線程是輕量級的進程,多線程允許一次執行多個線程。眾所周知,Python 是一種多線程語言,它有一個多線程包。
GIL(全局解釋器鎖)確保一次執行單個線程。一個線程保存 GIL 並在將其傳遞給下一個線程之前執行一些操作,這就產生了並行執行的錯覺。但實際上,只是線程輪流在 CPU 上。當然,所有傳遞都會增加執行的開銷。
Q.6. 解釋繼承
一個類繼承自另一個類,也可以說是一個孩子類/派生類/子類,繼承自父類/基類/超類,同時獲取所有的類成員(屬性和方法)。
繼承使我們可以重用代碼,並且還可以更方便地創建和維護代碼。Python 支持以下類型的繼承:
1. 單繼承- 一個子類類繼承自單個基類
2. 多重繼承- 一個子類繼承自多個基類
3. 多級繼承- 一個子類繼承自一個基類,而基類繼承自另一個基類
4. 分層繼承- 多個子類繼承自同一個基類
5. 混合繼承- 兩種或兩種以上繼承類型的組合
關於繼承的更多內容參考 Python Inheritance( https://data-flair.training/blogs/python-inheritance/)
Q.7. 什麼是 Flask?
Flask 是一個使用 Python 編寫的輕量級 Web 應用框架,使用 BSD 授權。其 WSGI 工具箱採用 Werkzeug,模板引擎則使用 Jinja2。除了 Werkzeug 和 Jinja2 以外幾乎不依賴任何外部庫。因為 Flask 被稱為輕量級框架。
Flask 的會話會話使用簽名 cookie 來允許用戶查看和修改會話內容。它會記錄從一個請求到另一個請求的信息。但如果要修改會話,則必須有密鑰 Flask.secret_key。
我們將在後續的課程中進一步討論 Flask。
Q.8. 如何在 Python 中管理內存?
Python 用一個私有堆內存空間來放置所有對象和數據結構,我們無法訪問它。由解釋器來管理它。不過使用一些核心 API,我們可以訪問一些 Python 內存管理工具控制內存分配。
Q.9. 解釋 Python 中的 help() 函數和 dir() 函數。
help() 函數返回幫助文檔和參數說明:
運行結果如下:
Help on function copy in module copy
copy(x)
Shallow copy operation on arbitrary Python objects.
See the module』s __doc__ string for more info.
dir() 函數返回對象中的所有成員 (任何類型)
Q.10. 當退出 Python 時是否釋放所有內存分配?
答案是否定的。那些具有對象循環引用或者全局命名空間引用的變數,在 Python 退出是往往不會被釋放
另外不會釋放 C 庫保留的部分內容。
Q.11. 什麼是猴子補丁?
在運行時動態修改類和模塊
Hi, monkey
Q.12. 什麼是 Python 字典?
字典是我在 C++和 Java 中沒有見過的數據結構,它擁有鍵-值對
3
字典是可變的,我們也可以用推導式的方式創建它.
要了解更多字典的內容請點擊 Python Dictionaries( https://data-flair.training/blogs/python-dictionaries/)
Q.13. 能否解釋一下 *args 和 **kwargs?
如果我們不知道將多少個參數傳遞給函數,比如當我們想傳遞一個列表或一個元組值時,就可以使用*args。
當我們不知道將會傳入多少關鍵字參數時,使用**kwargs 會收集關鍵字參數。
a.1
b.2
c.7
使用 args 和 kwargs 作為參數名只是舉例,可以任意替換。
對於 Python 的基礎題任何疑問,請在評論區提問。
Q.14. 編程實現計算文件中的大寫字母數
26
Q.15. 什麼是負索引?
我們先創建如下列表:
與正索引不同......
......
※商湯科技聯合創始人林達華:摒棄粗放式的計算機視覺研究,我談三點思考
※青雲QingCloud強勢發布9大產品品牌 黃允松說要對ICT模式「打破重建」
TAG:雷鋒網 |