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