Python 面試題整理1
阿新 • • 發佈:2017-08-13
歸並 遞歸函數 color 算術 div microsoft 變量 ldp 路徑
參考網頁:15 Essential Python Interview Questions
1. 什麽是Python?
可以在回答中與其他技術作對比(鼓勵這麽做);如果應聘的是一個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讓困難的事情變得容易,因此程序員可以專註於算法和數據結構的設計,而不用處理底層的細節
2. 補充缺失的代碼: 函數的定義
def print_directory_contents(sPath):
"""
這個函數接受文件夾的名稱作為輸入參數,
返回該文件夾中文件的路徑,
以及其包含文件夾中文件的路徑。
"""
# 補充代碼
註意點:
- 命名規範要統一。如果樣本代碼中能夠看出命名規範,遵循其已有的規範。
- 遞歸函數需要遞歸並終止。確保你明白其中的原理,否則你將面臨無休無止的調用棧(callstack)。
- 我們使用
os
模塊與操作系統進行交互,同時做到交互方式是可以跨平臺的。你可以把代碼寫成sChildPath = sPath + ‘/‘ + sChild
- 熟悉基礎模塊是非常有價值的,但是別想破腦袋都背下來,記住Google是你工作中的良師益友。
- 如果你不明白代碼的預期功能,就大膽提問。
- 堅持KISS原則!保持簡單,不過腦子就能懂!
草考答案:
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
3. 列表問題:
閱讀下面的代碼,寫出A0,A1至An的最終值
A0 = dict(zip((‘a‘,‘b‘,‘c‘,‘d‘,‘e‘),(1,2,3,4,5)))
A1 = range(10)
A2 = sorted([i for i in A1 if i in A0])
A3 = sorted([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 面試題整理1