本篇內(nèi)容介紹了“python有哪些常見的面試題”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
目前成都創(chuàng)新互聯(lián)已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管運(yùn)營、企業(yè)網(wǎng)站設(shè)計(jì)、臥龍網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。1、python下多線程的限制以及多進(jìn)程中傳遞參數(shù)的方式
python多線程有個(gè)全局解釋器鎖(global interpreter lock),這個(gè)鎖的意思是任一時(shí)間只能有一個(gè)線程使用解釋器,跟單cpu跑多個(gè)程序一個(gè)意思,大家都是輪著用的,這叫“并發(fā)”,不是“并行”。
多進(jìn)程間共享數(shù)據(jù),可以使用 multiprocessing.Value和multiprocessing.Array。
2、什么是lambda函數(shù)?它有什么好處?
lambda 函數(shù)是一個(gè)可以接收任意多個(gè)參數(shù)(包括可選參數(shù))并且返回單個(gè)表達(dá)式值的函數(shù)。lambda 函數(shù)不能包含命令,它們所包含的表達(dá)式不能超過一個(gè)。不要試圖向lambda 函數(shù)中塞入太多的東西;如果你需要更復(fù)雜的東西,應(yīng)該定義一個(gè)普通函數(shù),然后想讓它多長就多長。
3、Python是如何進(jìn)行類型轉(zhuǎn)換的?
?、俸瘮?shù)描述
② int(x [,base ]) 將x轉(zhuǎn)換為一個(gè)整數(shù)
?、踠ong(x [,base ]) 將x轉(zhuǎn)換為一個(gè)長整數(shù)
④float(x ) 將x轉(zhuǎn)換到一個(gè)浮點(diǎn)數(shù)
?、輈omplex(real [,imag ]) 創(chuàng)建一個(gè)復(fù)數(shù)
⑥str(x ) 將對象 x 轉(zhuǎn)換為字符串
?、遰epr(x ) 將對象 x 轉(zhuǎn)換為表達(dá)式字符串
?、鄀val(str ) 用來計(jì)算在字符串中的有效Python表達(dá)式,并返回一個(gè)對象
?、醫(yī)uple(s ) 將序列 s 轉(zhuǎn)換為一個(gè)元組
?、鈒ist(s ) 將序列 s 轉(zhuǎn)換為一個(gè)列表
?chr(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)字符
?unichr(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為Unicode字符
?ord(x ) 將一個(gè)字符轉(zhuǎn)換為它的整數(shù)值
?hex(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)十六進(jìn)制字符串
?oct(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)八進(jìn)制字符串
4、python多線程與多進(jìn)程的區(qū)別
在UNIX平臺上,當(dāng)某個(gè)進(jìn)程終結(jié)之后,該進(jìn)程需要被其父進(jìn)程調(diào)用wait,否則進(jìn)程成為僵尸進(jìn)程(Zombie)。所以,有必要對每個(gè)Process對象調(diào)用join()方法 (實(shí)際上等同于wait)。對于多線程來說,由于只有一個(gè)進(jìn)程,所以不存在此必要性。
多進(jìn)程應(yīng)該避免共享資源。在多線程中,我們可以比較容易地共享資源,比如使用全局變量或者傳遞參數(shù)。在多進(jìn)程情況下,由于每個(gè)進(jìn)程有自己獨(dú)立的內(nèi)存空間,以上方法并不合適。此時(shí)我們可以通過共享內(nèi)存和Manager的方法來共享資源。但這樣做提高了程序的復(fù)雜度,并因?yàn)橥降男枰档土顺绦虻男省?/p>
5、Python里面如何拷貝一個(gè)對象?
標(biāo)準(zhǔn)庫中的copy模塊提供了兩個(gè)方法來實(shí)現(xiàn)拷貝。一個(gè)方法是copy,它返回和參數(shù)包含內(nèi)容一樣的對象。使用deepcopy方法,對象中的屬性也被復(fù)制。
6、介紹一下except的用法和作用?
Python的except用來捕獲所有異常,因?yàn)镻ython里面的每次錯(cuò)誤都會拋出一個(gè)異常,所以每個(gè)程序的錯(cuò)誤都被當(dāng)作一個(gè)運(yùn)行時(shí)錯(cuò)誤。
7、Python中pass語句的作用是什么?
pass語句什么也不做,一般作為占位符或者創(chuàng)建占位程序,pass語句不會執(zhí)行任何操作。
8、Python解釋器種類以及特點(diǎn)?
Python是一門解釋器語言,代碼想運(yùn)行,必須通過解釋器執(zhí)行,Python存在多種解釋器,分別基于不同語言開發(fā),每個(gè)解釋器有不同的特點(diǎn),但都能正常運(yùn)行Python代碼,以下是常用的五種Python解釋器:
CPython:當(dāng)從Python官方網(wǎng)站下載并安裝好Python2.7后,就直接獲得了一個(gè)官方版本的解釋器:Cpython,這個(gè)解釋器是用C語言開發(fā)的,所以叫CPython,在命名行下運(yùn)行python,就是啟動CPython解釋器,CPython是使用最廣的Python解釋器。
IPython:IPython是基于CPython之上的一個(gè)交互式解釋器,也就是說,IPython只是在交互方式上有所增強(qiáng),但是執(zhí)行Python代碼的功能和CPython是完全一樣的,好比很多國產(chǎn)瀏覽器雖然外觀不同,但內(nèi)核其實(shí)是調(diào)用了IE。
PyPy:PyPy是另一個(gè)Python解釋器,它的目標(biāo)是執(zhí)行速度,PyPy采用JIT技術(shù),對Python代進(jìn)行動態(tài)編譯,所以可以顯著提高Python代碼的執(zhí)行速度。
Jython:Jython是運(yùn)行在Java平臺上的Python解釋器,可以直接把Python代碼編譯成Java字節(jié)碼執(zhí)行。
IronPython:IronPython和Jython類似,只不過IronPython是運(yùn)行在微軟.Net平臺上的Python解釋器,可以直接把Python代碼編譯成.Net的字節(jié)碼。
在Python的解釋器中,使用廣泛的是CPython,對于Python的編譯,除了可以采用以上解釋器進(jìn)行編譯外,技術(shù)高超的開發(fā)者還可以按照自己的需求自行編寫Python解釋器來執(zhí)行Python代碼,十分的方便!
9、列舉布爾值為False的常見值?
0, [] , () , {} , '' , False , None
10、字符串、列表、元組、字典每個(gè)常用的5個(gè)方法?
字符串:repleace,strip,split,reverse,upper,lower,join.....
列表:append,pop,,remove,sort,count,index.....
元組:index,count,__len__(),__dir__()
字典:get,keys,values,pop,popitems,clear,,items.....
11、lambda表達(dá)式格式以及應(yīng)用場景?
表達(dá)式格式:lambda后面跟一個(gè)或多個(gè)參數(shù),緊跟一個(gè)冒號,以后是一個(gè)表達(dá)式。冒號前是參數(shù),冒號后是返回值。例如:lambda x : 2x
應(yīng)用場景:經(jīng)常與一些內(nèi)置函數(shù)相結(jié)合使用,比如說map(),filter(),sorted(),reduce()等
12、pass的作用?
?、倏照Z句do nothing;
?、诒WC格式完整;
?、郾WC語義完整。
13、arg和 *kwarg作用?
萬能參數(shù),解決了函數(shù)參數(shù)不固定的問題
*arg:會把位置參數(shù)轉(zhuǎn)化為tuple
**kwarg:會把關(guān)鍵字參數(shù)轉(zhuǎn)化為dict
14、、is和==的區(qū)別?
is:判斷內(nèi)存地址是否相等;
==:判斷數(shù)值是否相等。
15、、簡述Python的深淺拷貝以及應(yīng)用場景?
copy():淺copy,淺拷貝指僅僅拷貝數(shù)據(jù)集合的第一層數(shù)據(jù)
deepcopy():深copy,深拷貝指拷貝數(shù)據(jù)集合的所有層
16、Python垃圾回收機(jī)制?
python采用的是引用計(jì)數(shù)機(jī)制為主,標(biāo)記-清除和分代收集(隔代回收、分代回收)兩種機(jī)制為輔的策略
計(jì)數(shù)機(jī)制:
Python的GC模塊主要運(yùn)用了引用計(jì)數(shù)來跟蹤和回收垃圾。在引用計(jì)數(shù)的基礎(chǔ)上,還可以通過“標(biāo)記-清除”
解決容器對象可能產(chǎn)生的循環(huán)引用的問題。通過分代回收以空間換取時(shí)間進(jìn)一步提高垃圾回收的效率。
標(biāo)記-清除:
標(biāo)記-清除的出現(xiàn)打破了循環(huán)引用,也就是它只關(guān)注那些可能會產(chǎn)生循環(huán)引用的對象。
缺點(diǎn):該機(jī)制所帶來的額外操作和需要回收的內(nèi)存塊成正比。
隔代回收:
原理:將系統(tǒng)中的所有內(nèi)存塊根據(jù)其存活時(shí)間劃分為不同的集合,每一個(gè)集合就成為一個(gè)“代”,
垃圾收集的頻率隨著“代”的存活時(shí)間的增大而減小。也就是說,活得越長的對象,就越不可能是垃圾,
就應(yīng)該減少對它的垃圾收集頻率。那么如何來衡量這個(gè)存活時(shí)間:通常是利用幾次垃圾收集動作來衡量,
如果一個(gè)對象經(jīng)過的垃圾收集次數(shù)越多,可以得出:該對象存活時(shí)間就越長。
17、python的可變類型和不可變類型?
不可變類型(數(shù)字、字符串、元組、不可變集合);
可變類型(列表、字典、可變集合)。
18、Python里面search()和match()的區(qū)別?
match()函數(shù)只檢測RE是不是在string的開始位置匹配,search()會掃描整個(gè)string查找匹配, 也就是說match()只有在0位置匹配成功的話才有返回,如果不是開始位置匹配成功的話,match()就返回none
19、用Python匹配HTML tag的時(shí)候,<.*>和<.*?>有什么區(qū)別?
前者是貪婪匹配,會從頭到尾匹配 xyz,而后者是非貪婪匹配,只匹配到第一個(gè) >。
20、Python里面如何生成隨機(jī)數(shù)?
import random;
random.random();
它會返回一個(gè)隨機(jī)的0和1之間的浮點(diǎn)數(shù)。
“python有哪些常見的面試題”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!