[Python Study Notes]python面試題

來源:互聯網
上載者:User

標籤:共用   節點   八進位   分代   單元   node   關閉   資料類型   地址   

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()分隔。

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

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()

答案

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]

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

      Python中的單元測試架構被稱為unittest。它支援共用設定,自動化測試,測試關機代碼,測試集合等。

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

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

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

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

14、__new__和__init__的區別(4分)

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的完美選擇,樣本參考如下:

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在加密或認證時不提供任何形式的安全性

[Python Study Notes]python面試題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.