您好,登錄后才能下訂單哦!
本篇內容介紹了“python有哪些常見的面試題”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
1、python下多線程的限制以及多進程中傳遞參數的方式
python多線程有個全局解釋器鎖(global interpreter lock),這個鎖的意思是任一時間只能有一個線程使用解釋器,跟單cpu跑多個程序一個意思,大家都是輪著用的,這叫“并發”,不是“并行”。
多進程間共享數據,可以使用 multiprocessing.Value和multiprocessing.Array。
2、什么是lambda函數?它有什么好處?
lambda 函數是一個可以接收任意多個參數(包括可選參數)并且返回單個表達式值的函數。lambda 函數不能包含命令,它們所包含的表達式不能超過一個。不要試圖向lambda 函數中塞入太多的東西;如果你需要更復雜的東西,應該定義一個普通函數,然后想讓它多長就多長。
3、Python是如何進行類型轉換的?
①函數描述
② int(x [,base ]) 將x轉換為一個整數
③long(x [,base ]) 將x轉換為一個長整數
④float(x ) 將x轉換到一個浮點數
⑤complex(real [,imag ]) 創建一個復數
⑥str(x ) 將對象 x 轉換為字符串
⑦repr(x ) 將對象 x 轉換為表達式字符串
⑧eval(str ) 用來計算在字符串中的有效Python表達式,并返回一個對象
⑨tuple(s ) 將序列 s 轉換為一個元組
⑩list(s ) 將序列 s 轉換為一個列表
?chr(x ) 將一個整數轉換為一個字符
?unichr(x ) 將一個整數轉換為Unicode字符
?ord(x ) 將一個字符轉換為它的整數值
?hex(x ) 將一個整數轉換為一個十六進制字符串
?oct(x ) 將一個整數轉換為一個八進制字符串
4、python多線程與多進程的區別
在UNIX平臺上,當某個進程終結之后,該進程需要被其父進程調用wait,否則進程成為僵尸進程(Zombie)。所以,有必要對每個Process對象調用join()方法 (實際上等同于wait)。對于多線程來說,由于只有一個進程,所以不存在此必要性。
多進程應該避免共享資源。在多線程中,我們可以比較容易地共享資源,比如使用全局變量或者傳遞參數。在多進程情況下,由于每個進程有自己獨立的內存空間,以上方法并不合適。此時我們可以通過共享內存和Manager的方法來共享資源。但這樣做提高了程序的復雜度,并因為同步的需要而降低了程序的效率。
5、Python里面如何拷貝一個對象?
標準庫中的copy模塊提供了兩個方法來實現拷貝。一個方法是copy,它返回和參數包含內容一樣的對象。使用deepcopy方法,對象中的屬性也被復制。
6、介紹一下except的用法和作用?
Python的except用來捕獲所有異常,因為Python里面的每次錯誤都會拋出一個異常,所以每個程序的錯誤都被當作一個運行時錯誤。
7、Python中pass語句的作用是什么?
pass語句什么也不做,一般作為占位符或者創建占位程序,pass語句不會執行任何操作。
8、Python解釋器種類以及特點?
Python是一門解釋器語言,代碼想運行,必須通過解釋器執行,Python存在多種解釋器,分別基于不同語言開發,每個解釋器有不同的特點,但都能正常運行Python代碼,以下是常用的五種Python解釋器:
CPython:當從Python官方網站下載并安裝好Python2.7后,就直接獲得了一個官方版本的解釋器:Cpython,這個解釋器是用C語言開發的,所以叫CPython,在命名行下運行python,就是啟動CPython解釋器,CPython是使用最廣的Python解釋器。
IPython:IPython是基于CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所增強,但是執行Python代碼的功能和CPython是完全一樣的,好比很多國產瀏覽器雖然外觀不同,但內核其實是調用了IE。
PyPy:PyPy是另一個Python解釋器,它的目標是執行速度,PyPy采用JIT技術,對Python代進行動態編譯,所以可以顯著提高Python代碼的執行速度。
Jython:Jython是運行在Java平臺上的Python解釋器,可以直接把Python代碼編譯成Java字節碼執行。
IronPython:IronPython和Jython類似,只不過IronPython是運行在微軟.Net平臺上的Python解釋器,可以直接把Python代碼編譯成.Net的字節碼。
在Python的解釋器中,使用廣泛的是CPython,對于Python的編譯,除了可以采用以上解釋器進行編譯外,技術高超的開發者還可以按照自己的需求自行編寫Python解釋器來執行Python代碼,十分的方便!
9、列舉布爾值為False的常見值?
0, [] , () , {} , '' , False , None
10、字符串、列表、元組、字典每個常用的5個方法?
字符串: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表達式格式以及應用場景?
表達式格式:lambda后面跟一個或多個參數,緊跟一個冒號,以后是一個表達式。冒號前是參數,冒號后是返回值。例如:lambda x : 2x
應用場景:經常與一些內置函數相結合使用,比如說map(),filter(),sorted(),reduce()等
12、pass的作用?
①空語句do nothing;
②保證格式完整;
③保證語義完整。
13、arg和 *kwarg作用?
萬能參數,解決了函數參數不固定的問題
*arg:會把位置參數轉化為tuple
**kwarg:會把關鍵字參數轉化為dict
14、、is和==的區別?
is:判斷內存地址是否相等;
==:判斷數值是否相等。
15、、簡述Python的深淺拷貝以及應用場景?
copy():淺copy,淺拷貝指僅僅拷貝數據集合的第一層數據
deepcopy():深copy,深拷貝指拷貝數據集合的所有層
16、Python垃圾回收機制?
python采用的是引用計數機制為主,標記-清除和分代收集(隔代回收、分代回收)兩種機制為輔的策略
計數機制:
Python的GC模塊主要運用了引用計數來跟蹤和回收垃圾。在引用計數的基礎上,還可以通過“標記-清除”
解決容器對象可能產生的循環引用的問題。通過分代回收以空間換取時間進一步提高垃圾回收的效率。
標記-清除:
標記-清除的出現打破了循環引用,也就是它只關注那些可能會產生循環引用的對象。
缺點:該機制所帶來的額外操作和需要回收的內存塊成正比。
隔代回收:
原理:將系統中的所有內存塊根據其存活時間劃分為不同的集合,每一個集合就成為一個“代”,
垃圾收集的頻率隨著“代”的存活時間的增大而減小。也就是說,活得越長的對象,就越不可能是垃圾,
就應該減少對它的垃圾收集頻率。那么如何來衡量這個存活時間:通常是利用幾次垃圾收集動作來衡量,
如果一個對象經過的垃圾收集次數越多,可以得出:該對象存活時間就越長。
17、python的可變類型和不可變類型?
不可變類型(數字、字符串、元組、不可變集合);
可變類型(列表、字典、可變集合)。
18、Python里面search()和match()的區別?
match()函數只檢測RE是不是在string的開始位置匹配,search()會掃描整個string查找匹配, 也就是說match()只有在0位置匹配成功的話才有返回,如果不是開始位置匹配成功的話,match()就返回none
19、用Python匹配HTML tag的時候,<.*>和<.*?>有什么區別?
前者是貪婪匹配,會從頭到尾匹配 xyz,而后者是非貪婪匹配,只匹配到第一個 >。
20、Python里面如何生成隨機數?
import random;
random.random();
它會返回一個隨機的0和1之間的浮點數。
“python有哪些常見的面試題”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。