知乎萬贊:為什麼我不建議你轉行學python?
寫在前面
本文的目的很簡單,一句話:
用最少的時間,最高效率,讓你清楚:想要拿到python offer,你需要做什麼?你該怎麼做?如果你不具備這些條件,我不建議你轉行學python!
背景
我在土木專業掙扎了六年。剛畢業的時候,我來到了上海,進入一家設計院做土木工程師。然而土建大坑逐漸消磨掉我的熱情。考慮到建築行業日薄西山,房地產也不景氣,於是我開始準備跳槽啦!
2019年初,我拿到了國內某大型網際網路公司的Offer,如願跳出土木大坑成為了一枚python程式媛,直接感受是工資翻了一翻。
跳槽的過程雖然辛苦,但是也還算順利。所以我打算記錄下來分享給大家。
我也想提醒很多向我一樣衝動想轉行的小夥伴,首先要考慮清楚自己是否真的不適合本行業的工作,想清楚你是否真的瞭解網際網路瞭解IT?
如果你想了解更多我轉行的準備以及作為一個程式媛的日常生活的話,
如果你也是跟我一樣風風火火又不安分的孩子,那麼改變和學習起來吧。
嘗試,才是對自己最好的交代哦。
面試之前
市場環境
先說一下大環境,中國的網際網路環境已經漸趨穩定成熟了,但初中級別的程式設計師依然很氾濫,高階程式設計師很缺失。所以想要在眾多應聘者中脫穎而出,實力才是王道。
另外,通常的招聘季是金三銀四或者金九銀十,像我這個11月份去找工作的畢竟是很少了,但我覺得上海畢竟是大城市,要說市場上沒有崗位是不可能的,另外在淡季,和我競爭的人也很少了。所以,基於以上的判斷以及自己的勇氣,我毅然覺得辭職,開始了我的python轉行求職之路。
個人定位
我覺得,每一個招聘者都要對自己在市場上的位置做一個合理的評估,這樣才能準確的知道自己想要找什麼型別的公司,是大公司大平臺呢,還是中小型企業呢,還是創業公司呢?評估的依據,取決於自己的實力,職業道路的方向,以及對市場的認識。
不過如果不清楚也沒有關係,投遞公司的時候可以各類公司都投一投,大中小公司都去面一面,總之,不要把雞蛋放在一個籃子裡,多給自己製造一些機會。面試是一個很好的去接觸外界,瞭解自己能力水平的過程,可以幫助你對市場環境有一個更清晰的認識。面試結束後通常有反問問題的環節,也可以把握住機會,多去問一問對方公司在做的東西,使用的技術棧等等。
對於我自己來說,我就把面試當成一個很好的檢驗自己的機會,同時讓我有機會去和別的公司交流技術。所以說,平時在工作過程中,也可以隔三差五的出去面試一下,看看自己的能力水平幾何,避免自己和市場脫節太久,以及溫水煮青蛙的情況。
簡歷
接下來就是製作一份簡歷,關於如何製作一份簡歷,網路上的教程也很多了。我覺得技術簡歷的關鍵就是要把自己的做的比較出彩的專案,以及個人技術棧講清楚,這些都是面試中問的比較頻繁的幾個點。另外因為自己痴迷於markdown,第一次嘗試了markdown風格的簡歷,效果還不錯,蠻清晰的。
渠道
對於招聘渠道的選擇,如果有小夥伴的內推那是最好的,另外建議多註冊幾個app,多管齊下的去尋找面試機會,比如拉勾、boss直聘、獵聘等等。一些想去的公司的官網的招聘頁,也是一個不錯的資訊來源。
面試準備
作為技術面試,該如何去複習準備面試呢,我覺得可以從以下幾點去考慮。
資料結構與演算法
為什麼把這一塊放在第一個講,因為這是技術面試裡非常重要,但是平時工作中又最容易忽視的一塊。都說「面試造航母,工作擰螺絲」,如果不是演算法崗,程式設計師在日常工作中演算法使用場景非常有限,但這就是面試考察的一個重點。
我大概面了十幾家公司,基本每家公司都會考一些演算法題,或者讓你說一下思路,或者直接手寫程式,如果沒有事先準備過,會特別的不適應,尤其是白板演算法那塊。
所以,我的準備建議是,面試前至少前一週,就要花時間去練習演算法題,保持手感了。
首先強推leetcode網站,中文站是https://leetcode-cn.com/。leetcode是非常有名的刷題網站,裡面匯聚了各大企業的經典演算法題,而且可以線上提交程式碼,自定義測試用例,檢視其他人的題解等等。如果你覺得中文站上面的題解沒有自己想要的,也可以看一下外文站https://leetcode.com/ ,他們的題目順序都是一樣的,只是中文站在本土化這方面更強一點。
如果因為時間緊迫,我建議你針對以下資料結構和演算法的知識點進行重點複習:
- 各種排序演算法,氣泡排序,堆排序,快速排序等,時間複雜度空間複雜度分析,能做到手寫。
- 常用資料結構。連結串列、二叉樹、堆、棧等等。
- 經典演算法題。(待整理)
基礎知識
任何一門技術面試,基礎知識一定是重中之重。對於python程式設計師面試來說,我覺得下面三塊內容比較重要,考察的頻率也非常高。
語言基礎
可變物件、不可變物件、裝飾器、迭代器和生成器、執行緒和程式、魔術方法、動態解釋性、元類等。
web基礎
http請求、狀態碼、網路安全、django處理請求的順序、cookie和session
資料庫
mysql的事務、索引、鎖、效能調優,nosql資料庫中redis考察的比較多。
Python基礎視訊
1-1 Linux基礎
1-2 python基礎
1-3 物件導向
1-4 專案飛機大戰
這些都是在學習python基礎過程中參考和學習的視訊,如果你有需要我都可以分享出來!
專案經驗
一般對應屆生來說,基礎知識很重要。對於社招來說,專案經驗是非常重要的一塊內容。
我建議可以從下面幾個角度去準備自己的專案:
專案介紹
推薦STAR模型。
S——situation,專案是什麼背景下產生的 T——task,你的任務是什麼 A——action,你怎麼做的 R——result,結果如何
專案中的難點、閃光點
我相信每一個真實做過自己的專案的人,肯定會對自己的專案有所思考。總結一下自己在這個專案裡最難的地方,以及最精彩的地方,也可以使用上面的STAR模型。
專案框架
有的面試官會要求你在白紙上把專案的框架圖或者設計圖畫出來,這個也可以提前準備下,做到條理清晰,臨場畫的話很容易亂。
Python中高階視訊(就業專案)
這些都是在準備面試過程中參考學習python專案實戰demo和原始碼,如果你有需要我都可以分享出來!
小結
面試是一場艱難的戰役,我發現在那種緊張對弈的交鋒氛圍中,我從來沒有體會過所謂超常發揮的感覺,準備了100分,能把60分發揮出來就已經非常不錯了。所以,建議每一個面試者都要提前把一些必問的東西(個人介紹、專案經驗等等)提前準備好,並且模擬表達一下,以防臨場緊張而忘詞。
面試真題
因為自己大廠和創業公司都會去面,給我的感覺是,大廠的考察深度會更深一點,比如問你怎麼用python定位一些記憶體滿、CPU滿的問題,怎麼做mysql效能優化等等。而小公司問的更多是一些基礎問題,以及看你之前經驗的一個匹配度。
我這裡從我親身的面試經歷,精選出了30道面試常考題,涉及到了python面試的方方面面,大家可以自行測試。
python基礎
- python是什麼樣的語言,和其他語言的區別。
- python中的執行緒和程式,以及使用場景,你知道協程嗎?
- GIL是什麼,為什麼會有GIL,去掉會怎樣,有了GIL為什麼還要給程式加鎖?
- 迭代器、可迭代物件、生成器分別是什麼?生成器的作用和使用場景?
- python中的裝飾器是什麼?如何實現?使用場景?
- python中的元類是什麼?
- python中的可變物件和不可變物件之間的區別。
- python的魔術方法你知道哪些,new,init,call的區別是什麼
- django的中介軟體是什麼
- celery的原理,如何配置worker的權重
專案
- 如何定位記憶體過高或CPU過高的問題
- 畫一下你的專案的結構
- 專案中你遇到的最大的困難是什麼,是如何解決的?
- 專案中你最有成就感的地方是什麼?
- 你業餘是怎麼學習程式設計的?看哪些書?有自己做過什麼專案?
web
- HTTP/GET/POST/PUT/PATCH之間的區別
- 狀態碼的含義以及出現場景,301,302,404,500,502,504等
- cookie和session的區別和聯絡
- 從url請求到返回,中間經歷了什麼
- HTTP和HTTPS的區別,HTTPS如何進行加密的
資料庫
- mysql的索引是什麼,如何建立索引,B+樹的結構
- mysql中的事務是什麼,隔離等級是什麼
- 如何優化sql語句
- mysql的效能優化等
作業系統
- 堆和棧的區別
- 什麼是io多路複用
- nginx的配置
演算法
- 找到整數列表的最大k個數,時間複雜度
- 輸入一維陣列array和n,找出和值為n的任意兩個元素
- 常見的排序演算法,時間複雜度分析
- 生成一個旋轉矩陣
最後
最後在這裡分享一份自己收錄整理上述技術體系圖相關的幾十套騰訊、頭條、阿里、美團等公司21年的面試題,並且把技術點整理成了視訊和PDF(實際上比預期多花了不少精力),包含知識脈絡 + 諸多細節,由於篇幅有限,這裡以圖片的形式給大家展示一部分。
面試是跳槽漲薪最直接有效的方式,備戰2022金三銀四,各位做好面試造飛機,工作擰螺絲的準備了嗎?
掌握了這些知識點,面試時在候選人中又可以奪目不少,暴擊9999點。機會都是留給有準備的人,只有充足的準備,才可能讓自己可以在候選人中脫穎而出。
如果你需要這份完整版的面試寶典,只需你多多支援我這篇文章。
如果有問題可以在評論區留言,大家一起交流。我也會回覆每一條留言,及時為大家扭轉乾坤、指點迷津(拍胸脯~
相關文章
- 為什麼我不建議你通過 Python 去找工作?Python
- 入行IT,為什麼建議你學Java?Java
- 為什麼不建議使用gotoGo
- 為什麼不建議使用eval和with?
- 為什麼我不贊成開發來寫檢視
- 2024年 為什麼不建議新人學習ABAP
- 為什麼 Android 中不建議使用 EnumsAndroid
- 為什麼不建議在for迴圈中使用"+"進行字串拼接字串
- 孩子們,為什麼我建議你一定要會介面測試?
- 為什麼建議你常閱讀原始碼?原始碼
- 為什麼不建議使用免費的IP代理?
- 為什麼不建議函式有太多引數?函式
- 為什麼Linux不適合你?(轉)Linux
- 為什麼Linux不適合你? (轉)Linux
- 為什麼不建議在 MySQL 中使用 UTF-8?MySql
- 為什麼判斷物件是否相等, 不建議用 equals ?物件
- Spring中為什麼不建議使用欄位注入Spring
- 為什麼不建議使用自定義Object作為HashMap的key?ObjectHashMap
- Java面試題:為什麼HashMap不建議使用物件作為Key?Java面試題HashMap物件
- 為什麼我建議通過翻譯英文資料學習知識
- 這就是為什麼你學不會DDD
- 知乎熱門:為什麼你寧願吃生活的苦,也不願吃學習的苦
- 為什麼建議大家都學習Python語言?原因在這Python
- 為什麼你應該學 Python ?Python
- 為什麼不建議你用 MongoDB 這類產品替代時序資料庫?MongoDB資料庫
- 2020年為什麼建議你繼續學程式設計?程式設計
- 我為什麼從python轉向goPythonGo
- 談一談全棧,為什麼不建議初學者去做全棧
- Oracle RAC - Oracle為什麼不建議使用交叉線作為心跳線Oracle
- 為什麼你的小遊戲不賺錢?曾經發行千萬流水公司的9點剖析建議遊戲
- 知乎萬贊回答:什麼工具能做視覺化大屏,還能做資料地圖?視覺化地圖
- 知物由學 | 前Google高階軟體工程師:我為什麼建議你把賬戶管理外包Go軟體工程工程師
- 為什麼阿里巴巴不建議在for迴圈中使用"+"進行字串拼接阿里字串
- 為什麼阿里巴巴不建議在for迴圈中使用”+”進行字串拼接阿里字串
- 程式語言這麼多,為什麼建議選擇Python?Python
- 你為什麼一定要學Python?Python
- 為什麼阿里巴巴不建議MySQL使用Text型別?阿里MySql型別
- 為什麼不建議把資料庫部署在docker容器內?資料庫Docker