面試題

1:#Python有哪些特點和優點?
作爲一門編程入門語言,Python主要有以下特點和優點:

可解釋

具有動態特性

面向對象

簡明簡單

開源

具有強大的社區支持

2:#深拷貝和淺拷貝之間的區別是什麼?
深拷貝就是將一個對象拷貝到另一個對象中,這意味着如果你對一個對象的拷貝做出改變時,不會影響原對象。在Python中,我們使用函數deepcopy()執行深拷貝,導入模塊copy,如下所示:

##>>> import copy
##>>> b=copy.deepcopy(a)
而淺拷貝則是將一個對象的引用拷貝到另一個對象上,所以如果我們在拷貝中改動,會影響到原對象。我們使用函數function()執行淺拷貝,使用如下所示:
##>>> b=copy.copy(a)

3:# 請寫一個Python邏輯,計算一個文件中的大寫字母數量
##>>> import os
##>>> os.chdir(‘C:\Users\lifei\Desktop’)
##>>> with open(‘Today.txt’) as today:
count=0
for i in today.read():
if i.isupper():
count+=1
print(count)

4:#怎麼移除一個字符串中的前導空格?
字符串中的前導空格就是出現在字符串中第一個非空格字符前的空格。我們使用方法Istrip()可以將它從字符串中移除。

##>>> ’ Ayushi '.lstrip()
結果:

‘Ayushi ’
可以看到,該字符串既有前導字符,也有後綴字符,調用Istrip()去除了前導空格。如果我們想去除後綴空格,就用rstrip()方法。

##>>> ’ Ayushi '.rstrip()
結果:

‘ Ayushi’

5:# 解釋一下Python中的繼承
當一個類繼承自另一個類,它就被稱爲一個子類/派生類,繼承自父類/基類/超類。它會繼承/獲取所有類成員(屬性和方法)。
繼承能讓我們重新使用代碼,也能更容易的創建和維護應用。Python支持如下種類的繼承:
單繼承:一個類繼承自單個基類
多繼承:一個類繼承自多個基類
多級繼承:一個類繼承自單個基類,後者則繼承自另一個基類
分層繼承:多個類繼承自單個基類
混合繼承:兩種或多種類型繼承的混合 更多關於繼承的內容,參見:
https://data-flair.training/blogs/python-inheritance/

6:#什麼是Flask?
Flask是Python編寫的一款輕量級Web應用框架。其 WSGI 工具箱採用 Werkzeug(路由模塊) ,模板引擎則使用 Jinja2。Flask使用 BSD 授權。其中兩個環境依賴是Werkzeug和jinja2,這意味着它不需要依賴外部庫。正因如此,我們將其稱爲輕量級框架。
Flask會話使用簽名cookie讓用戶查看和修改會話內容。它會記錄從一個請求到另一個請求的信息。不過,要想修改會話,用戶必須有密鑰Flask.secret_key。

7#在Python中是如何管理內存的?
解釋一:Python有一個私有堆空間來保存所有的對象和數據結構。作爲開發者,我們無法訪問它,是解釋器在管理它。但是有了核心API後,我們可以訪問一些工具。Python內存管理器控制內存分配。
另外,內置垃圾回收器會回收使用所有的未使用內存,所以使其適用於堆空間。

解釋二:從三個方面來說,一對象的引用計數機制,二垃圾回收機制,三內存池機制

	一、對象的引用計數機制
	
	Python內部使用引用計數,來保持追蹤內存中的對象,所有對象都有引用計數。
	
	引用計數增加的情況:
	
	1,一個對象分配一個新名稱
	
	2,將其放入一個容器中(如列表、元組或字典)
	
	引用計數減少的情況:
	
	1,使用del語句對對象別名顯示的銷燬
	
	2,引用超出作用域或被重新賦值
	
	sys.getrefcount( )函數可以獲得對象的當前引用計數
	
	多數情況下,引用計數比你猜測得要大得多。對於不可變數據(如數字和字符串),解釋器會在程序的不同部分共享內存,以便節約內存。
	
	二、垃圾回收
	
	1,當一個對象的引用計數歸零時,它將被垃圾收集機制處理掉。
	
	2,當兩個對象a和b相互引用時,del語句可以減少a和b的引用計數,並銷燬用於引用底層對象的名稱。然而由於每個對象都包含一個對其他對象的應用,因此引用計數不會歸零,對象也不會銷燬。(從而導致內存泄露)。爲解決這一問題,解釋器會定期執行一個循環檢測器,搜索不可訪問對象的循環並刪除它們。
	
	三、內存池機制
	
	Python提供了對內存的垃圾收集機制,但是它將不用的內存放到內存池而不是返回給操作系統。
	
	1,Pymalloc機制。爲了加速Python的執行效率,Python引入了一個內存池機制,用於管理對小塊內存的申請和釋放。
	
	2,Python中所有小於256個字節的對象都使用pymalloc實現的分配器,而大的對象則使用系統的malloc。
	
	3,對於Python對象,如整數,浮點數和List,都有其獨立的私有內存池,對象間不共享他們的內存池。也就是說如果你分配又釋放了大量的整數,用於緩存這些整數的內存就不能再分配給浮點數。

8:#單引號,雙引號,三引號的區別?

答:單引號和雙引號是等效的,如果要換行,需要符號(),三引號則可以直接換行,並且可以包含註釋

如果要表示Let’s go 這個字符串

單引號:s4 = ‘Let\’s go’

雙引號:s5 = “Let’s go”

s6 = ‘I realy like“python”!’

這就是單引號和雙引號都可以表示字符串的原因了

#快速排序,遞歸算法 O(nlogn)

9:#遞歸快速排序
def quicksort(list):
if len(list)<2:
return list #基線條件,爲空或者只包含一個元素的數組是有序的
midpivot = list[0]#遞歸條件
lessbeforemidpivot = [i for i in list[1:] if i<=midpivot]#小於基準值的元素組成的子數組
biggeraftermidpivot = [i for i in list[1:] if i > midpivot]#大於基準值的元素組成的子數組
finallylist = quicksort(lessbeforemidpivot)+[midpivot]+quicksort(biggeraftermidpivot)
return finallylist

print(quicksort([2,4,6,7,1,2,5]))

10:# 輸入某年某月某日,判斷這一天是這一年的第幾天?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章