python面試常見問題有:1、Python是如何被解釋的;2、什麼是PEP8;3、Python是怎樣管理記憶體的;4、什麼是Python裝飾器;5、Python提供哪些內建類型等等。
大量免費學習推薦,請造訪python教學(影片)
python面試常見問題有:
1、Python是什麼?簡述並說明優點和缺點?
Python是一種物件導向的解釋性電腦程式語言,它是結合了解釋性、編譯性、互動性和物件導向的腳本語言。
優點:開源、免費、簡單、易學、可移植、可擴展、易於維護、開發效率高。
缺點:運作速度慢、程式碼不能加密。
2、Python是如何被解釋的?
Python是一種解釋性語言,它的原始碼可以直接運作。 Python解釋器會將原始碼轉換成中間語言,之後再翻譯成機器碼再執行。
3、什麼是PEP8?
PEP8是一個程式規範,是讓程式更具可讀性的一些建議。
4、Python是怎麼管理記憶體的?
1)引用計數機制:Python內部使用引用計數,來保持追蹤記憶體中的物件。
2)垃圾回收機制:當一個物件的引用數歸零時,它將被垃圾收集機制處理掉;
3).記憶體池機制:
Python提供了對記憶體的垃圾收集機制,但是它將不用的內存放到記憶體池而不是傳回給作業系統:
Pymalloc機制:為了加速Python的執行效率,Python引入了一個記憶體池機制,用於管理對小塊記憶體的申請和釋放。
對於Python對象,如整數,浮點數和List,都有其獨立的私有記憶體池,物件間不共享他們的記憶體池。也就是說如果你分配又釋了大量的整數,用來快取這些整數的記憶體就不能再分配給浮點數。
Python裝飾器是一個函數,是Python中的特有變動,可以讓修改函數變得更容易。它可以使函數在不修改本身的函數定義外,動態產生額外的功能。
5、什麼是Python裝飾器?
Python裝飾器是一個函數,是Python中的特有變動,可以讓修改函數變得更容易。它可以使函數在不修改本身的函數定義外,動態產生額外的功能。
迭代器、生成器
可迭代對象:可以使用for-in遍歷的對象,都是可迭代對象
在Python中如果一個對像有__iter__ ( )方法或__getitem__( )方法,則稱這個物件是可迭代的(Iterable);其中__iter__( )方法的作用是讓物件可以用for ... in迴圈遍歷,__getitem__( )方法是讓物件可以透過「實例名[index]」的方式存取實例中的元素。換句話說,兩個條件只要滿足一條,就可以說物件是可迭代的。顯然列表List、元組Tuple、字典Dictionary、字串String等資料型別都是可迭代的。
迭代器:迭代器是存取集合元素的一種方式。能夠使用for-in進行遍歷,並能使用next函數進行迭代的物件
在Python中如果一個物件有__iter__( )方法和__next__( )方法,則稱這個物件是迭代器( Iterator);其中__iter__( )方法是讓物件可以用for ... in迴圈遍歷,__next__( )方法是讓物件可以透過next(實例名)存取下一個元素。注意:這兩個方法必須同時具備,才能稱之為迭代器。列表List、元組Tuple、字典Dictionary、字串String等資料型別雖然是可迭代的,但都不是迭代器,因為他們都沒有next( )方法。
6、函數閉包
引用了自由變數的函數就是一個閉包. 這個被引用的自由變數和這個函數一同存在, 即使已經離開了創造它的環境也不例外.
7、陣列和元組之間的區別是什麼?
陣列和元組之間的差異:陣列內容是可以被修改的,而元組內容是唯讀的。另外,元組可以被哈希,例如作為字典的關鍵字。
8、類別方法和靜態方法
method:透過實例調用,可以引用類別內部的任何屬性和方法
classmethod:無需實例化,可以呼叫類別屬性和類別方法,無法取到普通的成員屬性和方法
staticmethod:無需實例化,無法取到類別內部的任何屬性和方法, 完全獨立的一個方法
9、Python提供哪些內建類型?
整數(int)、字串(str)、元組(tuple)、布林(bool)、集合(set)、列表(list)、字典(dict)
10 、字典推導式和列表推導式是什麼?
它們是可以輕鬆建立字典和清單的語法結構。
參數是按值傳遞和引用傳遞是怎麼實現的?
Python中的一切都是類,所有的變數都是一個物件的參考。引用的值是由函數決定的,因此無法被改變。但是如果一個物件是可以被修改的,你可以改動物件。
11、Python中的lambda是什麼?
這是一個匿名函數,常被用於程式碼中的單一表達式。
12、Python中的pass是什麼?
pass是佔位符,用來表示空白,不被執行。
13、Python中淺拷貝和深拷貝的差別?
copy.copy()淺拷貝:拷貝了對象,但拷貝對象的值仍然是指向原始對象的值(相當於引用),修改拷貝對象的元素,則被拷貝對象的值也會被修改。
copy.deepcopy()深拷貝: 不僅拷貝了對象,同時也拷貝了對像中的元素,獲得了全新的對象,與被拷貝對象完全獨立;但這需要犧牲一定的時間和空間。
14、Python中的模組和套件是什麼?
在Python中,模組是搭建程式的一種方式。每一個Python程式碼檔案都是一個模組,並且可以引用其他的模組,例如物件和屬性。
一個包含許多Python程式碼的資料夾是一個套件。一個包可以包含模組和子資料夾。
以上是python面試常見問題有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!