乾貨滿滿——親身經歷的 Python 面試題

乾貨滿滿——親身經歷的 Python 面試題

寫在之前

從今年四月份複試完開始正了八經的學習 Python,然後到 6 月 27 號從山東坐高鐵來到上海,差不多一個多星期的時間,面試了大概十幾家公司,收到了一些 offer,其實截止到昨天下午我依然還是在面試的路上。我是自學 Python,大概三個多月的時間,因為之前不知道自己未來要從事什麼樣的崗位,所以學的時候爬蟲和後端的知識都有涉及,所以自己投的公司的範圍也比較廣,所以接下來我寫的東西也可能比較多,可以選自己的方向去看。

粉絲福利:私信回覆【01或者02】有驚喜哦!

面試範圍

這麼多家公司的面試取個並集的話,基本上所有能問的大類都問了,諸如 Python 基礎,web框架,爬蟲,數據庫,計算機網絡,操作系統,數據結構與算法等。下面我就開始詳細說一下各個分類我被問到的面試題,我爭取儘量的多記起一些來。

面試題

一、Python基礎

1.說一說你所知道的 Python 數據結構有哪些。

2.Python 中列表和元組的區別是什麼?元組是不是真的不可變?

3.什麼是生成器和迭代器?它們之間有什麼區別?

4.什麼是閉包?裝飾器又是什麼?裝飾器有什麼作用?你用過裝飾器嗎?請寫一個裝飾器的例子。

5.說一下什麼是匿名函數,用匿名函數有什麼好處?

6.在學習 Python 的過程中,你有想過如何提高 Python 的運行效率嗎?

7.用過類嗎?知道繼承嗎?請寫一個例子,用到繼承。

8.說一下深拷貝和淺拷貝。

還有一些記不太清了,感覺都不是很難,就是正常如果看過任意一本 Python 入門書的都可以回答出來。

二、Web 框架

1.什麼是 Django? 說說你的理解。

2.Django 遵循什麼樣的設計模式?每個字母代表什麼意思?各自完成什麼樣的功能?它和MVC是怎麼對應的?

3.Django 中的緩存是怎麼用的?

4.用 Django 做過什麼項目嗎?大概是怎麼樣的思路?現在讓你寫個登陸頁面,你要怎麼寫?

5.說一下 session 和 cookie 區別。為什麼 cookie 是不安全的?

6.你在用 Django 做項目的時候碰到過什麼問題嗎?你印象最深的是哪個? 你是怎麼解決的?

怎麼說呢,Django 這部分在面試的時候問的更多的是一些項目方面的問題,具體的細節和應用其實很少,頂多就是幾個常見的問題。所以建議投這方面工作的朋友手裡要有項目,這樣心裡不慌。

三、爬蟲

1.說一下你寫爬蟲的時候用到過的包。

2.會用正則表達式嗎?會的話請用正則表達式寫一下郵箱的地址。

3.說一下 Python 爬蟲的框架,你用過哪個?做過什麼樣的爬蟲嗎?

4.你在寫爬蟲的過程中遇到過什麼問題?印象最深的是哪個?你是如何解決的?

5.什麼是反爬蟲?說一下你知道的反爬蟲,各自是什麼特點,該如何解決?

6.什麼是 Ajax?(因為我的項目上有寫這個,所以問了)

爬蟲這部分同樣也是問了較多簡歷上所寫項目的實現以及一些細節,所以投爬蟲的時候也要提前寫點項目,如果用框架更好,如果不會的話,起碼也得知道有什麼框架,大概是幹什麼的。

四、數據庫

1.用過數據庫嗎?說一下你熟悉的數據庫,這個數據庫有什麼特點。

2.什麼是索引?什麼字段適合建立索引?索引的優缺點你知道嗎?

3.什麼是事務?

4.知道範式嗎?說一說數據庫的第三範式(如果你看到這裡的話,建議你將第一,二範式也都看看)

5.會寫 SQL 語句嗎?如何給表中插入數據?如何更新數據?(看到這,你是不是數據庫的增刪改查都得看看)

數據庫這些東西我感覺問的並不多,大多數公司問我的都是第 1 個和第 5 個問題,其中有一個公司某個面試官說要看看我的基礎,然後就多問了幾個,然後...幸虧我才看了。

五、計算機網絡

1.說一說什麼是 TCP/IP 協議?

2.知道什麼是三次握手和四次揮手嗎?簡單描述一下。

3. Post 和 Get 有什麼區別?

4.知道滑動窗口嗎?

5. TCP 和 UDP 有什麼區別?

6.知道 Socket 網絡編程嗎?知道怎麼用嗎?

好像還有幾個來著,我忘記了。怎麼說呢,網絡這個地方大概是我的弱項,做為一個當年差點在網絡上掛了的菜雞,大概只回答了一半的題,剩下的一半就是持續蒙圈。

六、操作系統

1.什麼是死鎖?如何預防死鎖?

2.學過編譯原理嗎?會用嗎?

3.說一下什麼是虛擬內存技術。

4.用過 Linux 嗎?會用嗎?在上面搭過環境嗎?說一下常用的指令。

操作系統這個大多數問的是用過 Linux 沒,會不會常用的操作指令?我的回答是 No。因為直接從 Windows 到了 Mac,可以說是相當 sad 了。

七、數據結構和算法

1.說一說你所知道的排序算法,它們的時間複雜度和空間複雜度分別是多少?

2.手寫一下冒泡排序和快速排序。

3.在紙上實現用兩個隊列模擬棧的操作(所以看到這裡你是不是應該也去看看如何用兩個棧模擬隊列)。

4.知道什麼是動態規劃嗎?

5.手寫一下將二叉樹轉化成雙向鏈表。

6.手寫一下將兩個有序鏈表合併成一個有序鏈表。

7.手寫一下二叉樹的層次遍歷。

8.手寫如何判斷一棵二叉樹是否為另一棵二叉樹的子樹。

還有幾個題就很難了,涉及到了容斥原理和博弈論的內容就不在這說了。數據結構和算法一直是面試的一個老大難問題,其實大多數公司問的比較基礎,我面試了這麼多公司,唯一的一次筆試就是七道算法題,兩個小時。基本上的都是 1,2,6 的那種簡單難度,看看書就會了,因為我之前在大學是做算法競賽的,所以覺得這部分還可以。

寫在最後

不知不覺寫了這麼多,這是我面試的總問題的百分之七八十。這些面試的問題大多數都是基礎,其實如果你在網上看過別人寫的面經你就會發現,有些其實都是重合的,意思就是如果你在去面試之前有針對的看過這些東西,其實到真正面試的時候會舒服很多。

面試之前看看職位的要求,然後做有針對的學習,往往會收穫意想不到的驚喜。我每次去面試之前,都會準備一些時間,然後把可能會問到的問題存到自己的雲筆記裡面,這樣坐地鐵,做公交的時候可以抽時間看一眼。

其實說到最後還是回到一個好好準備上面,祝願所有努力的人都獲得滿意的 offer,如果你覺得寫的還可以,點個贊呦。


分享到:


相關文章: