百道Python面試題實現,搞定Python程式設計就靠它

機器之心發表於2019-04-11
  • 昨天機器之心介紹了 PHD 大牛的求職之路,很多讀者感覺這位大牛太厲害了,他的經歷對我們幫助不大。對於一般的機器學習求職者而言,最基礎的就是掌握 Python 程式設計技巧,隨後才是相關演算法或知識點的掌握。在這篇文章中,我們將介紹一個 Python 練習題專案,它從演算法練習題到機試實戰題提供了眾多問題與解決程式碼。

在春招之前,我們就曾介紹過 GitHub 萬星的 ML 演算法工程師面試指南,它提供了完整的面試知識點、程式設計題及題解、各科技公司的面試題錦等內容。讀者可查閱該專案瞭解機器學習面試需要準備哪些知識。

  • 專案地址:https://github.com/imhuay/Algorithm_Interview_Notes-Chinese

在這個 2W+ 收藏量的 GitHub 專案中,作者前一部分主要介紹了機器學習及各子領域的知識點。其中每一個知識點都只提供最核心的概念,如果讀者遇到不熟悉的演算法或者遇到知識漏洞,可以進一步閱讀相關文獻。後一部分則重點介紹了怎樣搞定程式設計面試題,包括各種資料結構和排列組合相關的題目。

一般而言,第一部分的基礎知識是長期積累的結果,但對於後面的 Python 面試題,我們可以透過刷題快速提升解題水平。這篇文章重點在於介紹兩個 Python 面試題專案,它們提供了大量 Python 問題與解題程式碼。

面試怎麼做

在進入 Python 題海之前,我們還是先要了解了解面試流程。面試形式和過程大致如下:

  • 電話篩選(隱形的現場面試):這個過程一般由 HR 完成,如果是技術人員負責,這個過程一般都很短。

  • 技術面試:你將和實際開發人員進行這一輪面試,在這期間他們會深入瞭解你的知識背景。

  • 技術評估/homework 程式設計/結對程式設計:一般而言,如果一家公司的面試有結對程式設計環節,那絕對是加分的。homework 程式設計也能理解,但絕大多數情況下這都是在浪費每個人的時間,也無法正確評估技術水平。

  • 最終面試:和團隊其他成員見面,如果這是一家小公司的話,這一輪面試你面對的可能是創始人(們)。

  • 發放 offer。

當然,每家公司都會有所不同,這只是你在找工作的過程中可能經歷的大致過程。一般技術面試考察的是我們的背景知識,而技術評估則需要語言解決實際問題了。本文的這兩個專案,可以讓你搞定公司的技術評估,當然其實目前很多書籍與網站都在解決這個問題,例如劍指 Offer 和 LeetCode 等等。

Interview-code-practice-python

首先在第一個專案中,作者給出了 2017 校招真題、劍指 offer、華為機試、機試題和直通 BAT 演算法題等各種 Python 實現,它們共計 200 道左右。

  • 專案地址:https://github.com/leeguandong/Interview-code-practice-python

如下展示了劍指 offer 資料夾包含的實現文件,每一個問題都是單獨的 Python 檔案:

百道Python面試題實現,搞定Python程式設計就靠它

整個專案有很多有意思的題目,例如「變態青蛙跳.py」包含的題目與題解程式碼為:

百道Python面試題實現,搞定Python程式設計就靠它

「合唱團.py」內的程式碼如下:

百道Python面試題實現,搞定Python程式設計就靠它

The Algorithms - Python

第二個專案是更流行的一個 Python 程式碼庫,它目前有 2.4W+的星。該專案實現的各種演算法都是用純 Python 完成的,它希望更簡介地展示這些問題怎樣解決,因此相比 Python 標準庫中實現的方法可能效率不那麼高。

  • 專案地址:https://github.com/TheAlgorithms/Python

目前該專案展示的解決方案主要有:

  • 排序

  • 搜尋

  • 數學

  • 演算法分析

  • 二元樹

  • 資料結構

  • 影像處理

  • 動態規劃

  • 線性代數

  • 機器學習

  • 雜湊

  • ……

這個專案的演算法實現非常多,我們可以根據實際需要選擇具體的類別,並檢視給出的解決方案。如果我們希望瞭解排序演算法,那麼選擇排序後我們大概能看到近 30 種不同的排序實現:

百道Python面試題實現,搞定Python程式設計就靠它

百道Python面試題實現,搞定Python程式設計就靠它

其中,在演算法入門第一課「bubble_sort.py」中,該專案給出的氣泡排序解決方案為:

百道Python面試題實現,搞定Python程式設計就靠它

該專案提供的實現很多都非常底層,在「Math」中,我們可以瞭解到如何實現絕對值求解、求最大最小值等等,當然也可以瞭解到矩陣乘法是如何實現的。該專案其實對面試很有幫助,雖然它並不是直接解決特定的某個問題,但是復現一般的 Python 函式或者基本問題對於理解 Python 很有幫助。

綜合以上兩個 Python 實現專案,不論是解題技巧,還是對 Python 的理解,我們的實戰能力都會有很大的提升。就像理解神經網路最好的方法是用純 NumPy 實現一遍,理解 Python 的最好方法即過一遍基本函式與結構。有了充足的理解,再看看面試真題或在 LeetCode、牛客網就比較簡單了。

相關文章