當前位置:
首頁 > 最新 > Python面試 大牛教給你經驗

Python面試 大牛教給你經驗

今天聊了很多關於Python面試方面的一些問題.發現問的比較多的和Python相關的問題有那麼幾個

python面試最常用的面試題有哪些?

某個面試題感覺回答的不好, 問怎麼回答比較好.

有什麼面試經驗可以分享.

現在和大家分享一下總結的一些大牛的經驗

1.python下多線程的限制以及多進程中傳遞參數的方式?

python多線程有個全局解釋器鎖(global interpreter lock),這個鎖的意思是任一時間只能有一個線程使用解釋器,跟單cpu跑多個程序一個意思,大家都是輪著用的,這叫「並發」,不是「並行」。

多進程間共享數據,可以使用 multiprocessing.Value 和 multiprocessing.Array

2.Python是如何進行內存管理的?

Python引用了一個內存池(memory pool)機制,即Pymalloc機制(malloc:n.分配內存),用於管理對小塊內存的申請和釋放

內存池(memory pool)的概念:

當 創建大量消耗小內存的對象時,頻繁調用new/malloc會導致大量的內存碎片,致使效率降低。內存池的概念就是預先在內存中申請一定數量的,大小相等 的內存塊留作備用,當有新的內存需求時,就先從內存池中分配內存給這個需求,不夠了之後再申請新的內存。這樣做最顯著的優勢就是能夠減少內存碎片,提升效率。

內存池的實現方式有很多,性能和適用範圍也不一樣。

python中的內存管理機制——Pymalloc:

python中的內存管理機制都有兩套實現,一套是針對小對象,就是大小小於256bits時,pymalloc會在內存池中申請內存空間;當大於256bits,則會直接執行new/malloc的行為來申請內存空間。 關於釋放內存方面,當一個對象的引用計數變為0時,python就會調用它的析構函數。在析構時,也採用了內存池機制,從內存池來的內存會被歸還到內存池中,以避免頻繁地釋放動作。

3.什麼是lambda函數?它有什麼好處?

lambda 函數是一個可以接收任意多個參數(包括可選參數)並且返回單個表達式值的函數。 lambda 函數不能包含命令,它們所包含的表達式不能超過一個。不要試圖向lambda 函數中塞入太多的東西;如果你需要更複雜的東西,應該定義一個普通函數,然後想讓它多長就多長。

4.如何用Python輸出一個Fibonacci數列?

1 a,b = 0, 1

2 while b

3 print (b),

4 a, b = b, a+b

5.介紹一下Python中webbrowser的用法?

webbrowser模塊提供了一個高級介面來顯示基於Web的文檔,大部分情況下只需要簡單的調用open()方法。

webbrowser定義了如下的異常:

exception webbrowser.Error, 當瀏覽器控制項發生錯誤是會拋出這個異常

webbrowser有以下方法:

webbrowser.open(url[, new=0[, autoraise=1]])

這個方法是在默認的瀏覽器中顯示url, 如果new = 0, 那麼url會在同一個瀏覽器窗口下打開,如果new = 1, 會打開一個新的窗口,如果new = 2, 會打開一個新的tab, 如果autoraise = true, 窗口會自動增長。

webbrowser.open_new(url)

在默認瀏覽器中打開一個新的窗口來顯示url, 否則,在僅有的瀏覽器窗口中打開url

webbrowser.open_new_tab(url)

在默認瀏覽器中當開一個新的tab來顯示url, 否則跟open_new()一樣

webbrowser.get([name]) 根據name返回一個瀏覽器對象,如果name為空,則返回默認的瀏覽器

webbrowser.register(name, construtor[, instance])

註冊一個名字為name的瀏覽器,如果這個瀏覽器類型被註冊就可以用get()方法來獲取。

6.解釋一下python的and-or語法

與C表達式 bool ? a : b類似,但是bool and a or b,當 a 為假時,不會象C表達式 bool ? a : b 一樣工作

應該將 and-or 技巧封裝成一個函數:

def choose(bool, a, b):

因為 [a] 是一個非空列表,它永遠不會為假。甚至 a 是 0 或 "" 或其它假值,列表[a]為真,因為它有一個元素。

7.how do I iterate over a sequence in reverse order?

for x in reversed(sequence):

如果不是list, 最通用但是稍慢的解決方案是:

for i in range(len(sequence)-1, -1, -1): x = sequence[i]

8.Python是如何進行類型轉換的?

9.Python裡面如何實現tuple和list的轉換?

10.請寫出一段Python代碼實現刪除一個list裡面的重複元素?

11.Python如何實現單例模式?其他23種設計模式python如何實現?

12.Python裡面如何拷貝一個對象?

標準庫中的copy模塊提供了兩個方法來實現拷貝.一個方法是copy,它返回和參數包含內容一樣的對象.

使用deepcopy方法,對象中的屬性也被複制

13.如何用Python來進行查詢和替換一個文本字元串?

可以使用sub()方法來進行查詢和替換,sub方法的格式為:sub(replacement, string[, count=0])

replacement是被替換成的文本

string是需要被替換的文本

count是一個可選參數,指最大被替換的數量

14.Python裡面search()和match()的區別?

match()函數只檢測RE是不是在string的開始位置匹配,search()會掃描整個string查找匹配, 也就是說match()只有在0位置匹配成功的話才有返回,如果不是開始位置匹配成功的話,match()就返回none 。

15.有兩個序列a,b,大小都為n,序列元素的值任意整形數,無序?

要求:通過交換a,b中的元素,使[序列a元素的和]與[序列b元素的和]之間的差最小。

1. 將兩序列合併為一個序列,並排序,為序列Source

2. 拿出最大元素Big,次大的元素Small

3. 在餘下的序列S[:-2]進行平分,得到序列max,min

4. 將Small加到max序列,將Big加大min序列,重新計算新序列和,和大的為max,小的為min。

16.python程序中文輸出問題怎麼解決?

用encode和decode

如:

方法二:

在文件開頭加上

17.python如何捕獲異常?

(1)使用try和except語句來捕獲異常

捕獲到的IOError錯誤的詳細原因會被放置在對象e中,然後運行該python 異常處理的except代碼塊捕獲所有的異常

(2)用raise語句手工引發一個異常:

(3)採用sys模塊回溯最後的異常

18.python代碼得到列表list的交集與差集?

交集

差集

19.如何用Python來發送郵件?

可以使用smtplib標準庫。

以下代碼可以在支持SMTP監聽器的伺服器上執行。

20.介紹一下except的用法和作用?

Python的except用來捕獲所有異常,因為Python裡面的每次錯誤都會拋出一個異常,所以每個程序的錯誤都被當作一個運行時錯誤。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

敲黑板!Python與人工智慧到底是什麼關係?
Python 2與Python 3 的區別

TAG:Python |