0
本文作者: AI研習社-譯站 | 2018-08-02 11:13 |
雷鋒網(wǎng)按:本文為 AI 研習社編譯的技術博客,原文 Top 35 Python Interview Questions and Answers in 2018 ,作者 DataFlair Team。
翻譯 | 于志鵬 整理 | 凡江
1. Python 面試問題及答案
作為一個 Python 新手,你必須熟悉基礎知識。在本文中我們將討論一些 Python 面試的基礎問題和高級問題以及答案,以幫助你完成面試。包括 Python 開發(fā)問題、編程問題、數(shù)據(jù)結構問題、和 Python 腳本問題。讓我們來深入研究這些問題。
Python 面試問題
Q.1. Python 的特點和優(yōu)點是什么?
Python 可以作為編程的入門語言,因為他具備以下特質:
1. 解釋性
2. 動態(tài)特性
3. 面向對象
4. 語法簡潔
5. 開源
6. 豐富的社區(qū)資源
實際上 Python 的優(yōu)點遠不止這些,更詳細的介紹可以閱讀 Introduction to Python( https://data-flair.training/blogs/python-tutorial/)
Q.2. 深拷貝和淺拷貝的區(qū)別是什么?
深拷貝是將對象本身復制給另一個對象。這意味著如果對對象的副本進行更改時不會影響原對象。在 Python 中,我們使用 deepcopy()函數(shù)進行深拷貝,使用方法如下:
深拷貝-Python 面試問題及答案
淺拷貝是將對象的引用復制給另一個對象。因此,如果我們在副本中進行更改,則會影響原對象。使用 copy()函數(shù)進行淺拷貝,使用方法如下:
淺拷貝—Python 面試問題及答案
Q.3. 列表和元祖有什么不同?
主要區(qū)別在于列表是可變的,元祖是不可變的??聪旅娴睦樱?/p>
會出現(xiàn)以下錯誤提示:
TypeError: ‘tuple’ object does not support item assignment
關于列表和元祖的更多內(nèi)容參考 Tuples vs Lists( https://data-flair.training/blogs/python-tuples-vs-lists/)
2. Python 面試基礎題
Q.4 到 Q.20 是新手經(jīng)常會被問到的一些 Python 基礎題,有經(jīng)驗的人也可以參考這些問題來復習這些概念。
Q.4. 解釋 Python 中的三元表達式
與 C++不同, 在 Python 中我們不需要使用 ? 符號,而是使用如下語法:
[on true] if [expression]else [on false]
如果 [expression] 為真, 則 [on true] 部分被執(zhí)行。如果表示為假則 [on false] 部分被執(zhí)行
下面是例子:
2
Hi
Q.5. Python 中如何實現(xiàn)多線程?
線程是輕量級的進程,多線程允許一次執(zhí)行多個線程。眾所周知,Python 是一種多線程語言,它有一個多線程包。
GIL(全局解釋器鎖)確保一次執(zhí)行單個線程。一個線程保存 GIL 并在將其傳遞給下一個線程之前執(zhí)行一些操作,這就產(chǎn)生了并行執(zhí)行的錯覺。但實際上,只是線程輪流在 CPU 上。當然,所有傳遞都會增加執(zhí)行的開銷。
Q.6. 解釋繼承
一個類繼承自另一個類,也可以說是一個孩子類/派生類/子類,繼承自父類/基類/超類,同時獲取所有的類成員(屬性和方法)。
繼承使我們可以重用代碼,并且還可以更方便地創(chuàng)建和維護代碼。Python 支持以下類型的繼承:
1. 單繼承- 一個子類類繼承自單個基類
2. 多重繼承- 一個子類繼承自多個基類
3. 多級繼承- 一個子類繼承自一個基類,而基類繼承自另一個基類
4. 分層繼承- 多個子類繼承自同一個基類
5. 混合繼承- 兩種或兩種以上繼承類型的組合
關于繼承的更多內(nèi)容參考 Python Inheritance( https://data-flair.training/blogs/python-inheritance/)
Q.7. 什么是 Flask?
Flask 是一個使用 Python 編寫的輕量級 Web 應用框架,使用 BSD 授權。其 WSGI 工具箱采用 Werkzeug,模板引擎則使用 Jinja2。除了 Werkzeug 和 Jinja2 以外幾乎不依賴任何外部庫。因為 Flask 被稱為輕量級框架。
Flask 的會話會話使用簽名 cookie 來允許用戶查看和修改會話內(nèi)容。它會記錄從一個請求到另一個請求的信息。但如果要修改會話,則必須有密鑰 Flask.secret_key。
我們將在后續(xù)的課程中進一步討論 Flask。
Q.8. 如何在 Python 中管理內(nèi)存?
Python 用一個私有堆內(nèi)存空間來放置所有對象和數(shù)據(jù)結構,我們無法訪問它。由解釋器來管理它。不過使用一些核心 API,我們可以訪問一些 Python 內(nèi)存管理工具控制內(nèi)存分配。
Q.9. 解釋 Python 中的 help() 函數(shù)和 dir() 函數(shù)。
help() 函數(shù)返回幫助文檔和參數(shù)說明:
運行結果如下:
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() 函數(shù)返回對象中的所有成員 (任何類型)
Q.10. 當退出 Python 時是否釋放所有內(nèi)存分配?
答案是否定的。那些具有對象循環(huán)引用或者全局命名空間引用的變量,在 Python 退出是往往不會被釋放
另外不會釋放 C 庫保留的部分內(nèi)容。
Q.11. 什么是猴子補???
在運行時動態(tài)修改類和模塊
Hi, monkey
Q.12. 什么是 Python 字典?
字典是我在 C++和 Java 中沒有見過的數(shù)據(jù)結構,它擁有鍵-值對
3
字典是可變的,我們也可以用推導式的方式創(chuàng)建它.
{25: 5, 16: 4, 9: 3, 4: 2, 1: 1}
要了解更多字典的內(nèi)容請點擊 Python Dictionaries( https://data-flair.training/blogs/python-dictionaries/)
Q.13. 能否解釋一下 *args 和 **kwargs?
如果我們不知道將多少個參數(shù)傳遞給函數(shù),比如當我們想傳遞一個列表或一個元組值時,就可以使用*args。
3
2
1
4
7
當我們不知道將會傳入多少關鍵字參數(shù)時,使用**kwargs 會收集關鍵字參數(shù)。
a.1
b.2
c.7
使用 args 和 kwargs 作為參數(shù)名只是舉例,可以任意替換。
對于 Python 的基礎題任何疑問,請在評論區(qū)提問。
Q.14. 編程實現(xiàn)計算文件中的大寫字母數(shù)
26
Q.15. 什么是負索引?
我們先創(chuàng)建如下列表:
與正索引不同......
......
想要繼續(xù)閱讀,請移步至我們的AI研習社社區(qū):https://club.leiphone.com/page/TextTranslation/619
更多精彩內(nèi)容盡在 AI 研習社。
不同領域包括計算機視覺,語音語義,區(qū)塊鏈,自動駕駛,數(shù)據(jù)挖掘,智能控制,編程語言等每日更新。
手機端可以掃描二維碼訪問:
雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權禁止轉載。詳情見轉載須知。