據說網易騰訊谷歌都在用Python,這份一百分自測卷你能得幾分?

編程語言 Python Memcached Flask IT168企業級 IT168企業級 2017-11-08

Python是一門學習曲線較為容易的編程語言,隨著人工智能時代的到來,Python迎來了新一輪的高潮。目前,國內知乎、網易(遊戲)、騰訊(某些網站)、搜狐(郵箱)、金山、豆瓣屬於使用Python較為知名的企業。國外YouTube、谷歌、Yelp、Slide等也或多或少在使用Python。如果你想應聘Python相關職位,不妨面試前自測一下自己對基礎知識掌握程度如何?下面是一張一百分的試卷,看看你自己能得幾分?

據說網易騰訊谷歌都在用Python,這份一百分自測卷你能得幾分?

1、什麼是pickling和unpickling?(1分)

Pickle模塊接受任何Python對象,並將其轉換為字符串,使用dump函數將其轉儲到文件中,這個過程稱為pickling。從存儲的字符串表示中檢索原始Python對象的過程稱為unpickling。

2、作為解釋型語言,Python如何運行?(1分)

Python是一種解釋型語言。Python程序直接從源代碼運行,將程序員編寫的源代碼轉換成中間語言,再將中間語言翻譯成必須執行的機器語言。

3、有哪些工具可以幫助查找錯誤或執行靜態分析?(2分)

PyChecker是一個靜態分析工具,用於檢測Python源代碼中的錯誤,並給出錯誤的類型和複雜性。Pylint是驗證模塊是否符合編碼標準的另一種工具。

4、按下述要求編寫代碼,實現以下功能:(5分)

(1)編寫代碼下載https://en.wikipedia.org/wiki/Machine_translation 頁面的內容並保存為mt.html

(2)統計mt.html中<p>標籤下所有單詞並存儲到mt_word.txt中,要求:

a) 每個單詞一行。單詞在前,單詞出現的次數在後,中間用Tab(\t)分隔。

b) 單詞按照數目從多到少排列。比如說單詞a出現了100次,單詞b出現了10次,則單詞a要在單詞b前面。

據說網易騰訊谷歌都在用Python,這份一百分自測卷你能得幾分?

5、下面的代碼會輸出什麼:(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]

6、閱讀下面的代碼,它的輸出結果是什麼?(6分)

class Node(object):

def __init__(self,sName):

self._lChildren = []

self.sName = sName

def __repr__(self):

return "<Node '{}'>".format(self.sName)

def append(self,*args,**kwargs):

self._lChildren.append(*args,**kwargs)

def print_all_1(self):

print self

for oChild in self._lChildren:

oChild.print_all_1()

def print_all_2(self):

def gen(o):

lAll = [o,]

while lAll:

oNext = lAll.pop(0)

lAll.extend(oNext._lChildren)

yield oNext

for oNode in gen(self):

print oNode

oRoot = Node("root")oChild1 = Node("child1")oChild2 = Node("child2")oChild3 = Node("child3")oChild4 = Node("child4")oChild5 = Node("child5")oChild6 = Node("child6")oChild7 = Node("child7")oChild8 = Node("child8")oChild9 = Node("child9")oChild10 = Node("child10")

oRoot.append(oChild1)oRoot.append(oChild2)oRoot.append(oChild3)oChild1.append(oChild4)oChild1.append(oChild5)oChild2.append(oChild6)oChild4.append(oChild7)oChild3.append(oChild8)oChild3.append(oChild9)oChild6.append(oChild10)

# 說明下面代碼的輸出結果

oRoot.print_all_1()oRoot.print_all_2()

答案

據說網易騰訊谷歌都在用Python,這份一百分自測卷你能得幾分?


7、Python中lambda是什麼意思?(1分)

它是一個經常用作內聯函數的單個表達式匿名函數。

8、為什麼python中的lambda表單沒有語句?(1分)

python中的lambda表單沒有語句,因為它用於創建新的函數對象,然後在運行時返回它們。

9、Python中的pass是什麼意思?(1分)

pass意味著沒有任何操作的Python語句,換句話說,它是複合語句中的一個佔位符,如果一個地方沒有什麼必須寫在那裡,就需要用上pass了。

10、閱讀下面的代碼,寫出A0,A1至An的最終值。(5分)

A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))

A1 = range(10)

A2 = [i for i in A1 if i in A0]

A3 = [A0[s] for s in A0]

A4 = [i for i in A1 if i in A3]

A5 = {i:i*i for i in A1}

A6 = [[i,i*i] for i in A1]

據說網易騰訊谷歌都在用Python,這份一百分自測卷你能得幾分?

11、什麼是Python的單元測試?(1分)

Python中的單元測試框架被稱為unittest。它支持共享設置,自動化測試,測試關機代碼,測試集合等。

12、在Python中unittest是什麼?(1分)

從列表,元組,字符串等序列類型中選擇一系列項目的機制被稱為unittest。

13、什麼是Python中的生成器?(1分)

實現迭代器的方式被稱為生成器。除了在函數中產生表達式之外,它是一個正常的函數。

14、__new____init__的區別(4分)

據說網易騰訊谷歌都在用Python,這份一百分自測卷你能得幾分?

15、如何複製Python中的對象?(2分)

要在Python中複製對象,一般情況下可以嘗試copy.copy()或copy.deepcopy()。不能複製所有的對象,但大多數還是可以的。

16、如何將數字轉換為字符串?(2分)

為了將數字轉換為字符串,使用內置函數str()。如果想要一個八進制或十六進制表示,使用內置函數oct()或 hex()。

17、Xrange和range有什麼區別?(2分)

Xrange返回一個xrange對象,而range返回一個數組。不管範圍多大,使用同樣的內存。

18、什麼是Python中的模塊和包?(3分)

在Python中,模塊是構造程序的方式。每個Python程序文件都是一個模塊,它導入其他模塊,如對象和屬性。

Python程序的文件夾是一個模塊包,包可以有模塊或子文件夾。

19、提到Python中的局部和全局變量的規則是什麼?(3分)

局部變量:如果一個變量在函數體內的任何地方被分配了一個新的值,它被認為是本地的。

全局變量:使用global定義的變量就是全局變量

當局部變量名字和全局變量名字重複時,局部變量會覆蓋掉全局變量。

20、怎樣才能跨模塊共享全局變量?(3分)

要在單個程序的模塊之間共享全局變量,請創建一個配置模塊。在應用程序的所有模塊中導入配置模塊,該模塊將作為跨模塊的全局變量提供。

21、解釋如何在Unix上創建一個Python腳本可執行文件?(4分)

要在Unix上創建Python腳本可執行文件需要做兩件事情:

  • Script文件的模式必須是可執行的

  • 第一行必須以#(#!/ usr / local / bin / python)開頭

22、Python垃圾回收機制(3分)

Python GC主要使用引用計數(reference counting)來跟蹤和回收垃圾。在引用計數的基礎上,通過“標記-清除”(mark and sweep)解決容器對象可能產生的循環引用問題,通過“分代回收”(generation collection)以空間換時間的方法提高垃圾回收效率。

23、解釋如何在Python中生成隨機數字?(3分)

要在Python中生成隨機數需要將命令導入

隨機導入:random.random()

這將返回範圍[0,1)中的隨機浮點數

24、解釋如何訪問用C語言編寫的Python模塊?(3分)

你可以通過下面的方法訪問一個用C寫成的模塊,

Module = = PyImport_ImportModule(“<modulename>”);

25、在Python中如何使用//運算符?(1分)

它是一個Floor Division Operator,用於將兩個操作數相除,結果為小數點前面的數字。例如,10 // 5 = 2和10.0 // 5.0 = 2.0。

26、提到使用Python的五個好處?(2分)

  • Python包含了大多數互聯網平臺(如電子郵件,HTML等)的巨大標準庫。

  • Python不需要顯式的內存管理,因為解釋器本身將內存分配給新變量並自動釋放它們

  • 由於使用方括號而提供易讀性

  • 易於初學者學習

  • 具有內置的數據類型,可以節省編程時間和工作量,從而聲明變量。

27、簡單說明在Python中如何使用split函數?(1分)

在Python中使用split函數是使用定義的分隔符將字符串分解成更短的字符串。它給出了字符串中所有單詞的列表。

28、解釋什麼是Flask及其好處?(2分)

Flask是一個基於“Werkzeug,Jinja 2和良好意圖”BSD許可的web微型框架,Werkzeug和jingja是它的兩個依賴項。

Flask是微觀框架的一部分。這意味著它將很少或不依賴於外部庫,它使框架輕而易舉,更新和安全漏洞更少。

29、Django,Pyramid和Flask有什麼區別?(3分)

Flask是一個“微框架”,主要用於需求更簡單的小型應用程序。在Flask中,你必須使用外部庫。

Pyramid是為更大的應用程序建立的。它提供了靈活性,並讓開發人員為他們的項目使用正確的工具。開發人員可以選擇數據庫,URL結構,模板樣式等等。Pyramid可重新配置。

像Pyramid一樣,Django也可以用於更大的應用程序。 它包括一個ORM。

30、Flask-WTF是什麼,有什麼特點?(3分)

Flask-WTF提供了與WTForms的簡單集成,功能包括

  • 與wtforms集成

  • 使用csrf令牌安全形式

  • 全球csrf保護

  • Reptcha支持

  • 與Flask Uploads一起使用的文件上傳

31、Flask腳本的常用方式是什麼?(1分)

應該是應用程序的導入路徑或Python文件的路徑

32、如何在Flask中訪問會話?(2分)

一個會話基本上允許記住從一個請求到另一個請求的信息。在Flask中,它使用簽名的cookie,以便用戶可以查看會話內容並進行修改。用戶可以修改會話,只要它有密鑰Flask.secret_key。

33、Flask是一個MVC模型嗎?如果是,可以示例一下嗎?(5分)

基本上,Flask是一個簡單的框架,其行為與MVC框架相同。所以MVC是Flask的完美選擇,示例參考如下:

據說網易騰訊谷歌都在用Python,這份一百分自測卷你能得幾分?

34、解釋Python Flask中的數據庫連接?(5分)

Flask支持數據庫驅動的應用程序(RDBS)。這樣的系統需要創建一個模式,將shema.sql文件傳送到sqlite3命令。所以需要sqlite3命令才能在Flask中創建或啟動數據庫。

Flask允許以三種方式請求數據庫

  • before_request():它們在請求前被調用並且不傳遞任何參數

  • after_request():它們在請求之後被調用並且傳遞將被髮送到客戶端響應

  • teardown_request():在引發異常的情況下調用,並且不保證響應。他們在響應結束後被調用。他們不允許修改請求,他們的值被忽略。

35、你有多個運行Python的Memcache服務器,其中一個memcacher服務器失敗,它有你的數據,它會試圖從那個失敗的服務器獲取關鍵數據嗎?(5分)

發生故障的服務器中的數據不會被刪除,但是可以為多個節點配置自動故障規定。可以在任何類型的套接字或Memcached服務器級錯誤期間觸發故障切換,而不會在正常的客戶端錯誤(如添加現有密鑰等)期間觸發。

36、解釋如何最大限度地減少Python開發中的Memcached服務器中斷?(5分)

  • 當一個實例失敗,這將在客戶端發出請求時重新加載丟失的數據,在數據庫服務器上承受更大的負載。為了避免這種情況,如果代碼已經寫入,儘量減少緩存的衝擊,那麼它將產生最小的影響

  • 另一種方法是使用丟失的機器IP地址在新機器上啟動Memcached實例

  • 代碼是最大限度減少服務器停機的另一種方法,因為它可以自由地以最少的工作更改Memcached服務器列表

  • 設置超時值是一些Memcached客戶端為Memcached服務器中斷實現的另一個選項。當Memcached服務器關閉時,客戶端將不斷嘗試發送請求,直到達到超時限制

37、解釋Python項目中應不應該使用Memcached?(5分)

Memcached常見的誤用是將其用作數據存儲,而不是用作緩存

  • 切勿使用Memcached作為運行應用程序所需信息的唯一來源,數據應該始終可以通過其他來源獲得

  • Memcached只是一個鍵或值存儲,不能對數據執行查詢或遍歷內容以提取信息

  • Memcached在加密或認證時不提供任何形式的安全性

總共一百分的試卷,你得了多少分呢?

相關推薦

推薦中...