問題1
到底什么是Python?你可以在回答中與其他技術進行對比(也鼓勵這樣做)。
答案
下面是一些關鍵點:
Python是一種解釋型語言。這就是說,與C語言和C的衍生語言不同,Python代碼在運行之前不需要編譯。其他解釋型語言還包括PHP和Ruby。
Python是動態類型語言,指的是你在聲明變量時,不需要說明變量的類型。你可以直接編寫類似x=111和x="I'mastring"這樣的代碼,程序不會報錯。
Python非常適合面向對象的編程(OOP),因為它支持通過組合(composition)與繼承(inheritance)的方式定義類(class)。Python中沒有訪問說明符(accessspecifier,類似C++中的public和private),這么設計的依據是“大家都是成年人了”。
在Python語言中,函數是第一類對象(first-classobjects)。這指的是它們可以被指定給變量,函數既能返回函數類型,也可以接受函數作為輸入。類(class)也是第一類對象。
Python代碼編寫快,但是運行速度比編譯語言通常要慢。好在Python允許加入基于C語言編寫的擴展,因此我們能夠優化代碼,消除瓶頸,這點通常是可以實現的。numpy就是一個很好地例子,它的運行速度真的非常快,因為很多算術運算其實并不是通過Python實現的。
Python用途非常廣泛——網絡應用,自動化,科學建模,大數據應用,等等。它也常被用作“膠水語言”,幫助其他語言和組件改善運行狀況。
Python讓困難的事情變得容易,因此程序員可以專注于算法和數據結構的設計,而不用處理底層的細節。
為什么提這個問題:
如果你應聘的是一個Python開發崗位,你就應該知道這是門什么樣的語言,以及它為什么這么酷。以及它哪里不好。
問題2
補充缺失的代碼
defprint_directory_contents(sPath):
"""
這個函數接受文件夾的名稱作為輸入參數,
返回該文件夾中文件的路徑,
以及其包含文件夾中文件的路徑。
"""
#補充代碼
答案
dir_list=[]
defprint_directory_contents(sPath):
importos
forsChildinos.listdir(sPath):
sChildPath=os.path.join(sPath,sChild)
dir_list.append(sChildPath)
ifos.path.isdir(sChildPath):
print_directory_contents(sChildPath)
else:
print(sChildPath)
特別要注意以下幾點:
命名規范要統一。如果樣本代碼中能夠看出命名規范,遵循其已有的規范。
遞歸函數需要遞歸并終止。確保你明白其中的原理,否則你將面臨無休無止的調用棧(callstack)。
我們使用os模塊與操作系統進行交互,同時做到交互方式是可以跨平臺的。你可以把代碼寫成sChildPath=sPath+'/'+sChild,但是這個在Windows系統上會出錯。
熟悉基礎模塊是非常有價值的,但是別想破腦袋都背下來,記住Google是你工作中的良師益友。
如果你不明白代碼的預期功能,就大膽提問。
堅持KISS原則!保持簡單,不過腦子就能懂!
為什么提這個問題:
說明面試者對與操作系統交互的基礎知識
遞歸真是太好用啦
以上內容為大家介紹了python的面試題,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。