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

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