歡迎光臨
每天分享高質量文章

Python面試,非科班生的轉型之路

來自:Python之禪(微訊號:VTtalk)

作者的知乎ID:@隔熱城市,你可以找他交流心得

他是一名大四學生,建築設計專業,自學 Python 不到一年。面試知乎順利拿下 offer

作為一個非科班生他是如何面試上知乎這家公司的?來看看他這場緊張,刺激的面試之旅

··············

在經歷了6天前的慘痛失敗後,我痛定思痛,狠狠的補習了演演算法知識和 TCP/IP 的相關知識,踏上了新的徵程——知乎後端開發實習生的面試。

這也是一次改變我人生的面試。因為我本來打算回老家過年了,車票都買好了,就是後天的動車。

一面

面試官大大一上來就讓我手寫歸併排序和快速排序,並且提問了我一些演演算法複雜度的問題,還讓我實現了一個雜湊表資料結構。

還好我因為6天前的失敗,這幾天狠狠的補習演演算法的知識,全都答出來了。然後考了我資料庫的相關知識,設計了一個使用者關註系統的資料表,還讓我寫了三個相關的 sql 陳述句。然後問了我如何建索引和 MySQL 引擎的一些知識。

最後問的是作業系統的一些知識,協程,多執行緒,多行程之類的,都是我最近幾天惡補的,正好學以致用,哈哈~一面算是比較輕鬆的過了。

點評:一般公司整個面試流程分為3到5輪,一面的面試官通常是未來和你同一專案組共事的同事,這輪面試往往考察候選人的基本功,就是計算機理論知識,包括資料結構與演演算法,資料庫系統(包括資料庫設計,SQL查詢,最佳化,索引等等),作業系統的基本概念和計算機網路裡面的常見知識,如果你能把這四門課程中的基礎搞懂了,第一輪基本上問題不大。

所以,面試前一定要準備充分,常見的演演算法與資料結構的特點都要做到心中有數,平時多去刷一些演演算法題,像leecode,牛客網都是很多的練習地方。

二面

面試官主要是進行深化簡歷,問了我簡歷上所有專案的實現細節,包括我專案中實現的一些演演算法。比如我的一個微信小程式裡面的架構和圖片排列演演算法的實現。還問了我手遊輔助框架的設計思想和一些Python具體實現。因為這些專案都是我親手開發的,所以回答起來也是比較得心應手。感覺這幾個專案還是給我加了很多分的。

而後面試官詢問了我前一份工作的一些心得和體會。在這裡非常感謝我前一個的實習公司,他們給了我很多工作經驗和Python程式碼開發技術。面試官對我前一份實習經驗還是比較滿意的。

然後,面試官給我出了個題,是關於長連結轉換短連結的技術實現。我之前沒接觸過這方面的知識,我第一個回答是使用md5把長連結壓縮,然後用雜湊演演算法把md5雜湊,最後把雜湊後的值作為短連結和長連結入庫。面試官不太滿意,說如果資料庫連線非常多,會有很多的雜湊衝突。

不過面試官很耐心,慢慢的引導我,最終我做出了正確的做法,直接用一個遞增的數字去維護資料庫,只需要把數字轉換為字母的編碼格式,就能得到對應的key,然後再把value存成長連結,就實現了短連結和長連結的對應關係。

接下來提問了一些TCP / IP的基礎知識,感覺考察的還是比較全面的,還問了我很多應用層協議的實現細節,比如 HTTPS,DNS 之類的,再答下去我就基本不會了。我隱晦的透露我是非科班出身的訊息,果然面試官大大非常善解人意,表示理解並且讓我準備三面。

點評:第二面的面試官可能是你未來的直屬leader,主要針對實戰專案來提問,考察你的動手能力,所以你要對你所負責專案或者模組的每一個實現細節非常熟練,這樣回答起來就自信。

第二,學會思考,遇到問題先別急著去百度,Google,看看能不能用現有的知識去解決,然後再去網上查詢有沒有更好的方案,培養了自己獨立思考的能力的一大好處就是面對困難,挫折不至於措手不及。

第三:如果問題已經超出了自己的知識體系範圍,坦誠回答不知道,別故作聰明強答。學會引導面試官,引導面試官往自己擅長的方向走。

很多人不知道去哪裡找實戰專案,其實你缺乏的是產品能力,梁寧說產品能力是每個人的底層能力,任何人都應該有的能力就是產品能力,善於從身邊找到痛點,癢點需求,然後動手去實現它,這樣就有了實戰能力

三面

三面的時候是一個非常帥氣的小哥哥,而且特別愛笑。指點了我很多web開發最佳化上的細節,也給我出了題,如何處理長時間響應。我給了好多我個人的理解。比如分表分庫,小圖片規整,CSS/JS合併壓縮,Redis 快取熱點資料,使用瀏覽器的快取功能等等。

然後他問了我很多具體的實現細節和工具除錯方法。感覺自己答的不是特別好,但是我被他的笑容感染了吧,還是比較輕鬆的。

接著他問了我魔法函式new和init的區別,比較簡單。

最後讓我提三個python的缺陷,第一就是多執行緒全域性鎖,導致執行計算密集型任務效率低下。第二個,內建函式太全面,而且都是底層c實現的,扼殺了自己用純python實現資料結構的動力。第三個,語法太飄,作為動態語言既是優點也是缺點,程式碼量大了以後維護起來反而吃力。他還讓我對他提問題,不知道該問啥,尬聊了一陣然後他通知我等待四面。

點評:第三輪面試可能就是CTO或者部門老大來面你了。前面兩輪考察的是你的基礎扎實程度,專案經驗,第三輪考察的就是你的潛力有多大

四面

四面是HR面了,能走到這一步還是比較開心的,主要就是聊了聊職業規劃和發展方向。HR小姐姐給我介紹了公司的福利,還給我提供租房的建議,甚至還打算幫我找房源。總之挺感動的,最後商談了待遇問題和入職時間,並且發放了Offer,這次面試算是圓滿結束啦~

點評:最後一面就是HR的面試了,能走到這一步,基本上離成功僅一步之遙,只要與公司價值觀沒有太大的偏差基本上沒啥問題,

總結

首先非常感謝知乎對我的肯定,願意給我一個非科班出身的人機會。然後,我也要感謝我前一份工作的同事和公司,是他們給了我快速成長的空間。最後,我一定要感謝六天前的那個特別厲害的公司,是他們讓我知道我目前的不足。在接下來的三個月裡,我會盡自己所能的去學習、工作,爭取能留在知乎這個所有的Python開發者天堂~

對於相同的要轉行的童鞋,我認為基礎是非常重要的。這次就是因為我狠補了之前欠缺的演演算法和 TCP/IP 知識,所以才能拿到知乎的實習生Offer。

加油~!

··············

另外,我問了他兩個問題

第一個問題,你覺得轉行遇到最大的困難是什麼?

我感覺最大的困難就是迷茫感。不知道自己能不能做。不知道自己應該怎麼做。不知道自己做的是否有意義。

第二個問題,成功轉型最關鍵因素是什麼?

應該是樂觀和充分的自我認知吧。因為我投簡歷真的是九死一生,而且那個一生還是我不想去的公司。尤其是對於轉行的人來說,真是分分鐘就堅持不下去的節奏。但是我認為自己的能力是足夠的,所以即便再困難都堅持了下來

最後希望這篇文章能給自學程式設計的朋友多一點信心,偉大是熬出來的,幸福是奮鬥出來的。


●編號370,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

 

演演算法與資料結構

更多推薦:18個技術類微信公眾號

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂