常見Python面試題目整理小結(jié)

本篇文章將對一些常見的python面試題目進行整理,并做簡要的回答,可供參考,如果你有更好更全面的答案,那么請在評論區(qū)評論,一起交流學(xué)習(xí)^0^
1. 列舉 Python2 和 Python3 的區(qū)別?
答:
- 默認編碼不同:python2 采用ASCII碼,python3 采用utf-8
- input的區(qū)別:python2中有兩個輸入,一個是input(),等待用戶輸入表達式,然后返回結(jié)果;另一個是raw_input(),輸入什么返回什么。python3中只有input替代了它們
- print的區(qū)別:python2中print被視為語句,直接把要輸出的內(nèi)容放到print關(guān)鍵字后面即可。python3中print()視為一個函數(shù),需要將輸出的內(nèi)容作為參數(shù)傳給它
- 整數(shù)除法(/)的區(qū)別:python2中兩個整數(shù)相除,得到的結(jié)果也會是一個整數(shù),將會把小數(shù)部分去掉,比如輸入3/2,將會得到1,而不是1.5;python3中則兩整數(shù)相除,如果結(jié)果有小數(shù)的話將會默認返回一個浮點數(shù),保留小數(shù)點后面的數(shù)字,比如3/2會返回1.5
- 字符串的類型:python2中字符串有兩種類型:Unicode字符串和非Unicode字符串;python3中字符串中只有一種類型:Unicode字符串
- int和long的區(qū)別:python2中將非浮點型分為int整型和long長整型,可以通過在數(shù)字的末尾附上一個L來定義長整型;而在python3中只有一種整數(shù)類型int
- import導(dǎo)入模塊的搜索路徑不同:python2中import是采用相對路徑方式進行搜索模塊的;而Python3采用的是絕對路徑的方式進行import的
- 對縮進要求不同:python2沒有嚴(yán)格的縮進要求,而Python3使用更加嚴(yán)格的縮進
- 新式類和經(jīng)典類的區(qū)別:python2中存在經(jīng)典類和新式類的區(qū)別,而在python3中統(tǒng)一采用新式類
2. 簡述 Python 的深淺拷貝以及應(yīng)用場景?
答:
淺拷貝:對另外一個變量的內(nèi)存地址的拷貝,這兩個變量指向同一個內(nèi)存地址的變量值。(copy.copy())
- 公用一個值;
- 這兩個變量的內(nèi)存地址一樣;
- 對其中一個變量的值改變,另外一個變量的值也會改變;
深拷貝:一個變量對另外一個變量的值拷貝。(copy.deepcopy())
- 兩個變量的內(nèi)存地址不同;
- 兩個變量各有自己的值,且互不影響;
- 對其任意一個變量的值的改變不會影響另外一個
應(yīng)用場景:深拷貝應(yīng)用在需要對拷貝過來的變量進行修改,而不改變原被拷貝變量的情況
3. 能否解釋一下 *args 和 **kwargs?
答:
當(dāng)我們不知道向函數(shù)傳遞多少參數(shù)時,我們就使用*args,*args 用來將參數(shù)打包成tuple給函數(shù)體調(diào)用;
當(dāng)我們不知道該傳遞多少關(guān)鍵字參數(shù)時,使用**kwargs來收集關(guān)鍵字參數(shù),**kwargs 打包關(guān)鍵字參數(shù)成dict給函數(shù)體調(diào)用。
4. 簡述 生成器、迭代器、可迭代對象 以及應(yīng)用場景?
答:
可迭代對象就可以用for循環(huán)語句進行遍歷的對象就是可迭代對象;
生成器寫起來就像是正規(guī)的函數(shù) ,只是在需要返回數(shù)據(jù)的時候使用yield語句。每次next()被調(diào)用時,生成器會返回它脫離的位置。
迭代器是一個更抽象的概念,任何對象,如果它的類有next方法和iter方法返回自己本身,那么這個對象就是迭代器。
應(yīng)用場景:比如我們使用python讀取一 個10g的文件,如果一次性將10g的文件加載到內(nèi)存處理的話(read方法),內(nèi)存肯定會溢出;這里如果可以 使用生成器把讀寫交叉處理進行,比如使用(readline和readlines)就可以再循環(huán)讀取的同時不斷處理,這樣就可以節(jié)省大量的內(nèi)存空間。
5. 請說明 yield 關(guān)鍵字的工作機制。
答:
如果函數(shù)里面有yield關(guān)鍵字, 這個函數(shù)的返回值是生成器。如果遇到y(tǒng)ield, 函數(shù)停止執(zhí)行, 當(dāng)再次調(diào)用next方法時, 從停止的地方繼續(xù)執(zhí)行。默認next方法會把yield后面的值返回回來。
6. 請簡單談?wù)勓b飾器的作用和功能。
答:
裝飾器本質(zhì)上是一個函數(shù),該函數(shù)用來處理其他函數(shù),它可以讓其他函數(shù)在不需要修改代碼的前提下增加額外的功能,裝飾器的返回值也是一個函數(shù)對象。寫代碼要遵循 開放封閉 原則,簡單來說,它規(guī)定已經(jīng)實現(xiàn)的功能代碼不允許被修改,但可以被擴展,即: 封閉:已實現(xiàn)的功能代碼塊 ,開放:對擴展開發(fā)
裝飾器具體可以實現(xiàn)以下功能:
- 引入日志
- 函數(shù)執(zhí)行時間統(tǒng)計
- 執(zhí)行函數(shù)前預(yù)備處理
- 執(zhí)行函數(shù)后清理功能
- 權(quán)限校驗等場景
- 緩存
7. Python 中如何讀取大數(shù)據(jù)的文件內(nèi)容?
答:
使用python讀取一 個大數(shù)據(jù)的文件時,如果一次性將特別大的數(shù)據(jù)文件加載到內(nèi)存處理的話(read方法),內(nèi)存肯定會溢出;這里可以 使用生成器把讀寫交叉處理進行,比如使用readline和readlines就可以再循環(huán)讀取的同時不斷處理,這樣就可以節(jié)省大量的內(nèi)存空間。
8. Python 中的模塊和包是什么?
答:
模塊就是工具包,要想使用這個工具包中的工具(就好比函數(shù)),就需要導(dǎo)入這個模塊。模塊是非常簡單的Python文件,單個Python文件就是一個模塊。
包就是將有聯(lián)系的模塊組織在一起的一個集和,有效避免模塊名稱沖突問題,讓應(yīng)用組織結(jié)構(gòu)更加清晰。
9. python 是如何進行內(nèi)存管理的(python 是如何實現(xiàn)垃圾回收機制的)?
答:
python的垃圾回收機制采用的是引用計數(shù)機制為主,標(biāo)記-清除和分代收集兩種機制為輔的策略。
10. 談?wù)勀銓γ嫦驅(qū)ο蟮睦斫?
答:
面向?qū)ο笫前慈藗冋J識客觀世界的系統(tǒng)思維方式,采用基于對象(實體)的概念建立模型,模擬客觀世界分析、設(shè)計、實現(xiàn)軟件的辦法。通過面向?qū)ο蟮睦砟钍褂嬎銠C軟件系統(tǒng)能與現(xiàn)實世界中的系統(tǒng)一一對應(yīng)。面向?qū)ο缶幊炭梢詫?shù)據(jù)與函數(shù)綁定到一起,進行封裝,這樣能夠更快速的開發(fā)程序,減少了重復(fù)代碼的重寫過程。
11. Python 面向?qū)ο笾械睦^承有什么特點?
答:
Python同時支持單繼承與多繼承,當(dāng)只有一個父類時為單繼承,當(dāng)存在多個父類時為多繼承。并且子類會繼承父類的所有的屬性和方法,子類也可以覆蓋父類同名的變量和方法。
12. 面向?qū)ο笾?super 的作用?
答:
super用在子類中可以快速調(diào)用父類的方法,格式為: super(子類名稱, self).父類的方法名()
13. 面向?qū)ο笊疃葍?yōu)先和廣度優(yōu)先是什么, 并說明應(yīng)用場景?
答:
深度優(yōu)先算法:它是經(jīng)典類多繼承搜索的順序,先深入繼承樹左側(cè)查找,然后再返回,開始查找右側(cè)。
廣度優(yōu)先算法:它是新式類多繼承搜索的順序,先在水平方向查找,然后再向上查找。
14. 請簡述__init__和__len__這兩個魔術(shù)方法的作用
答:
構(gòu)造方法__init__:當(dāng)一個對象被創(chuàng)建后,會立即調(diào)用該構(gòu)造方法,自動執(zhí)行構(gòu)造方法里面的內(nèi)容。
構(gòu)造方法__len__:該構(gòu)造方法會返回元素的數(shù)量。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
- 這篇文章主要介紹了2019年最新的Python面試題(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-12-30
- 本文給大家分享Python高頻面試題及其答案,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2019-12-26
- 這篇文章主要介紹了2019Python必刷面試題(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-12-25
- 這篇文章主要介紹了Python經(jīng)典面試題與參考答案,總結(jié)分析了Python面試中各種常見的概念、數(shù)據(jù)結(jié)構(gòu)、算法等相關(guān)操作技巧,需要的朋友可以參考下2019-11-04
- 這篇文章主要介紹了兩道阿里python面試題與參考答案,結(jié)合具體實例形式分析了Python數(shù)組創(chuàng)建、遍歷、拆分及隨機數(shù)等相關(guān)操作技巧,需要的朋友可以參考下2019-09-02
- 這篇文章主要介紹了60道硬核Python面試題,論面霸是如何煉成的,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-08-28
- 這篇文章主要介紹了關(guān)于Python爬蟲面試170道題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-08-15
- Python是目前編程領(lǐng)域最受歡迎的語言。在本文中,我將總結(jié)Python面試中最常見的50個問題。每道題都提供參考答案,感興趣的可以了解下2019-06-26
- 這篇文章主要為大家介紹了Python常見的面試題與相應(yīng)的Python知識點,包括Python變量、函數(shù)、對象、數(shù)據(jù)類型等,需要的朋友可以參考下2019-06-25
- 這篇文章主要介紹了110道Python面試題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-24