本文目錄一覽:
- 1、python面試必備題目有哪些
- 2、最全的pandas面試基礎100題目
- 3、Python 面試高頻問題:cls到底是什麼
- 4、心得分享!Python面試都要做哪些準備?
- 5、python運維開發工程師面試常見問題有哪些
- 6、python面試題總結1-內存管理機制
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,卷積,快速搜索,基本統計,線性代數,直方圖等內置。
這些內容還是比較重要的,如果有幫到你,麻煩採納謝謝
最全的pandas面試基礎100題目
在進行下面的題目操作時,一定要先導入上面的兩個數據分析包 pandas、numpy
1. 如何用Python的列表創建一個series?
輸出:
一個series是一個一維的標記數組,可以容納任何數據類型(整數、字符串、浮點數、Python對象等)。必須記住,與Python列表不同,一個series總是包含相同類型的數據。
2.如何使用列表創建一個DataFrame?
輸出:
3.如何使用Series 字典對象生成 DataFrame?
輸出:
4.如何在pandas中創建一個空的DataFrame?
要創建一個完全空的pandas dataframe,我們使用以下操作:
輸出:
已知有這樣的數據,如何進行查看
輸出:
2.如何查看尾部數據?
3.如何快速查看數據的統計摘要?
4.如何查詢索引和列名?
1.簡述Pandas Index
在panda中建立索引意味着簡單地從DataFrame中選擇特定的數據行和列。
pandas支持四種類型的多軸索引,它們是:
它們統稱為索引器。這些是迄今為止索引數據最常見的方法。這四個函數有助於從DataFrame獲取元素、行和列。
2.Pandas 定義重新索引(Reindexing)
重新索引會更改DataFrame的行標籤和列標籤。重新索引意味着使數據符合特定軸上給定的一組標籤。
多個操作可以通過像這樣的索引來完成:
輸出:
3.如何設置索引?
panda set_index() 是一種將列表、序列或dataframe設置為dataframe索引的方法。
語法:
DataFrame.set_index(keys, inplace=False)
參數:
改變索引列
在本例中,名稱列被用作DataFrame的索引列
輸出:
如輸出圖像所示,以前索引列是一系列數字
Before Operation –
After Operation
4.如何重置索引?
Pandas Series.reset_index()
函數的作用是:生成一個新的DataFrame或帶有重置索引的Series。
例1: 使用 Series.reset_index() 函數重置給定Series對象的索引
輸出:
現在,我們將使用Series.reset_index()函數來重置給定的series對象的索引
輸出 :
從輸出中可以看到,該 Series.reset_index() 函數已將給定Series對象的索引重置為默認值。它保留了索引,並將其轉換為列。
1.1先創建數據:
1.2選擇單列,產生 Series
詳見 按標籤選擇 。
2.1用標籤提取一行數據:
詳見 按位置選擇 。
3.1用整數位置選擇:
4.1用單列的值選擇數據:
5.1用索引自動對齊新增列的數據:
1.如何得到一個數列的最小值、第25百分位、中值、第75位和最大值?
輸出:
Pandas dataframe.mean(axis=None) 函數返回所請求軸(axis=0代表對列進行求平均值,axis=1代表對行進行求平均值)的值的平均值。
示例: 使用 mean() 函數查找索引軸上所有觀測值的平均值。
輸出:
讓我們使用datafame .mean()函數來查找索引軸上的平均值。
3.如何將函數應用到DataFrame中的每個數據元素?
可以使用 apply() 函數以便將函數應用於給定dataframe中的每一行。讓我們來看看我們完成這項任務的方式。
實例:
輸出:
4.如何在panda中獲得一個DataFrame的行數和列數?
輸出:
獲取df的行和列計數
輸出:
5.如何在panda DataFrame中獲得列值的總和?
Pandas dataframe.sum() 函數返回所請求軸的值的和
語法: DataFrame.sum(axis=None, skipna=None, )
參數:
示例1: 使用 sum() 函數查找索引軸上所有值的總和
現在求出沿索引軸的所有值的和。我們將跳過計算和時的NaN值。
輸出:
如何將新行追加到pandas DataFrame?
Pandas dataframe.append() 函數的作用是:將其他dataframe的行追加到給定的dataframe的末尾,返回一個新的dataframe對象。
語法:
DataFrame.append( ignore_index=False,)
參數:
示例1: 創建兩個數據框,然後將第二個附加到第一個。
現在將df2附加到df1的末尾
輸出:
請注意,第二個DataFrame的索引值保留在附加的DataFrame中。如果我們不希望發生這種情況,則可以設置ignore_index = True。
輸出 :
“group by” 指的是涵蓋下列一項或多項步驟的處理流程:
詳見 分組 。
輸出:
1.先分組,再用 sum() 函數計算每組的匯總數據:
輸出:
2.多列分組後,生成多層索引,也可以應用 sum 函數:
輸出:
如何將numpy數組轉換為給定形狀的DataFrame?
輸出:
輸出:
透視表是一種可以對數據動態排布並且分類匯總的表格格式,在pandas中它被稱作pivot_table。
pivot_table(data, values=None, index=None, columns=None)
參數:
詳見: 數據透視表
打印輸出:
用上述數據生成數據透視表非常簡單:
返回結果:
1.如何將列添加到pandas DataFrame?
源數據:
輸出:
輸出:
2.如何向panda DataFrame添加索引、行或列?
向DataFrame添加索引
如果您創建了一個DataFrame, panda允許將輸入添加到索引參數中。它將確保您擁有所需的索引。否則,在默認情況下,DataFrame包含一個數值索引,該索引從0開始,在DataFrame的最後一行結束。
向DataFrame添加行、列
我們可以使用.loc、iloc和ix將行、列插入到DataFrame中。
添加具有特定索引名的行:
輸出:
3.如何在panda DataFrame上進行迭代?
您可以通過結合使用for循環和對DataFrame的iterrows()調用來遍歷DataFrame的行。
輸出:
4.我們如何排序DataFrame?
我們可以通過以下幾種有效地在DataFrame中執行排序:
(1)按標籤
可以使用sort_index()方法對數據dataframe進行排序。可以通過傳遞axis參數和排序順序來實現。默認情況下,按升序對行標籤進行排序。
Python 面試高頻問題:cls到底是什麼
上一篇文章介紹了什麼是python 中的self,詳情請參考:
Python面試高頻問題:self到底是什麼
簡單的說self是類(Class)實例化的對象。
面試中還有一個問題經常被提及,那就是——什麼是cls呢?
cls 是類(或子類)本身,取決於調用的是哪個類。
看下面的實例
輸出:
我們也可以通過實例的方法調用class method,例如:
同樣輸出
輸出:
使用cls 作為方法參數時,通常該方法需要由@classmethod 修飾,@classmethod修飾的方法表示的是類方法。這裡需要注意cls就是一個標識,你可以把他寫成abc,bcd都是可以的,只是出於習慣寫成了cls。
既然cls是一個類,那麼我們就可以使用他來進行實例化,具體代碼如下:
輸出:
可以看到通過obj1=cls()和obj2=cls(),成功創建了兩個實例,分別是0x000000690A1E0C08和0x000000690A1E0C48,而這兩個實例的類型都是MyClass3′
另外cls 還可以在python類中的方法 __new__里實現,通常定義為:
最後我們可以簡單地總結一下self 和 cls:簡單的說self是類(Class)實例化的對象。
cls 是類(或子類)本身。我們也可以方便地理解self表示實例的,cls則表示類的!
心得分享!Python面試都要做哪些準備?
首先,準備好簡歷。找工作,最開始競爭的是什麼?最開始競爭的是簡歷。你到任何一家公司應聘,第一件要做的事情就是投簡歷,簡歷是應聘公司了解你的第一窗口,也是應聘公司了解你的第一途徑。一份好的簡歷可以讓你在眾多的簡歷中脫穎而出,給招聘者留下深刻印象,然後決定給你面試通知,它是幫助你成功面試的敲門磚。
其次,對於Python常見面試問題要有了解。在面試前我們一定要通過各種渠道了解Python面試中常見的面試問題,做到心中有數。在Python的面試中,一些Python基本常識問題,有些面試官還是會考察的,如果你連基本的常識問題都回答不上來,那麼你後面的面試可能無法進行下去,如果能勉強進行下去,最後面試的成功率也會降低。
最後,在面試前準備一套大方得體的服裝。穿着得體表現的是對面試的尊重。穿着得體,會給面試官一種愉悅的心情。相反,如果你穿着比較邋遢,當面試官看到你的時候,會覺得你不注意細節,有的面試官甚至會懷疑你的工作能力,這樣會給面試官留下非常不好的印象,也可能最後導致面試的失敗。
如果在面試前你做好充足的準備,面試官會覺得你是一個對於工作認真、態度真誠的一個人,會增加心裡認同感,也會增加面試的成功率。
關於心得分享!Python面試都要做哪些準備,環球青藤小編就和大家分享到這裡了,學習是永無止境的,學習一項技能更是受益終身,所以,只要肯努力學,什麼時候開始都不晚。如果您還想繼續了解關於python編程的學習方法及素材等內容,可以點擊本站其他文章學習。
python運維開發工程師面試常見問題有哪些
面試python運維開發工程師每家公司對專業知識的考察側重點是不一樣的,下面給你整理了一些,希望能幫助到你!
python
1、python是強類型還是弱類型的語言
2、python的動態性體現在哪
3、python的namespace:四種;len()等函數的命名空間
4、range和xrange的區別,談到了迭代器
5、於是問怎麼實現迭代器,然後又問了生成器,yield語句
6、將list的中的一萬條字符串合成一條字符串的方法
7、python多線程(g il)
8、python的三目運算符有嗎? 怎麼用一行代碼實現三目運算
linux
1、問linux命令
2、top和ps在進程佔有資源率的統計方式有什麼不同
3、然後扯到了頁表,內存管理,TLB
5、linux文件系統:inode,inode存儲了哪些東西,目錄名,文件名存在哪裡
python面試題總結1-內存管理機制
(1).引用計數
(2). 垃圾回收
(3). 內存池機制
在python中每創建一個對象,對應的會有一個引用計數,當發生賦值操作如a=b,對應的b的引用計數會自動加1,當引用的對象被清除或者函數結束時,引用計數會自動減1。
在python中使用引用計數,標記清楚,分代回收三種方式進行垃圾回收。
其中,引用計數當對象的引用計數歸0時,對象會自動被清除。標記清除機制是首先遍歷所有對象,如果對象可達,就說明有變量引用它,則標記其為可達的。如果不可達,則對其進行清除。分代回收是當對象創建時被標記為第0代,經過一次垃圾回收之後,餘下的對象被標記為第1代,最高為第2代。其原理是,對象的生存期越長,月可能不是垃越。
ython語言雖然提供了對內存的垃圾收集機制,但實際上它將不用的內存放到內存池而不是返回給操作系統,所以就有了以下:
1 Pymalloc機制;這個主要是為了加速Python的執行效率,Python引入了一個內存池機制,用於管理,為了對小塊內存的申請和釋放。
2 Python中所有小於256個字節的對象都是依靠pymalloc分配器來實現的,而稍大的對象用的則是系統的malloc。
3 對於Python對象,比如整數、浮點數和List這些,都有自己獨立的內存池,對象間並不共享他們的內存池。換句話說就是,假設你分配並且釋放了大量的整數,那麼用於緩存這些整數的內存就不能再分配給浮點數。
原創文章,作者:WZTG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/149113.html