近幾年 Python 非常熱門,在學術界和產業界的使用率顯著提高。目前學習Python的人數日益增多,Python在近3年的編程語言受歡迎度中一直處于榜首。今天我們就來講講在產業界,需要具備哪些能力才能獲得一個滿意的 Python 相關崗位 Offer。

首先,要熟練掌握循環,條件等結構,各種數據類型,運算符的優先級,函數和類的調用和文件讀寫等等,這些最基礎的知識就不多贅述了。
稍微復雜一點的,要理解常見容器,如列表,集合,元組和字典。常見考點:為什么判斷容器是否包含某元素,用集合比列表的效率高很多?什么情況該用列表,什么情況該用元組?
再進階一步,因為程序運行過程中可能出現意料之外的情況,要掌握異常處理的 try-except 機制。除了常見的容器,還會使用 collection 模塊下的容器,例如常用的 defaultdict 和 Counter,這會使得代碼更為簡潔高效。深度拷貝和淺拷貝的用途。
下面提出幾個易錯點來供大家評估自己的水平,如果大家覺得自己不會出現這樣的錯誤,那說明 Python 的基本功是比較扎實的。
1. 查找單詞在句子中的首字母
sentence = "Hello, are you Jack?"
print(sentence[sentence.find("Jack")]) ?#結果為「J」,正確
print(sentence[sentence.find("jack")]) ?#結果為「?」,錯誤。
因為 sentence.find("jack")等于-1。
字符串的方法 find 和 index 分別適合什么情況,當前問題應該怎么實現呢?
2. 刪除列表中的數字零
number = [1, 2, 1, 2, -1, 0, 0]for n in number:if n == 0:number.remove(n)print("final:", number)輸出結果為「number: [1, 2, 1, 2, -1, 0]為什么最后一個「0」成為漏網之魚?
掌握常見技能,包括正則表達式,數據結構,數據庫,API 服務。
1. 數據結構
會分析算法的時間和空間復雜度,還包括但不限于鏈表,隊列,哈希表,各種樹的結構和使用,和排序,貪心,遞歸,分治以及動態規劃等算法。
2. MySql 數據庫的常見操作
例如連接,創建表,增刪改等等。至少對數據庫基礎部分系統學習一下,雖然面試中一般不要求現場實現代碼,但可能會問到數據庫的設計規范和原則。
3. API 服務
由于微服務方案的廣泛使用,很多功能子模塊都是一個獨立的 API 服務,不同 API 服務之間互相通信從而配合完成整個功能。所以,要求能搭建和調用一個 API 服務,常用 Post,Get 的請求方式,如果掌握 gRPC 和 REST 請求方式更好。
大家不要覺得這個難度很大,其實借助有一些成熟的模塊,例如 Django 或 Flask 框架,可以很方便地搭建一個 API 服務,并不比動態規劃題目更復雜。
4. 正則表達式
許多數據處理和網頁相關的工作都離不開通過正則表達式來高效地匹配和處理數據。

“秩序白銀”階段可以讓你接到面試通知,要想拿到滿意的 Offer 是避不開“刷題”的。
建議大家刷一下LeetCode (https://leetcode-cn.com/problemset/algorithms/),按照題目難度分為簡單,中等和困難,主要是評測對數據結構的掌握程度和分析能力。
如果你的目標不是 BAT,京東和今日頭條等大廠,對于簡單和中等難度的題目都沒有問題,困難題目(如動態規劃)至少能讀懂示例代碼就足夠了。
線上考試當然是機考,這是大家比較習慣的方式。但現場面試時大多數會采用手寫代碼的方式。手寫代碼,就不能通過編譯和運行來檢驗自己的代碼,而且反復修改也不美觀,所以一定要先確定思路再下筆。
建議大家多和面試官溝通,先明確題目的要求(比如是否區分大小寫,函數的輸入和輸出形式,這其實也是考察工程師在明確需求方面的能力),然后可以說出自己的思路,或許遇上心地善良的會直接幫你指出潛在的問題,避免走彎路。
最后,即使是手寫代碼也要自測,關注易出錯的邊界條件。不要覺得自測顯得沒自信,會自測的碼農才能讓領導放心。
Tip1:LeetCode 上面的題目太多了,做不完怎么辦?
和你人生中的無數次考試一樣,以歷史原題為主,以你不熟練,易錯的題目為主。
Tip2:是不是把這些題目都記下來就萬事大吉?
很多公司都是會準備新題的,只是題型接近。所以僅僅記下來是不行的,還需要理解消化,才能舉一反三。
Tip3:面試時發現題目肯定可以用動態規劃實現,但寫不出來,心態崩了啊!
有些題目你沒有把握能用最低的復雜度實現,也以放寬一些,但最好不要用窮舉法。

如果想在茫茫求職者脫穎而出,獲得更優質的工作機會,建議針對某一個方向深造。下表列舉了幾個崗位對不同基礎技能的要求程度,數值越大則要求越高,1 代表基本清楚,5 代表全面掌握。
如果你想成為算法工程師,又有幾個細分的算法方向,那可以報名一個培訓班(比如智圭谷),利用閑暇時間進行系統地學習。

在待遇問題上取得更多談資的前提是具備足夠的競爭力。新人的最大弱點是缺乏經驗,那么如何快速漲經驗呢?
1. 參加比賽
現在有很多的比賽,如果能完整地參加下來對自己的能力和信息都是一個不小的提高。但是想要在大型比賽中名列前茅也并非易事,如果比賽名次不佳又不好寫在簡歷上。
2. 實習或參加項目
如果能夠完整地參加一個項目周期(提出需求,需求評審和排期,進度追蹤,測試和優化迭代和發布上線),會使得大家受益匪淺。一般面試官會圍繞你的論文或項目深入地去討論一些細節,所以盡量圍繞項目做好充分的準備
jie
結
yu?
語
工作中常用的數據庫和 API 服務在面試中出現的比例并不高,而面試常客的算法編程題卻在工作中不常見,即使遇到也可以先問問度娘再照搬。因為面試官要通過這種靈活性大的算法編程題來綜合考察知識體系,思維和溝通能力。
一方面,工作多年的老手和成績優異的應屆生在這方面的優勢并不明顯,仍然需要用心準備;另一方面,也給了想轉行計算機的門外漢更多的機會,只要付出一定有回報。
今天的分享到此結束,感謝您的觀看
注:文章部分內容來源于網絡,無法辨識真正原作者,如有侵權請聯系我們進行刪除或授權。
掃描二維碼
獲取更多資訊和干貨
書聲瑯瑯教育

文章好看點這里
