本面試題題庫,由公號:非本科程序員 整理發布
第1題:是否遇到過python的模塊間循環引用的問題,如何避免它?
這是代碼結構設計的問題,模塊依賴和類依賴
如果老是覺得碰到循環引用可能的原因有幾點:
- 可能是模塊的分界線劃錯地方了
- 可能是把應該在一起的東西硬拆開了
- 可能是某些職責放錯地方了
- 可能是應該抽象的東西沒抽象
總之微觀代碼規范可能并不能幫到太多,重要的是更宏觀的劃分模塊的經驗技巧,推薦uml,腦圖,白板等等圖形化的工具先梳理清楚整個系統的總體結構和職責分工
采取辦法,從設計模式上來規避這個問題,比如:
-
使用
“__all__”
白名單開放接口 - 盡量避免 import
第2題:簡單介紹一下python函數式編程?
在函數式編程中,函數是基本單位,變量只是一個名稱,而不是一個存儲單元。
除了匿名函數外,Python還使用fliter(),map(),reduce(),apply()函數來支持函數式編程。
所以你的重點圍繞fliter(),map(),reduce().apply()來介紹就可以順利和面試官達成一致
第3題:python中函數裝飾器有什么作用?
裝飾器本質上是一個Python函數,它可以讓其他函數在不需要做任何代碼變動的前提下增加額外功能,裝飾器的返回值也是一個函數對象。
它經常用于有切面需求的場景,比如:
插入日志
、
性能測試
、
事務處理
、
緩存
、
權限校驗
等場景。
有了裝飾器,就可以抽離出大量與函數功能本身無關的雷同代碼并繼續重用。
第4題: 按照要求完成編碼?
寫一個函數,將兩個dict(key是數字,value是string)進行合并,函數返回合并后的dict。
規則如下:如果一個key僅僅存在于其中一個dict中,則直接加入合并后的dict;
如果一個key在兩個dict中都存在,那么給定一個choice值,choice可以是任何string,如果choice是任一個dict中的value,則寫入,否則不寫入。
代碼如下
def function(lefdict,rightdict,choice):
samelist=lefdict.keys() & rightdict.keys() # dict.keys()返回的是一個可迭代對象,取兩個dict的keys的交集
diflist = lefdict.keys() ^ rightdict.keys() # 取兩個dict的keys的不同集
newdict={}
for key,value in lefdict.items():
if key in diflist:
newdict[key]=value
elif key in samelist:
if value==choice:
newdict[key]=value
for key,value in rightdict.items():
if key in diflist:
newdict[key]=value
elif key in samelist:
if value==choice:
newdict[key]=value
print(samelist,diflist)
print(newdict)
return newdict
function({1:'a',2:'b',3:'c'},{4:'f',2:'b',3:'d'},'b')
第5題:按照要求完成編碼?
把一個字符串的尾字母移到首位,比如‘abcde’->‘eabcd’,稱為一次字符串的旋轉。如果字符串1的任何一次旋轉可以包含字符串2,則返回true,否則返回false,請寫一個函數實現。
代碼如下
def function(str1, str2):
str1 = str1[-1] + str1[:-1]
print(str1)
if str1.find(str2) != -1:
return True
else:
return False
print(function("abcde", "cde"))
第6題:關注題,最近在公號更新一個神奇的系列入門文章
更多內容,歡迎關注 https://dwz.cn/r4lCXEuL
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
