Python面試題

            想找一份Python開發工做嗎?那你極可能得證實本身知道如何使用Python。下面這些問題涉及了與Python相關的許多技能,問題的關注點主要是語言自己,不是某個特定的包或模塊。每個問題均可以擴充爲一個教程,若是可能的話。某些問題甚至會涉及多個領域。

 問題1 

到底什麼是Python?你能夠在回答中與其餘技術進行對比(也鼓勵這樣作)。

答案

下面是一些關鍵點:

  Python是一種解釋型語言。這就是說,與C語言和C的衍生語言不一樣,Python代碼在運行以前不須要編譯。其餘解釋型語言還包括PHP和Ruby。
  Python是動態類型語言,指的是你在聲明變量時,不須要說明變量的類型。你能夠直接編寫相似x=111和x="I'm a string"這樣的代碼,程序不會報錯。
  Python很是適合面向對象的編程(OOP),由於它支持經過組合(composition)與繼承(inheritance)的方式定義類(class)。Python中沒有訪問說明符(access specifier,相似C++中的public和private),這麼設計的依據是「你們都是成年人了」。
  在Python語言中,函數是第一類對象(first-class objects)。這指的是它們能夠被指定給變量,函數既能返回函數類型,也能夠接受函數做爲輸入。類(class)也是第一類對象。
  Python代碼編寫快,可是運行速度比編譯語言一般要慢。好在Python容許加入基於C語言編寫的擴展,所以咱們可以優化代碼,消除瓶頸,這點一般是能夠實現的。numpy就是一個很好地例子,它的運行速度真的很是快,由於不少算術運算其實並非經過Python實現的。
  Python用途很是普遍——網絡應用,自動化,科學建模,大數據應用,等等。它也常被用做「膠水語言」,幫助其餘語言和組件改善運行情況。Python讓困難的事情變得容易,所以程序員能夠專一於算法和數據結構的設計,而不用處理底層的細節。

爲何提這個問題:

若是你應聘的是一個Python開發崗位,你就應該知道這是門什麼樣的語言,以及它爲何這麼酷。以及它哪裏很差。


  問題2

補充缺失的代碼

def print_directory_contents(sPath): """ 這個函數接受文件夾的名稱做爲輸入參數, 返回該文件夾中文件的路徑, 以及其包含文件夾中文件的路徑。 """ # 補充代碼

答案

def print_directory_contents(sPath): 
  import os for sChild in os.listdir(sPath): 
    sChildPath = os.path.join(sPath,sChild) 
if os.path.isdir(sChildPath): 
  print_directory_contents(sChildPath) 
else: 
  print sChildPath

特別要注意如下幾點:

  命名規範要統一。若是樣本代碼中可以看出命名規範,遵循其已有的規範。
  遞歸函數須要遞歸併終止。確保你明白其中的原理,不然你將面臨無休無止的調用棧(callstack)。
  咱們使用os模塊與操做系統進行交互,同時作到交互方式是能夠跨平臺的。你能夠把代碼寫成sChildPath = sPath + '/' + sChild,可是這個在Windows系統上會出錯。
  熟悉基礎模塊是很是有價值的,可是別想破腦殼都背下來,記住Google是你工做中的良師益友。
  若是你不明白代碼的預期功能,就大膽提問。堅持KISS原則!保持簡單,不過腦子就能懂!

爲何提這個問題:

說明面試者對與操做系統交互的基礎知識遞歸真是太好用啦
 
 問題3

閱讀下面的代碼,寫出A0,A1至An的最終值。

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]

答案

A0 = {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4}
A1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
A2 = []A3 = [1, 3, 2, 5, 4]
A4 = [1, 2, 3, 4, 5]
A5 = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
A6 = [[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]

爲何提這個問題:

列表解析(list comprehension)十分節約時間,對不少人來講也是一個大的學習障礙。若是你讀懂了這些代碼,就極可能能夠寫下正確地值。其中部分代碼故意寫的怪怪的。由於你共事的人之中也會有怪人。
相關文章
相關標籤/搜索