Java轉python機器學習,並沒有大家想象的那麼美好!

xyz藍月發表於2019-01-05

輾轉幾年Java開發,換了幾份工作,沒一個穩定的學習、工作過程。中間也相親幾次,都是沒啥結果。換工作頻繁也嚴重打亂了和姑娘接觸的節奏。糟心工作連著遇到幾次,也怪自己眼光有問題。

2018也找了2次工作,中間有4、5個月沒有工作。看了個世界盃,看了個亞運會。也怪自己這段時間一直是換工作、找工作,節奏太亂了。當然,節奏不亂也可能不會比現在好吧。誰說的準呢?

Java轉機器學習——為啥呢?

主要有以下三方面原因:

1、Java感覺遇到瓶頸。Spring、Mytatis、設計模式等等,原始碼看不動了。主要是可能真的覺得沒有意思了吧。很可惜,3年多了,沒在大廠待過,小網際網路也沒做到高階Java工程師。

2、傷心了。小網際網路或者小團隊經歷——在之前的幾篇面試寫到過一些,讓自己覺得非常不爽。碰上過創業忽悠公司,就為了做了東西,然後賣了解散走人,公司和招聘來的人都是C×O們資本運作的工具。

也有公司組建團隊就為了試試市場,覺得不行或者做完了不需要這麼多人了,馬上裁掉。

還有那種噁心的團隊,同事間背後說壞話,領導直接推責任的。哎,苦逼頻繁換工作,也是醉了,真是荒廢啊,這幾年。經歷還真是豐富,對自己的職業技能發展真心沒有任何好處。

3、學到過機器學習相關內容。上學期間接觸過相關的一些理論,發現看一些機器學習內容還是看的懂。起碼知道啥是矩陣乘法,LeetCode也刷了將近80題了,也記住了一些方法。

10周自學機器學習過程——迷茫

個人基礎背景:

知道矩陣乘法

知道梯度下降、牛頓迭代,不知道原理和實現

會用Python,但機器學習的包不會用

知道有個東西叫LR,還有叫神經網路的,具體是啥就不知道了

主要看了2個教程,絕不打廣告,實話實說:

Andrew Ng的機器學習課程,Coursera的課程和史丹佛公開課。

機器線上學習課程,花了幾百塊。這個線上學習很適合面試,由於自己錯過了集訓課程,只好學個基礎課了。

除了上面的課,還做的事:

學習Python機器學習相關包、NumPy、Pandas、Sklearn、Pyplot等等;

Kaggle入門題,泰坦尼克倖存問題,用sklearn等,把排名弄到了8%。主要學習了資料處理、模型訓練流程。

機器學習面試過程——難

6周學習過後開始試水機器學習市場,也正好是世界盃結束的日子。由於沒有經驗,先投了幾個試試,鍛鍊一下,都是小公司。

可能是這個市場還是挺寬容的,接到的回覆有不少,一些電話面試就直接掛了,一些聯絡發簡歷後也掛了。

面試機會也挺多,但是深感知識深度、專案經驗不足。下面說說面試吧,由於簡歷專案經歷少,被問的涉及內容也少。

LR(必問)。這個涉及內容很多,自己也是實現過,用在過Kaggle專案,但是很多理論還是說不清楚。面試遇到的問題:最大似然、loss Function、推導、適合場景、引數、迴歸、分類、梯度下降(mini Batch、SGD),

決策樹相關。GBDT、xgboost、隨機森林等。會問推導、演算法流程、bag和Boost模式區別、剪枝演算法,

模型欠擬合、過擬合、資料清理、特徵選擇等等。

機器學習整體處理流程。認識資料、資料清理、特徵選擇、資料變換、構建模型、模型訓練、交叉驗證,

寫寫程式碼,只遇到了LeetCode簡單題(主要沒有大廠面試機會,小公司又不考,大點網際網路會考),

講講簡歷上寫的專案。我的只寫了一個Kaggle那個泰坦尼克問題(現在想想真是敢寫啊,幹到前5%也行,自己都沒到)。還寫了畢業論文和一些Java工程,湊了一頁多。

面試感受和Offer

感覺就是難啊,機會多,從學習群發現轉專業的真多。上學就學機器學習相關的優勢大。年齡可能也是問題吧。

拿到了3個offer,一個差點offer,都是新組建的演算法團隊。

(1)網際網路金融,很小的公司。幾十個開發人員,只有一個演算法——就是面試的我。面試官是技術總監,完全不懂演算法。聊得很開心,我也提醒他了,他們需要一個有經驗的人,我可能不太適合。還面了2次,第二次還是週六,在一個咖啡館。

本以為是合夥人聊聊業務,誰知道是真的機器學習面試。還問了原始碼實現、賽馬問題。聊了好久,當場給了offer。據說面試人是哪個大廠的,每週去這個公司幾次。總之最後我也沒弄明白關係。

不過有了之前的工作經歷,這次問的比較多。那邊總監團隊說演算法面試官是朋友關係,演算法面試官說自己是合作伙伴,人力又說不打算短期招聘演算法了。我也是被這種搞怕了,雖說工資對沒經驗的我還算高,但還是沒去。

(2)感覺是傳統軟體公司,給各種企業做軟體服務的,團隊據說幾百個開發。面試官也是不太懂演算法。還說為了匹配工資,按照高階Java頭銜入職,做演算法工作。

也是沒幾個人的演算法團隊(很可能我就是第一個),還得兼顧開發,感覺有點怕,透露著各種奇怪的感覺。沒啥實質演算法內容面試。這個感覺面得很空虛,所以沒去。

(3)入職的公司,也是小演算法團隊,剛組建,職位資料探勘。面試很開心,有筆試,答得不好。技術面基本圍繞分類、資料處理流程來問。涉及一些NLP的內容,不太會,也就沒問太多。2天完成2面,技術、人力和leader。差不多3、4周給了offer。

雖說工資不高,但是感覺很好,一個國企,技術團隊還沒到100人,演算法組當時面也是隻有1,2個人,不過能給比較充足的學習和嘗試時間。

(4)同學內推網際網路公司,沒發offer,面得很開心,還吃了他們的食堂(味道還行)。面的很全面,機器學習、LeetCode那種寫程式碼、還有數學題。二面的領導問了GBDT具體流程,還挺詳細。我把GBDT論文裡邊的演算法虛擬碼寫出來了。

還問了EM,這個真心不會。最後定的職位是Java開發,負責演算法模型和業務程式之間模組。最後,據說被人力pass了,理由是之前工作換的頻繁,這次找工作也沒明確目標,職業規劃不明確。

總 結

轉個工作專業真的很難,沒有運籌帷幄,全職學習去轉......這個真心說啥呢?哎!感覺應該在之前的工作中去學習,這樣換個專業還算平滑,不會有各種壓力。也可能是自己一直沒想好,工作也變動頻繁,一時衝動吧。

創業團隊倒閉、裁員打亂了學習節奏。已經這樣了,啥也說不好。3個月,最後拿到offer還是自己在學了6周時候面試的公司。只能感嘆面試人承受能力了。

工作中用的方法目前不太需要深究理論,還在基礎搭建過程,有充足學習時間。發現寫寫資料處理的Python,比做Java時候有意思。

當然這種有意思也可能和團隊氛圍有關係吧。現在又開始感覺機器學習、深度學習發展略快,自己有點跟不上節奏了。

理論基礎還沒學完,工作中內容還得學習,新的技術也得關注著。目前有點地基不牢、時間不夠用的感覺。

綜上:沒有好的職業規劃,換工作真的太危險,中間的空檔期是很大問題。經濟壓力,轉業失敗,新的工作就會比之前更好嗎?

所有都是在看運氣的感覺,這次可能真是自己幸運了!現在倒是覺得,工作中好好學習,對面試公司或部門能有機會深入瞭解,就一定要先問問,靠譜的還是內推(前提是內推人別不久就離職了)——能帶來很多面試中無法瞭解到的內容。

路途坎坷的幾年工作,傷心了2017和2018,不知道2019會如何呢?

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69903766/viewspace-2331198/,如需轉載,請註明出處,否則將追究法律責任。

相關文章