Python工程師求職必知的經典面試題!

千鋒武漢發表於2021-05-27

最近幾年,學習Python語言的同學越來越多,學成之後大家對於後期的面試都遇到了很多難題,小編這次為大家整理了一份關於Python工程師求職必知的經典面試題!希望能夠幫助到正在找Python工作的同學們。



Python工程師求職必知的經典面試題:


1、多執行緒使用Python是個好主意嗎?列出一些方法可以讓一些Python程式碼以並行方式執行。


答:Python不允許真正意義上的多執行緒。它有一個多執行緒包,但如果你想使用多執行緒來加速你的程式碼,那麼使用它通常不是一個好主意。Python有一個名為全域性直譯器鎖(Global Interpreter Lock(GIL))的結構。GIL確保每次只能執行一個“執行緒”。一個執行緒獲取GIL,做一點工作,然後將GIL傳遞到下一個執行緒。這種情況發生的很快,因此對於人眼看來,你的執行緒似乎是並行執行的,但它們實際上只是輪流使用相同的CPU核心。所有這些GIL傳遞都增加了執行的記憶體。這意味著如果你想讓程式碼執行得更快,那麼使用執行緒包通常不是一個好主意。


使用Python的執行緒包也是有原因的。如果你想同時執行一些東西,並且效率不是一個問題,那麼它就完全沒問題了。或者,如果你正在執行需要等待某些事情的程式碼(例如某些IO),那麼它可能會很有意義。但是執行緒庫不會讓你使用額外的CPU核心。


多執行緒可以外包到作業系統(透過多處理),一些呼叫Python程式碼的外部應用程式(例如,Spark或Hadoop),或者Python程式碼呼叫的一些程式碼例如:你可以使用你的Python程式碼呼叫一個C函式來完成昂貴的多執行緒事務。


2、這段程式碼輸出了什麼:


def f(x,l=[]):for i in range(x):l.append(i*i)print(l) f(2)f(3,[3,2,1])f(3)


答:[0, 1][3, 2, 1, 0, 1, 4][0, 1, 0, 1, 4]


3、如何在Python中管理記憶體?


Python中的記憶體管理由Python私有堆空間管理。所有Python物件和資料結構都位於私有堆中。程式設計師無權訪問此私有堆。Python直譯器負責處理這個問題。Python物件的堆空間分配由Python的記憶體管理器完成。核心API提供了一些程式設計師編寫程式碼的工具Python還有一個內建的垃圾收集器,它可以回收所有未使用的記憶體,並使其可用於堆空間。


4、range&xrange有什麼區別?


在大多數情況下,xrange和range在功能方面完全相同。它們都提供了一種生成整數列表的方法,唯一的區別是range返回一個Python列表物件,x range返回一個xrange物件。


這就表示xrange實際上在執行時並不是生成靜態列表。它使用稱為yielding的特殊技術根據需要建立值。該技術與一種稱為生成器的物件一起使用。因此如果你有一個非常巨大的列表,那麼就要考慮xrange。


5、Python中help()和dir()函式的用法是什麼?


Help()和dir()這兩個函式都可以從Python直譯器直接訪問,並用於檢視內建函式的合併轉儲。


help()函式:help()函式用於顯示文件字串,還可以檢視與模組,關鍵字,屬性等相關的使用資訊。


dir()函式:dir()函式用於顯示定義的符號。


6、NumPy中有哪些操作Python列表的函式?


Python的列表是高效的通用容器。它們支援(相當)有效的插入,刪除,追加和連線,Python的列表推導使它們易於構造和操作。


它們有一定的侷限性:它們不支援畫素化加法和乘法等“向量化”操作,並且它們可以包含不同型別的物件這一事實意味著Python必須儲存每個元素的型別資訊,並且必須執行型別排程程式碼在對每個元素進行操作時。


NumPy不僅效率更高; 它也更方便。你可以免費獲得大量的向量和矩陣運算,這有時可以避免不必要的工作。它們也得到有效實施。


NumPy陣列更快,你可以使用NumPy,FFT,卷積,快速搜尋,基本統計,線性代數,直方圖等內建。


Python工程師求職必知的經典面試題上面已經為大家做了詳細的介紹,希望能夠幫助到大家。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2774194/,如需轉載,請註明出處,否則將追究法律責任。

相關文章