Python工程师求职必知的经典面试题!
最近幾年,學習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工程師求職必知的經典面試題上面已經為大家做了詳細的介紹,希望能夠幫助到大家。
本文來自千鋒教育,轉載請注明出處。
總結
以上是生活随笔為你收集整理的Python工程师求职必知的经典面试题!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java技巧:用一个循环语句输出九九乘法
- 下一篇: Python教程:Python内置数据结