挨踢部落故事匯(22):從逃離北上廣到逃回北上廣
原創(chuàng)【51CTO.com原創(chuàng)稿件】司馬雼是玖哥的學(xué)長(zhǎng),先后在國(guó)內(nèi)兩家top 10大廠擔(dān)任資深A(yù)ndroid工程師,對(duì)Android技術(shù)有如癡如醉的熱情,并且樂(lè)于幫助同行,最難得的是他還有一個(gè)漂亮的女朋友,不愧是Android程序員中的人生贏家。玖哥將他的經(jīng)歷稍作加工后用明清小說(shuō)的筆法寫出來(lái),希望每個(gè)讀到這篇文章的Android工程師都能走他的路。
司馬雼·Android攻城獅
***回:小廟無(wú)地容巨擘 大廠有禮迎碩士
詩(shī)曰:
老板摳門巧計(jì)乖,卻將忠義苦擠排。
基礎(chǔ)扎實(shí)績(jī)點(diǎn)高,蒼天豈能誤人才。
司馬雼2008年考入合肥工業(yè)大學(xué),2012年保研本校,2014年進(jìn)入合肥某小公司實(shí)習(xí)。
司馬雼一開(kāi)始選擇的是JavaEE方向,他在實(shí)習(xí)期間就以專家的標(biāo)準(zhǔn)嚴(yán)格要求自己,不但讓服務(wù)端的內(nèi)核穩(wěn)定度提升了好幾個(gè)檔次,還讓內(nèi)存消耗下降了好多個(gè)數(shù)量級(jí)。完成本職工作后還幫助運(yùn)維那邊修復(fù)了幾次硬件的故障。不料老板嫉賢妒能成性,只愛(ài)奴才,不要人才。這個(gè)老板不但不給司馬雼升職加薪,還侮辱司馬雼:““雼”是“宕”的繁體字,你越俎代庖搞運(yùn)維不怕把服務(wù)器搞宕機(jī)?”信而見(jiàn)疑、懷才不遇的司馬雼憤而辭職。司馬雼辭職剛好趕上某大廠(國(guó)內(nèi)top 10)招Android實(shí)習(xí)生,他突擊學(xué)習(xí)了幾天Android就去面試了。
一面的時(shí)候主要考察Android和Java的基礎(chǔ)知識(shí),比如Java的數(shù)據(jù)類型、運(yùn)算符優(yōu)先級(jí)和Android的布局以及生命周期,基礎(chǔ)扎實(shí)的司馬雼都能準(zhǔn)確無(wú)誤地回答。
二面的時(shí)候面試官問(wèn)了許多數(shù)據(jù)結(jié)構(gòu)和算法、設(shè)計(jì)模式、架構(gòu)的方面的問(wèn)題,司馬雼不但能畫(huà)出好幾種設(shè)計(jì)模式的UML圖,還對(duì)MVC、MVP、MVVM的區(qū)別和優(yōu)缺點(diǎn)發(fā)表了自己的看法。
***HR面的時(shí)候收了司馬雼的成績(jī)單復(fù)印件,對(duì)他4.0的GPA和專業(yè)top 5%感到很滿意。
司馬雼通過(guò)了面試,順利成為該廠的Android實(shí)習(xí)生。不久,司馬雼以專業(yè)top 5%的優(yōu)異成績(jī)碩士畢業(yè),轉(zhuǎn)正成為Android工程師。而那家小公司呢,不知道什么時(shí)候就因?yàn)閎ug太多導(dǎo)致用戶嚴(yán)重流失而倒閉了。
異史氏曰:Java玩得6的學(xué)生選擇Android作為發(fā)展方向是一個(gè)明智的抉擇,這個(gè)世界正處于、并將長(zhǎng)期處于移動(dòng)互聯(lián)網(wǎng)時(shí)代。校招面試除了考察Android和Java基礎(chǔ)知識(shí),還考察你學(xué)習(xí)的基礎(chǔ)理論課程的知識(shí),***通常還要收成績(jī)單的復(fù)印件。大廠的校招面試一般有固定的問(wèn)題和模式,比如阿里校招筆試題來(lái)自《技術(shù)之瞳》,微軟校招筆試題來(lái)自《編程之美》等,盡管臨陣磨槍也有一定的成功幾率,但別忘了玩3年LOL的槍不可能比刷6年LeetCode的槍更快。(時(shí)間沒(méi)錯(cuò),沉迷LOL的大學(xué)生都考不上碩士)
第二回:榮升高級(jí)愁田舍 游子低頭思莼鱸
詩(shī)曰:
當(dāng)年許汜初炒房,羞無(wú)才氣見(jiàn)劉郎。
如今司馬有遠(yuǎn)志,卻愁無(wú)房迎新娘。
炒房團(tuán)自古有之,祖師爺是東漢末年的許汜。當(dāng)年許汜空有國(guó)士之名,卻全無(wú)救世之意,整天就知道求田問(wèn)舍,因此被胸襟海闊,志向山高,憂國(guó)忘家的劉備鄙視。此事有辛棄疾《水龍吟》為證:“求田問(wèn)舍,怕應(yīng)羞見(jiàn),劉郎才氣。”
司馬雼和許汜的志向有天壤之別,他的夢(mèng)想就是把有限的生命投入***的Android技術(shù)中,他不甘心每天只做UI的微調(diào),他發(fā)現(xiàn)App存在很大的改進(jìn)空間,并付諸行動(dòng)。
司馬雼對(duì)App的代碼進(jìn)行了大規(guī)模重構(gòu),在MVP與MVVM中選擇了MVP架構(gòu),并自主研發(fā)了一套的網(wǎng)絡(luò)請(qǐng)求框架(結(jié)合了OKHttp和Gson,可以理解為國(guó)產(chǎn)的Retrofit)(該框架不開(kāi)源,類似框架的源碼:https://github.com/qiujuer/OkHttpPacker)代替OKHttp。這樣一來(lái)不但減少了大量冗余代碼,層次結(jié)構(gòu)也變得更加清晰。
訂單狀態(tài)這種需要和服務(wù)器實(shí)時(shí)同步的數(shù)據(jù),以前一直用每秒一次的輪詢,司馬雼發(fā)現(xiàn)這是App又費(fèi)電又費(fèi)流量的禍根,采取了用推送代替輪詢的解決方案。
APK瘦身也是Android性能優(yōu)化的重要組成部分,司馬雼去掉了很多不必要依賴和重復(fù)的工具類,讓APK打包后的體量輕了一半。
兩年后,這個(gè)App完成了從3.3到6.3共13個(gè)版本的迭代,App的啟動(dòng)速度提升了120%,Crash 率也由8‰降低到1‰。立下汗馬功勞的司馬雼被任命為項(xiàng)目組長(zhǎng)、技術(shù)指導(dǎo)、高級(jí)工程師。
盡管司馬雼工作兢兢業(yè)業(yè),也為我國(guó)的開(kāi)源事業(yè)添磚加瓦,還寫技術(shù)博客幫助了很多人。北京高昂的房?jī)r(jià)卻讓他有點(diǎn)羨慕那個(gè)被他鄙視了多年的許汜。
異史氏曰:Android工程師(在沒(méi)有“高級(jí)”等前綴時(shí))每天最多的工作都是UI的改來(lái)改去,想在平凡的工作中取得不平庸的業(yè)績(jī)就要付出努力,提升App的性能是有效途徑之一。貢獻(xiàn)開(kāi)源代碼和分享技術(shù)文章的時(shí)間也是可以擠出來(lái)的。如果在工作中有出色的成績(jī),升職加薪只是時(shí)間問(wèn)題。
第三回:桑梓惜別因緣淺 楷模入職即資深
詩(shī)曰:
北京買房要筑臺(tái),還有堵車與霧霾。
回到省會(huì)想定居,一問(wèn)工資又回來(lái)。
北京的房?jī)r(jià)、堵車、霧霾逼得司馬雼決定裸辭,逃離北上廣,他的目的地是上了七年學(xué)的合肥。他剛辭職,老東家的***競(jìng)爭(zhēng)對(duì)手(全國(guó)top 20)和另一家全國(guó)top 10的大廠都邀請(qǐng)他去面試。他兩個(gè)月來(lái)參加了這兩家大廠和合肥當(dāng)?shù)貎杉掖髲S的面試。
面試官首先詢問(wèn)的總是Java和Android的高級(jí)特性,Java的高級(jí)特性主要有JVM模型、類加載機(jī)制和GC原理等,Android的高級(jí)特性主要有幾大FLAG和LauchMode的區(qū)別和使用場(chǎng)景、Binder的引用和實(shí)體以及權(quán)限系統(tǒng)的交互等。司馬雼對(duì)技術(shù)鉆研很有深度,總是對(duì)答如流。
面試的第二階段就是讓司馬雼自己去講他做過(guò)的項(xiàng)目,然后面試官會(huì)冷不丁的讓他去解釋其中某一部分,有時(shí)候讓他解釋當(dāng)時(shí)為什么要這么做,有時(shí)候問(wèn)他現(xiàn)在覺(jué)得有沒(méi)有更好的辦法。司馬雼處理問(wèn)題的思路和解決問(wèn)題的能力給面試官留下了深刻印象。
面試官有時(shí)候會(huì)問(wèn)一些該企業(yè)所在行業(yè)需要關(guān)注的Android技術(shù),比如研究輸入法的公司會(huì)詢問(wèn)他Android手勢(shì)和多點(diǎn)觸摸,研究物聯(lián)網(wǎng)的公司會(huì)問(wèn)他Bluetooth相關(guān)知識(shí)等。因?yàn)樗抉R雼廣泛涉獵Android知識(shí),他的技術(shù)廣度也讓面試官嘖嘖贊嘆。
每次面試官問(wèn)司馬雼:“你還有什么想和我說(shuō)的嗎?”的時(shí)候,司馬雼就把他的技術(shù)博客和開(kāi)源項(xiàng)目一股腦砸向面試官,面試官是司馬雼的粉絲或者面試官正在用司馬雼的開(kāi)源項(xiàng)目的情況發(fā)生了好幾次。
司馬雼在合肥拿到了兩個(gè)資深A(yù)ndroid工程師的offer,盡管合肥房?jī)r(jià)不到北京的1/3,可是最多30W的年薪讓司馬雼在合肥買房遙遙無(wú)期。這時(shí)司馬雼接到了一個(gè)電話,逃離北京前面試的全國(guó)top 10的大廠給了他60W年薪和項(xiàng)目經(jīng)理、技術(shù)經(jīng)理、資深工程師的title。他決定逃回北上廣,逃離北上廣的計(jì)劃剛開(kāi)始就結(jié)束了。
異史氏曰:有多年工作經(jīng)驗(yàn)的求職者幾乎不需要在求職網(wǎng)站上投簡(jiǎn)歷,想讓你做他的同時(shí)的同行朋友會(huì)內(nèi)推你。社招面試和校招面試是不同的,社招面試沒(méi)有固定的問(wèn)題和模式,臨時(shí)抱佛腳是行不通的。社招面試基本都會(huì)考察這幾個(gè)問(wèn)題:***個(gè)階段是Android和Java的高級(jí)特性,考察技術(shù)深度;第二個(gè)階段是講述自己的項(xiàng)目,并在中間穿插著問(wèn)題,考察解決問(wèn)題的經(jīng)驗(yàn);第三個(gè)階段(未必有)是問(wèn)該公司所在行業(yè)需要掌握的Android知識(shí),考察技術(shù)廣度和快速上手情況。技術(shù)博客和開(kāi)源項(xiàng)目是很重要的加分項(xiàng),如果平時(shí)不積累、不分享,求職者會(huì)失去很多機(jī)會(huì)。二三線城市的房?jī)r(jià)更親民,但工資非常不人性,逃離北上廣需謹(jǐn)慎。
第四回:專家立功施小計(jì) 淑女出閨成大禮
詩(shī)曰:
經(jīng)驗(yàn)豐富技術(shù)精,消除隱患立大功。
全球大會(huì)登講臺(tái),抱得淑女入后宮。
話說(shuō)司馬雼所在的團(tuán)隊(duì)負(fù)責(zé)公司的Android客戶端的安全工作,工作內(nèi)容包含保活、防攔截、防篡改和防反編譯等工作。他發(fā)現(xiàn)自家App存在不少可能被惡意利用的隱患:
首先,壞人可以通過(guò)NotificationListenerService攔截自家App的推送,給用戶造成自家App沒(méi)有推送的假象。
其次,在上一條基礎(chǔ)上。壞人可以在虛擬機(jī)里運(yùn)行一個(gè)竊取推送App,收到自家App推送后,用AccessibilityService打開(kāi)Notification對(duì)應(yīng)的Activity,找到里面的WebView,然后取得鏈接及網(wǎng)頁(yè)中的內(nèi)容,稍加修改(換logo、改名字)推送給壞人自己的App。
此外公司的微信公眾號(hào)打開(kāi)自己App需要用瀏覽器打開(kāi)鏈接,這也給壞人以可乘之機(jī)。
更有甚者,壞人最喪心病狂的手段就是卸載了自家App后,在肉雞中安裝一個(gè)與自家App的packgaeName一致,但Signature不一樣而且沒(méi)有l(wèi)auncher的假App,這樣肉雞的用戶永遠(yuǎn)也安裝不了自家App,而且還不能用長(zhǎng)按拖拽桌面icon進(jìn)垃圾桶的方式刪除假App。
司馬雼花了兩年時(shí)間為公司消除了以上隱患,榮升架構(gòu)師、技術(shù)專家(時(shí)間沒(méi)錯(cuò),這是小說(shuō),出現(xiàn)未來(lái)時(shí)間很正常)。各大IT論壇、IT活動(dòng)的聘書(shū)和邀請(qǐng)函也如雪片般飛來(lái),不是邀請(qǐng)他做特約作者,就是邀請(qǐng)他當(dāng)講座嘉賓。
某IT大會(huì)在北京舉行,司馬雼作為特約嘉賓在臺(tái)上妙語(yǔ)連珠、口若懸河。大會(huì)期間,司馬雼結(jié)識(shí)了某IT社區(qū)的技術(shù)編輯椎名,這位淑女負(fù)責(zé)大會(huì)的后勤和報(bào)道工作。椎名不但知書(shū)達(dá)理、蘭心蕙質(zhì),相貌也傾國(guó)傾城,有詩(shī)為證:
樂(lè)天潯陽(yáng)歌《長(zhǎng)恨》,陳王洛水賦《感甄》。
摩詰青溪《西施詠》,瀟湘紅樓《明妃吟》。
沒(méi)錯(cuò),這詩(shī)集合了白居易《長(zhǎng)恨歌》、曹植《感甄賦》、王維《西施詠》、林黛玉《明妃吟》,椎名的美貌用古往今來(lái)的美女詩(shī)都擱一塊也寫不完。淑女椎名傾慕司馬雼的才華,從此司馬雼正式脫單。
不久,年薪100W的司馬雼在北京買房定居。又過(guò)了幾個(gè)月,這對(duì)為我國(guó)IT事業(yè)做出了巨大貢獻(xiàn)的情侶在北京舉辦了盛大的婚禮。
異史氏曰:公司大到一定程度,別有用心的競(jìng)爭(zhēng)對(duì)手就會(huì)搞小動(dòng)作,因此想成為大廠的技術(shù)專家,懂點(diǎn)安全方面的知識(shí)是很有幫助的。程序員是經(jīng)常被嘲笑為“注定孤獨(dú)一生”的群體,但出人頭地的程序員抱得美人歸的可能性非常大,畢竟女人的顏值通常和她的男朋友的收入成正比。
如果你也愿意分享你的故事,請(qǐng)加51CTO開(kāi)發(fā)者QQ交流群 312724475聯(lián)系群主小官,期待你精彩的故事!
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】