當前位置:
首頁 > 新聞 > 最常見的 35個Python 面試題及答案

最常見的 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:雷鋒網 |