程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python面試題總結(二)

編輯:Python

1、簡述any()和all()方法

any():只要迭代器對象中有一個元素為真就為真
all():迭代器中所有的判斷項返回都是真,結果才為真

python中什麼元素為假?

0、空字符串、None、False、空列表、空字典、空元組、空集合

data=[1,4,6,3,7,0]
print(any(data))
data1=[1,0,0,0]
print(any(data1))
data2=[0,0,0,0]
print(any(data2))

打印結果依次為:
True
True
False

data=[1,4,6,3,7,8]
print(all(data))
data1=[1,0,0,0]
print(all(data1))
data2=[0,0,0,0]
print(all(data2))

打印結果依次為:
True
False
False

2、常見的異常

IOError:輸入輸出異常
AttributeError:試圖訪問一個對象沒有屬性
ImportError:無法引入模塊和包,,基本是路徑的問題
IndentationError::語法錯誤,代碼沒有正確的對齊
IndexError:下標索引超出序列邊界
KeyError:試圖訪問字典中不存在的鍵
SyntaxError:代碼邏輯語法錯誤,不能執行
NameError:使用一個還未賦予對象的變量

3、簡述同源策略

同源策略需要同時滿足3點要求

協議相同
域名相同
端口相同

舉例來說:
http://www.example.com/dir/page.html
協議是 http://
域名是 www.example.com
端⼝是 80(默認端⼝可以省略)


同源政策的⽬的,是為了保證⽤戶信息的安全,防⽌惡意的⽹站竊取數據。

4、簡述悲觀鎖和樂觀鎖

悲觀鎖:每次去拿數據的時候都認為別人會去修改,所以每次拿數據的時候都會上鎖,這樣別人想拿這個數據就會block直到它拿到鎖。傳統的關系型數據庫裡面就用到了很多這種鎖機制,比如行鎖、表鎖、讀鎖、寫鎖等,都是在操作之前先上鎖
樂觀鎖:每次去拿數據的時候都認為別人不會修改,所以不會上鎖,但是在更新的時候會判斷一下在此期間別人有沒有更新這個數據,可以使用版本號機制。

5、分別從前端、後端、數據庫闡述web項目的性能優化

後端:
1、對於緩沖存儲讀寫次數高、變化少的數據,比如網站首頁的信息。應用程序讀取數據時,一般是先從緩沖中給讀取,如果讀取不到或者數據已經失效,再訪問磁盤數據庫,並將數據再次寫入緩沖。

2、異步方式,如果有耗時操作,采用異步,celery
3、代碼優化,避免循環和判斷次數太多,如果有多個if else判斷,優先判斷最有可能先發生的情況。

數據庫優化
1、如有條件,數據可以存放redis,讀取速度快
2、建立索引、外鍵

前端:
1、html和css放在頁面的上部,javascript放在頁面下方,因為javascript加載比html和css加載慢,所以要優先加載html和css,以防頁面顯示不全,性能差,影響用戶體驗。

6、舉例說明SQL注入和解決辦法



7、python引用計數機制

python垃圾回收機制主要以引用計數為主,標記清除和分代清楚為輔的機制

引用計數算法

當有1個變量保存了對象的引用時,此對象的引用計數就會加1;
當使用del刪除變量指向的對象時,如果對象的引用計數不為1,比如3,那麼此時只會讓引用計數減1,即變為2;
當再次調用del時,變為1;
如果再調用1次del,此時會真的把對象進行刪除。

class Animal(object):
def __init__(self,name):
self.name=name
def __del__(self):
print('{}對象馬上被干掉了'.format(self.name))
if __name__ == '__main__':
cat=Animal('波斯貓')
cat1=cat
cat2=cat
print(id(cat), id(cat1), id(cat2))
print('馬上刪除cat對象')
del cat
print('馬上刪除cat1對象')
del cat1
print('馬上刪除cat2對象')
del cat2

執行結果:
1949389517488 1949389517488 1949389517488
馬上刪除cat對象
馬上刪除cat1對象
馬上刪除cat2對象
波斯貓對象馬上被干掉了

8、給定2個字符串A=“abcdefg”,B=“abfyt”,得到兩個字符串中相同字符組成新的字符串

A="abcdefg"
B="abfyt"
list=[]
for i in A:
for j in B:
if i==j:
list.append(i)
print(list)
res=''.join(list)
print(res)


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved