酷播亮新聞
最棒的知識補給站

整理的最全 python常見面試題,記住後可直接上崗(1)

1、大資料的檔案讀取

① 利用生成器generator

②迭代器進行迭代遍歷:for line in file

2、迭代器和生成器的區別

1)迭代器是一個更抽象的概念,任何物件,如果它的類有next方法和iter方法返回自己本身。對於string、list、dict、tuple等這類容器物件,使用for迴圈遍歷是很方便的。在後臺for語句對容器物件呼叫iter()函式,iter()是python的內建函式。iter()會返回一個定義了next()方法的迭代器物件,它在容器中逐個訪問容器內元素,next()也是python的內建函式。在沒有後續元素時,next()會丟擲一個StopIteration異常

2)生成器(Generator)是建立迭代器的簡單而強大的工具。它們寫起來就像是正規的函式,只是在需要返回資料的時候使用yield語句。每次next()被呼叫時,生成器會返回它脫離的位置(它記憶語句最後一次執行的位置和所有的資料值)

區別:生成器能做到迭代器能做的所有事,而且因為自動建立了__iter__()和next()方法,生成器顯得特別簡潔,而且生成器也是高效的,使用生成器表示式取代列表解析可以同時節省記憶體。除了建立和儲存程式狀態的自動方法,當發生器終結時,還會自動丟擲StopIteration異常

3、裝飾器的作用和功能:

引入日誌

函式執行時間統計

執行函式前預備處理

執行函式後的清理功能

許可權校驗等場景

快取

4、簡單談下GIL:

Global Interpreter Lock(全域性直譯器鎖)

Python程式碼的執行由Python 虛擬機器(也叫直譯器主迴圈,CPython版本)來控制,Python 在設計之初就考慮到要在直譯器的主迴圈中,同時只有一個執行緒在執行,即在任意時刻,只有一個執行緒在直譯器中執行。對Python 虛擬機器的訪問由全域性直譯器鎖(GIL)來控制,正是這個鎖能保證同一時刻只有一個執行緒在執行。

在多執行緒環境中,Python 虛擬機器按以下方式執行:

1. 設定GIL

2. 切換到一個執行緒去執行

3. 執行:

a. 指定數量的位元組碼指令,或者

b. 執行緒主動讓出控制(可以呼叫time.sleep(0))

4. 把執行緒設定為睡眠狀態

5. 解鎖GIL

6. 再次重複以上所有步驟

在呼叫外部程式碼(如C/C++擴充套件函式)的時候,GIL 將會被鎖定,直到這個函式結束為止(由於在這期間沒有Python 的位元組碼被執行,所以不會做執行緒切換)。

5、find和grep

grep命令是一種強大的文字搜尋工具,grep搜尋內容串可以是正規表示式,允許對文字檔案進行模式查詢。如果找到匹配模式,grep列印包含模式的所有行。

find通常用來再特定的目錄下搜尋符合條件的檔案,也可以用來搜尋特定使用者屬主的檔案。

未完待續…………

寫在最後

前幾天有私信我要Python的學習資料,我連夜整理了一些有深度的Python教程和參考資料,從入門到高階的都有,檔案已經打包好了,正在學習Python的同學可以免費下載學習學習。檔案下載方式:點選我的頭像,關注後私信回覆「資料」即可下載。首先把程式碼擼起來!首先把程式碼擼起來!首先把程式碼擼起來!重要的事說三遍,哈哈。「程式設計是門手藝活」。什麼意思?得練啊。

如有侵權請來信告知:酷播亮新聞 » 整理的最全 python常見面試題,記住後可直接上崗(1)