python 面試題總結

2022-06-07 17:42:14 字數 4813 閱讀 3323

1、有如下字典

dic =

如何通過值進行排序

答:

dic = 

a = sorted(dic, key=lambda

key: dic[key])

print(a)

2、如何對乙個列表進行排序?

答:

list = [50, 44, 33, 76, 89, 77, 30, 88]

list.sort()

print(list)

3、如何對乙個列表去重?

答:

#

方法一:

list1 = [50, 44, 33, 76, 89, 77, 30, 88, 88, 77]

list2 =

for i in

list1:

ifnot i in

list2:

print

(list2)

#方法二:

list1 = [50, 44, 33, 76, 89, 77, 30, 88, 88, 77]

a =list(set(list1))

print(a)

4、python遞迴的最大層數?

答:

998

5、pass的作用?

答:pass主要作用就是佔位,讓**整體完整.

6、is和==的區別

答:is 是記憶體比較而==是值的比較

7、列舉常見的內建函式?

答:

locals、globals、eval,exec

,complie

input、

print

、hash、id、range、next

bool、int、sum、min、max、reversed

slice、等

8、至少列舉8個常用模組都有那些?

答:

os、sys、time、datetime、json、random、hashlib、re等

9、re的match和search區別?

答:

#

match()函式只檢測re是不是在string的開始位置匹配,search()會掃瞄整個string查詢匹配;

10、什麼是裝飾器?

答:

#

裝飾器本質上就是乙個python函式,他可以讓其他函式在不需要做任何**變動的前提下,增加額外的功能,裝飾器的返回值也是乙個函式物件。

11、什麼是迭代器、生成器?

答:

#

迭代器 內部含有__iter__ 且含有__next__方法的物件就是迭代器,遵循迭代器協議。

#乙個包含yield關鍵字的函式就是乙個生成器函式。yield可以為我們從函式中返回值,但是yield又不同於return,return的執行意味著程式的結束,呼叫生成器函式不會得到返回的具體的值,而是得到乙個可迭代的物件。每一次獲取這個可迭代物件的值,就能推動函式的執行,獲取新的返回值。直到函式執行結束。

12、如何生成乙個隨機數?

答:

import

random

print(random.randint(1, 99999))

13、如何使用python刪除乙個檔案?

答:

import

osos.remove(

'path

')

14、python 的特點和優點是什麼?

答:

1. 解釋性

2. 動態特性

3. 物件導向

4. 語法簡潔

5. 開源

6. 豐富的社群資源

15、 深拷貝和淺拷貝的區別是什麼?

答:

#

對於淺copy來說,第一層建立的是新的記憶體位址,而從第二層開始,指向的都是同乙個記憶體位址,所以,對於第二層以及更深的層數來說,保持一致性。

#對於深copy來說,兩個是完全獨立的,改變任意乙個的任何元素(無論多少層),另乙個絕對不改變。

16、列表和元祖有什麼不同?

答:

#

主要區別在於列表是可變的,元祖是不可變的。

17、如何隨機打亂列表中元素,要求不引用額外的記憶體空間?

答:

#

我們用 random 包中的 shuffle() 函式來實現。

18、請解釋 python 中的閉包?

答:

#

如果在乙個內部函式裡。對在外部作用域(但不是在全域性作用域)的變數進行引用,那麼內部函式就是乙個閉包。

19、如何獲取字典中的所有鍵?

dic = 

for key in

dic.keys():

print(key)

20、什麼是python包?

#

簡單點說:包就是資料夾,但該資料夾下必須存在 __init__.py 檔案, 該檔案的內容可以為空。__init__.py 用於標識當前資料夾是乙個包。

21、什麼是序列化和非序列化?

答:

#

將原本的字典、列表等內容轉換成乙個字串的過程就叫做序列化。

#反序列化和上面相反將字串轉換成字典、列表等內容叫做反序列化

22、提到python中區域性變數和全域性變數的規則是什麼?

答:

#

區域性變數:如果在函式體內的任何位置為變數賦值,則假定它是本地的。

#全域性變數:僅在函式內引用的那些變數是隱式全域性變數。

23、物件導向深度優先和廣度優先是什麼?

答:

#

當類是經典類時,多繼承情況下,會按照深度優先方式查詢

#當類是新式類時,多繼承情況下,會按照廣度優先方式查詢

#經典類和新式類,從字面上可以看出乙個老乙個新,新的必然包含了跟多的功能,也是之後推薦的寫法,從寫法上區分的話,如果 當前類或者父類繼承了object類,那麼該類便是新式類,否則便是經典類。

24、物件導向中super的作用?

#

super() 函式是用於呼叫父類(超類)的乙個方法。

25、python物件導向中的繼承有什麼特點?

#

1、在繼承中基類的構造(__init__()方法)不會被自動呼叫,它需要在其派生類的構造中親自專門呼叫。有別於c#

#2、在呼叫基類的方法時,需要加上基類的類名字首,且需要帶上self引數變數。區別於在類中呼叫普通函式時並不需要帶上self引數

#3、python總是首先查詢對應型別的方法,如果它不能在派生類中找到對應的方法,它才開始到基類中逐個查詢。(先在本類中查詢呼叫的方法,找不到才去基類中找)。

26、請說說你程序、執行緒、協程的理解

#

程序(process)是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎

#程序是乙個實體。每乙個程序都有它自己的位址空間。通過multiprocess.process模組開啟程序

#執行緒是程序的乙個實體,是cpu排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位。通過thread模組來開啟執行緒

#協程:是單執行緒下的併發,又稱微執行緒,纖程。英文名coroutine。一句話說明什麼是執行緒:協程是一種使用者態的輕量級執行緒,即協程是由使用者程式自己控制排程的。通過gevent模組來實現

27、請說說你對gil鎖的理解

#

全域性直譯器鎖gil

#python的執行依賴於直譯器。python最初的設計理念在於,為了解決多執行緒之間資料完整性和狀態同步的問題,設計為在任意時刻只有乙個執行緒在直譯器中執行。而當執行多執行緒程式時,由gil來控制同一時刻只有乙個執行緒能夠執行。即python中的多執行緒是表面多執行緒,也可以理解為fake多執行緒,不是真正的多執行緒。

28、什麼是併發和並行?

#

並行 : 並行是指兩者同時執行,比如賽跑,兩個人都在不停的往前跑;(資源夠用,比如三個執行緒,四核的cpu )

#併發 : 併發是指資源有限的情況下,兩者交替輪流使用資源,比如一段路(單核cpu資源)同時只能過乙個人,a走一段後,讓給b,b用完繼續給a ,交替使用,目的是提高效率。

#區別:

#並行是從微觀上,也就是在乙個精確的時間片刻,有不同的程式在執行,這就要求必須有多個處理器。

#併發是從巨集觀上,在乙個時間段上可以看出是同時執行的,比如乙個伺服器同時處理多個session。

29、請解釋一下什麼是同步、非同步和阻塞、非阻塞?

#

所謂同步就是乙個任務的完成需要依賴另外乙個任務時,只有等待被依賴的任務完成後,依賴的任務才能算完成,這是一種可靠的任務序列。要麼成功都成功,失敗都失敗,兩個任務的狀態可以保持一致。

#所謂非同步是不需要等待被依賴的任務完成,只是通知被依賴的任務要完成什麼工作,依賴的任務也立即執行,只要自己完成了整個任務就算完成了。至於被依賴的任務最終是否真正完成,依賴它的任務無法確定,所以它是不可靠的任務序列。

#所謂阻塞,就是呼叫結果返回之前,該執行執行緒會被掛起,不釋放cpu執行權,執行緒不能做其它事情,只能等待,只有等到呼叫結果返回了,才能接著往下執行;所謂非阻塞,就是在沒有獲取呼叫結果時,不是一直等待,執行緒可以往下執行,如果是同步的,通過輪詢的方式檢查有沒有呼叫結果返回,如果是非同步的,會通知**。

#簡單點說:

#阻塞就是幹不完不准回來,

#非阻塞就是你先乾,我現看看有其他事沒有,完了告訴我一聲

30、請說說什麼是socket?

#

socket是應用層與tcp/ip協議族通訊的中間軟體抽象層,它是一組介面。

python面試題總結

每個py檔案被稱之為模組,每個具有 init py檔案的目錄被稱為包。import語句主要是做了二件事 查詢相應的module 載入module到local namespace 如果模組沒有被找到,則按照如下路徑進行搜尋 如果module沒有被找到,則按照下面的搜尋路徑查詢模組 py 所在檔案的目錄...

python面試總結 Python面試題總結

文件 為 從網路收集整理 word 版本可編輯 文件 為 從網路收集整理 word 版本可編輯 1.python 執行緒池原理?我理解為執行緒池是乙個存放很多執行緒的單位,同時還有乙個對應的任務佇列。整個執行過程其實就是使用執行緒池中已有有限的執行緒把任務佇列中的任務做完。這樣做的好處就是你不需要為...

面試題總結 html面試題)

附上鏈結 doctype 的作用是什麼?宣告一般位於文件的第一行,它的作用主要是告訴瀏覽器以什麼樣的模式來解析文件。一般指定了之後會以標準模式來 進行文件解析,否則就以相容模式進行解析。在標準模式下,瀏覽器的解析規則都是按照最新的標準進行解析的。而在相容模式下,瀏 覽器會以向後相容的方式來模擬老式瀏...