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