天天看點

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

  Python開發求職必知什麼?有哪些經典的面試題?Python文法簡單、功能強大,人才需求旺盛,是很多入行IT人士首選的程式設計語言。然而在學習理論技能、積累實戰經驗之餘,想要拿到高薪,我們一定要經曆一道坎,那就是面試。接下來千鋒小編就給大家分享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不僅效率更高; 它也更友善。你可以免費獲得大量的向量和矩陣運算,這有時可以避免不必要的工作。它們也得到有效實施。