當前位置:首頁 >教程首頁 > IT 學院 > 人工智能+Python開發工程師班 >Python麵試必備!附詳細講解

Python麵試必備!附詳細講解

發布時間:2019-05-06 10:19:42

無論是應聘Python方向的web開發,還是爬蟲工程師,或是數據分析,還是自動化運維,都涉及到一些基礎的知識!小編彙總了一些Python的基礎麵試題,看看你能不能的答上來,Python麵試必備,找工作的同學速速來收!

1.jpg

1.Python這麼好,說說它的特性吧

關鍵特性

Python是一種解釋型語言,這意味著,與C,C++不同,Python不需要在運行之前進行編譯。它是邊運行邊解釋的。

Python是動態類型化的,這意味著當你聲明它們或類似的東西時,你不需要聲明變量的類型。你可以x=1 ,然後x="abc"是沒有錯誤。

Python非常適合麵向對象編程,因為它允許定義類以及組合和繼承。Python沒有訪問修飾符。

在Python中函數是一等對象,這意味著它們可以在運行時動態創建,能賦值給變量或者作為參數傳給函數,還能作為函數的返回值。

Python代碼容易上手,開發速度很快,但運行速度通常比編譯語言慢。幸運的是,Python允許包含基於C的擴展,所以瓶頸可以被優化掉。

2.單引號、雙引號和三引號之間的區別

單引號和雙引號主要是用來表示字符串

比如:

單引號:'python'

雙引號:"python"

區別:

若你的字符串裏麵本身包含單引號,必須用雙引號包裹。

比如:"can't find the log "

三引號

三單引號:'''python ''',也可以表示字符串一般用來輸入多行文本,或者用於大段的注釋。

三雙引號:"""python""",一般用在類裏麵,用來注釋類,這樣省的寫文檔,直接用類的對象doc訪問獲得文檔。

3.Python裏麵如何拷貝一個對象?

標準庫中的copy模塊提供了兩個方法來實現拷貝.一個方法是copy,它返回和參數包含內容一樣的對象.

使用deepcopy方法,對象中的屬性也被複製

4.Python的參數傳遞,是值傳遞還是引用傳遞?

Python的參數傳遞有:

位置參數

默認參數

可變參數

關鍵字參數

函數的傳值到底是值傳遞還是引用傳遞,要看情況

不可變參數用值傳遞:

比如像整數和字符串這樣的不可變對象,是通過拷貝進行傳遞的,因為你無論如何都不可能在原處改變不可變對象。

可變參數是用引用傳遞:

比如像列表,字典這樣的對象是通過引用傳遞,和C語言裏麵的用指針傳遞數組很相似,可變對象能在函數內部改變。

2.jpg

5.什麼是lambda函數?它的好處是什麼?

lambda 表達式,通常是在需要一個函數,但是又不想費神去命名一個函數的場合下使用,也就是指匿名函數。

lambda函數:首要用途是指點短小的回調函數。

lambda [arguments]:expression

>>> a=lambdax,y:x+y

>>> a(3,11)

好處:

lambda能和def做同樣種類的工作,特別是對於那些邏輯簡單的函數,直接用lambda會更簡潔,而且省去取函數名的麻煩。

6.字符串格式化: %和 .format的區別是什麼?

字符串的format函數非常靈活,很強大,可以接受的參數不限個數,並且位置可以不按順序,而且有較為強大的格式限定符(比如:填充、對齊、精度等)。

7.Python是如何進行內存管理的?

Python引用了一個內存池(memory pool)機製,即Pymalloc機製(malloc:n.分配內存),用於管理對小塊內存的申請和釋放

內存池(memory pool)的概念:

當創建大量消耗小內存的對象時,頻繁調用new/malloc會導致大量的內存碎片,致使效率降低。內存池的概念就是預先在內存中申請一定數量的,大小相等 的內存塊留作備用,當有新的內存需求時,就先從內存池中分配內存給這個需求,不夠了之後再申請新的內存。這樣做最顯著的優勢就是能夠減少內存碎片,提升效率。

內存池的實現方式有很多,性能和適用範圍也不一樣。

python中的內存管理機製——Pymalloc:

python中的內存管理機製都有兩套實現,一套是針對小對象,就是大小小於256bits時,pymalloc會在內存池中申請內存空間;當大於256bits,則會直接執行new/malloc的行為來申請內存空間。 關於釋放內存方麵,當一個對象的引用計數變為0時,python就會調用它的析構函數。在析構時,也采用了內存池機製,從內存池來的內存會被歸還到內存池中,以避免頻繁地釋放動作。

8.如何用Python來進行查詢和替換一個文本字符串?

可以使用sub()方法來進行查詢和替換,sub方法的格式為:sub(replacement, string[, count=0])

replacement是被替換成的文本

string是需要被替換的文本

count是一個可選參數,指最大被替換的數量

9.Python裏麵search()和match()的區別?

match()函數隻檢測RE是不是在string的開始位置匹配,search()會掃描整個string查找匹配, 也就是說match()隻有在0位置匹配成功的話才有返回,如果不是開始位置匹配成功的話,match()就返回none 。

10.線程如何在Python中實現

Python有一個多線程包threading,可以使用多線程來加快你的代碼。但是Python有一個叫做Global Interpreter Lock(GIL)的構造。GIL確保隻有一個'線程'可以在任何時候執行。

線程獲取GIL,做一些工作,然後將GIL傳遞到下一個線程。這種情況發生得非常快,所以對於人眼而言,它可能看起來像你的線程並行執行,但它們實際上隻是輪流使用相同的CPU內核。因此GIL的存在使得Python中的多線程無法真正的利用多核的優勢來提高性能。

對於IO密集型操作,在等待操作係統返回的時候會釋放GIL;再比如爬蟲因為有等待的服務器的響應時間,可以利用多線程來加速!但是對於CPU密集型操作,隻能通過多進程Multiprocess來加速。

11.Python的參數傳遞,是值傳遞還是引用傳遞?

Python的參數傳遞有:

位置參數

默認參數

可變參數

關鍵字參數

函數的傳值到底是值傳遞還是引用傳遞,要看情況

不可變參數用值傳遞:

比如像整數和字符串這樣的不可變對象,是通過拷貝進行傳遞的,因為你無論如何都不可能在原處改變不可變對象。

可變參數是用引用傳遞:

比如像列表,字典這樣的對象是通過引用傳遞,和C語言裏麵的用指針傳遞數組很相似,可變對象能在函數內部改變。

3.jpg

12.數據倉庫是什麼?

數據倉庫是一個麵向主題的、集成的、穩定的、反映曆史變化的、隨著時間的流逝發生變化的數據集合。它主要支持管理人員的決策分析。

數據倉庫收集了企業相關內部和外部各個業務係統數據源、歸檔文件等一係列曆史數據,最後轉化成企業需要的戰略決策信息。

特點:

(1)麵向主題:根據業務的不同而進行的內容劃分;

(2)集成特性:因為不同的業務源數據具有不同的數據特點,當業務源數據進入到數據倉庫時,需要采用統一的編碼格式進行數據加載,從而保證數據倉庫中數據的唯一性;

(3)非易失性:數據倉庫通過保存數據不同曆史的各種狀態,並不對數據進行任何更新操作。

(4)曆史特性:數據保留時間戳字段,記錄每個數據在不同時間內的各種狀態。

來源:技術學派頭條號

华体会hth体育网 賞析
  • 2101期學員李思庭作品

    2101期學員李思庭作品

  • 2104期學員林雪茹作品

    2104期學員林雪茹作品

  • 2107期學員趙淩作品

    2107期學員趙淩作品

  • 2107期學員趙燃作品

    2107期學員趙燃作品

  • 2106期學員徐正浩作品

    2106期學員徐正浩作品

  • 2106期學員弓莉作品

    2106期學員弓莉作品

  • 2105期學員白羽新作品

    2105期學員白羽新作品

  • 2107期學員王佳蕊作品

    2107期學員王佳蕊作品

專業問題谘詢

你擔心的問題,火星幫你解答

微信掃碼入群領福利

掃碼領福利最新AI資訊

點擊谘詢
添加老師微信,馬上領取免費課程資源

1. 打開微信掃一掃,掃描左側二維碼

2. 添加老師微信,馬上領取免費課程資源

×

同學您好!

您已成功報名0元試學活動,老師會在第一時間與您取得聯係,請保持電話暢通!
確定