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