學習Python這些面試題你都知道嗎?
學習完Python之後,接下來就要面臨找工作的問題,而在找工作之前,有一項準備十分重要,那就是刷面試題。在這裡小編為大家整理了一些Python面試題,希望對你有所幫助。
1、Python裡面如何複製一個物件?(賦值,淺複製,深複製的區別)
答:賦值(=),就是建立了物件的一個新的引用,修改其中任意一個變數都會影響到另一個。
淺複製:建立一個新的物件,但它包含的是對原始物件中包含項的引用(如果用引用的方式修改其中一個物件,另外一個也會修改改變){1,完全切片方法;2,工廠函式,如list();3,copy模組的copy()函式}
深複製:建立一個新的物件,並且遞迴的複製它所包含的物件(修改其中一個,另外一個不會改變){copy模組的deep.deepcopy()函式}
2、Python裡面match()和search()的區別?
答:re模組中match(pattern,string[,flags]),檢查string的開頭是否與pattern匹配。
re模組中research(pattern,string[,flags]),在string搜尋pattern的第一個匹配值。
>>>print(re.match(‘super’, ‘superstition’).span())
(0, 5)
>>>print(re.match(‘super’, ‘insuperable’))
None
>>>print(re.search(‘super’, ‘superstition’).span())
(0, 5)
>>>print(re.search(‘super’, ‘insuperable’).span())
(2, 7)
3、有沒有一個工具可以幫助查詢python的bug和進行靜態的程式碼分析?
答:PyChecker是一個python程式碼的靜態分析工具,它可以幫助查詢python程式碼的bug, 會對程式碼的複雜度和格式提出警告
Pylint是另外一個工具可以進行codingstandard檢查
4、簡要描述Python的垃圾回收機制(garbage collection)。
答案
這裡能說的很多。你應該提到下面幾個主要的點:
Python在記憶體中儲存了每個物件的引用計數(reference count)。如果計數值變成0,那麼相應的物件就會小時,分配給該物件的記憶體就會釋放出來用作他用。
偶爾也會出現引用迴圈(reference cycle)。垃圾回收器會定時尋找這個迴圈,並將其回收。舉個例子,假設有兩個物件o1和o2,而且符合o1.x == o2和o2.x == o1這兩個條件。如果o1和o2沒有其他程式碼引用,那麼它們就不應該繼續存在。但它們的引用計數都是1。
Python中使用了某些啟發式演算法(heuristics)來加速垃圾回收。例如,越晚建立的物件更有可能被回收。物件被建立之後,垃圾回收器會分配它們所屬的代(generation)。每個物件都會被分配一個代,而被分配更年輕代的物件是優先被處理的。
5、什麼是lambda函式?它有什麼好處?
答:lambda 表示式,通常是在需要一個函式,但是又不想費神去命名一個函式的場合下使用,也就是指匿名函式
lambda函式:首要用途是指點短小的回撥函式
lambda [arguments]:expression
>>> a=lambdax,y:x+y
>>> a(3,11)
6、請寫出一段Python程式碼實現刪除一個list裡面的重複元素
答:
1,使用set函式,set(list)
2,使用字典函式,
>>>a=[1,2,4,2,4,5,6,5,7,8,9,0]
>>> b={}
>>>b=b.fromkeys(a)
>>>c=list(b.keys())
>>> c
7、用Python匹配HTML tag的時候,<.*>和<.*?>有什麼區別?
答:術語叫貪婪匹配( <.*> )和非貪婪匹配(<.*?> )
例如:
test
<.*> :
test
<.*?> :
8、如何在一個function裡面設定一個全域性的變數?
答:解決方法是在function的開始插入一個global宣告:
def f()
global x
9、程式設計用sort進行排序,然後從最後一個元素開始判斷
a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]
a.sort()
last=a[-1]
for i inrange(len(a)-2,-1,-1):
if last==a[i]:
del a[i]
else:last=a[i]
print(a)
10、下面的程式碼在Python2中的輸出是什麼?解釋你的答案
def div1(x,y):
print "%s/%s = %s" % (x, y, x/y)
def div2(x,y):
print "%s//%s = %s" % (x, y, x//y)
div1(5,2)
div1(5.,2)
div2(5,2)
div2(5.,2.)
另外,在Python3中上面的程式碼的輸出有何不同(假設程式碼中的print語句都轉化成了Python3中的語法結構)?
在Python2中,程式碼的輸出是:
5/2 = 2
5.0/2 = 2.5
5//2 = 2
5.0//2.0 = 2.0
預設情況下,如果兩個運算元都是整數,Python2預設執行整數運算。所以,5/2 結果是2,而5./2結果是2.5
注意你可以透過下面的import語句來覆蓋Python2中的這一行為
from __future__ import division
還要注意“雙斜槓”(//)運算子將會一直執行整除,忽略運算元的型別。這就是為什麼5.0//2.0即使在Python2中結果也是2.0
但是在Python3並沒有這一行為。兩個運算元都是整數時,也不執行整數運算。在Python3中,輸出如下:
5/2 = 2.5
5.0/2 = 2.5
5//2 = 2
5.0//2.0 = 2.0
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2747338/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 面試官帶你學Android——面試中Handler 這些必備知識點你都知道嗎?面試Android
- 面試現場:這些常問的面試題你都會了嗎面試題
- 收藏!這些 IDE 使用技巧,你都知道嗎IDE
- 這些Python騷操作,你知道嗎?Python
- 學習Python,這些你瞭解嗎?Python
- 關於Linux系統,這些你都知道嗎?Linux
- 【面試篇】金九銀十面試季,這些面試題你都會了嗎?面試題
- 想要學習Python課程,這些問題你必須知道!Python
- 金三銀四跳槽季,這些面試題你都會了嗎?面試題
- redis為什麼變慢了?這些原因你都知道嗎Redis
- Chrome DevTools中的這些騷操作,你都知道嗎?Chromedev
- 關於Python學習的方法以及技巧,你都知道嗎?Python
- 最新阿里Java面試題,這些面試題你會嗎?阿里Java面試題
- 你說你懂計算機網路,那這些你都知道嗎計算機網路
- iOS這些小技巧你都知道嗎iOS
- 身為初學Java的你,這些IDE的優缺點你都知道嗎?JavaIDE
- 消除遊戲美術設計的這些套路,你都知道嗎?遊戲
- 遊戲影視美術設計也有套路,這些你都知道嗎?遊戲
- 超好用的macOS Monterey 隱藏功能,這些你都知道嗎Mac
- 讓iOS保持介面流暢的這些技巧,你都知道嗎iOS
- python是什麼?這些你都瞭解了嗎?Python
- 這些 SpringBoot 面試題你會嗎?Spring Boot面試題
- Linux常見面試題,這些你知道多少?Linux面試題
- Vue 常見面試問題,你可能都知道,但能答好嗎?Vue面試
- Python操作MySQL儲存,這些你都會了嗎?PythonMySql
- 這幾個好用的Python開源框架,你都知道嗎?Python框架
- 學習Linux,這些命令你都掌握了嗎?Linux
- 面試現場!月薪3w+的這些資料探勘SQL面試題你都掌握了嗎?SQL面試題
- 海外發行遊戲 這些涉稅問題你都知道嘛?遊戲
- SSD固態硬碟使用的五個誤區,這些你都知道嗎?硬碟
- 第四篇:Hyperion安裝配置,這些細節你都知道嗎
- 軟體測試這些你知道嗎?
- 介面中這些細節你知道嗎?
- 2017阿里,百度,京東java面試+筆試大合集,這些面試題你都會嗎?阿里Java筆試面試題
- Python——你應該知道這些Python
- 這些操作刪除console.log程式碼,你都知道嗎
- 前端面試題:你知道websocket嗎?前端面試題Web
- 速看!這8道嵌入式面試題你都會嗎?面試題