Python面試可能會問到的問題,你會幾個?
- 2019 年 10 月 6 日
- 筆記
隨著Python時代的到來(AI會用到Python,區塊鏈會用到Python,大數據會用到Python,自動化會用到Python…….Python好像無所不能了

我們現在的Python職位越來越多,Python工程師也越來越多了,大家都爭先恐後的去搞Python,搞什麼人工智慧了,就包括一些其他行業小白也想進軍人工智慧市場了

,AI這麼火真的是誰都可以做嗎?小編當初畢業的時候做的是Java,後來換到做了Python,當時就覺得做Python一是簡單,二是需求量大,還有就是項目結束的時候用它編寫自動化腳本來的更方便些。

對於那些培訓班說,學了Python就能懂AI的就純屬瞎扯淡,花哥兩萬塊去某內做個培訓Python你就是AI工程師了?你就會深度學習了?你就會在AI界有立足之地了?
哦哦,那你學的不是AI,應該是API。
不是所有人都有天賦有能力來做這個行業的,大學高數線代離散都沒及格的就想從Java進軍人工智慧市場,那你就省省吧,畢竟如果連最基本的線代離散都不會,這樣的AI我看不是AI,是BI(悲哀)!

真的,如果你不像小編線代離散績點都逼近4.0的,那你就好好做Java吧,機器學習什麼的真的不是你該玩的,尤其是培訓班,就更不要去了。當然如果你是做開發轉測試,那這個還好,這個一般培訓培訓(或者自己學學)就能掌握了,應該沒什麼太大的難度。
總而言之就是不要看到什麼火就去做什麼,盲目跟風只會毀了自己,尤其是花高價錢去某內培訓,然後出來發現自己和原來並沒有什麼兩樣,只不過會調api了,會看Python程式碼了,然後就沒有然後了。。。。
出於自己對自己負責的心態,如果真的想學AI,你可以去coursera上看看吳恩達的教程(開始是免費的,應該夠你學了),如果能看得懂,做的會,那恭喜你,你可以考慮進軍AI市場了,當然,這只是開始,後面調參,量化,剪枝,防擬合會有你受的,總而言之,這並不是一條簡單的道路,任何光鮮的背後都是枯燥無味的。
還有一點要說的是,Python只是一門語言,任何情況下語言都只是一門工具,你做的事情才是最後的結果,所以別聽那些培訓班胡說八道,學了Python就是學了AI,真正的AI是要從理論學起的,或者說AI的課程就是理論與計算,與Python無關,Python只是提供了相關的庫,方便你調用而已,給你兩行程式碼告訴你這是分類聚合,即使你看的懂API,可你真的懂嗎?我想大家應該是心知肚明的,沒有好的數學功底就好好當碼農吧,其實挖程式碼也挺不錯的,久而久之你挖的程式碼也能幫你找回你作為程式猿的自信呢!
廢話說了那麼多,下面來看看Python面試可能會遇到的知識點吧(純Python知識點)
lambda函數是什麼?
lambda 表達式,通常是在需要一個函數,但是又不想費神去命名一個函數的場合下使用,也就是指匿名函數
lambda函數:首要用途是指點短小的回調函數
lambda [arguments]:expression
Python中pass是幹嘛的?
pass語句不會執行任何操作,一般作為佔位符或者創建佔位程式。
while False:
pass
(看到它就像沒看到就行)
如何在一個函數裡面設置一個全局的變數?
解決方法:在函數的開始插入一個global聲明:
def foo()
global x
匹配HTML標籤的時候,<.*>和<.*?>有什麼區別?
沒有問號是貪婪模式,有問號是懶惰模式,如果是沒有問號,它可以連續匹配多個相同的目標標籤,如果是加了?變成懶惰模式,它就會匹配到一個就停止匹配。
a=[1, 2, 3, 4, 5],列表a中的偶數位置的元素進行加3後求和?
sums = sum(map(lambda x: x + 3, a[1::2]))
列表的sort方法和 sorted的區別是什麼?
sort 是list的方法,改變list對象的順序,返回值為None sorted是Python的內置方法,適用iterable對象,返回值是新列表,不影響原來的iterable的順序
有一篇英文文章保存在 a.txt 中,請用python實現統計這篇文章內每個單詞的出現頻率,並返回出現頻率最高的前10個單詞及其出現次數(只考慮空格,標點符號可忽略)

Python函數中經常有 *args,**kwargs 這兩個參數,它們是什麼意思,為什麼要使用它們?
都是不定長參數,
*args返回的是tuple,
*kwargs返回的是dictionary。
Python中的變數作用域(變數查找順序)
記住LEGB
local 局部變數—>enclosed 閉包作用域 —-> Global 全局—->built-in變數
如圖,輸出結果

1,1,1 1,2,1 3,2,3
1 1 1 繼承自父類的類屬性x,所以都一樣,指向同一塊記憶體地址
1 2 1 更改Child1,Child1的x指向了新的記憶體地址
3 2 3 更改Parent,Parent的x指向了新的記憶體地址
Python是怎樣管理記憶體的?
Python的記憶體管理是由私有heap空間管理的。所有的Python對象和數據結構都在一個私有heap中。程式設計師沒有訪問該heap的許可權,只有解釋器才能對它進行操作。為Python的heap空間分配記憶體是由Python的記憶體管理模組進行的,其核心API會提供一些訪問該模組的方法供程式設計師使用。Python有自帶的垃圾回收系統,它回收並釋放沒有被使用的記憶體,讓它們能夠被其他程式使用。
數組和元組之間的區別是什麼?
數組和元組之間的區別:數組內容是可以被修改的,而元組內容是只讀的。另外,元組可以被哈希,比如作為字典的關鍵字。
參數按值傳遞和引用傳遞是怎樣實現的?
Python中的一切都是類,所有的變數都是一個對象的引用。引用的值是由函數確定的,因此無法被改變。但是如果一個對象是可以被修改的,你可以改動對象。
Python中的unittest是什麼?
在Python中,unittest是Python中的單元測試框架。它擁有支援共享搭建、自動測試、在測試中暫停程式碼、將不同測試迭代成一組,等等的功能。
Python中的模組和包是什麼?
在Python中,模組是搭建程式的一種方式。每一個Python程式碼文件都是一個模組,並可以引用其他的模組,比如對象和屬性。一個包含許多Python程式碼的文件夾是一個包。一個包可以包含模組和子文件夾。