正好在離職交接空檔期,就抽空簡單分享自己的一些個人經歷給大家,希望對剛畢業不久或者作業三五年的同學能有一些幫助,
1:個人經歷
提文前先來一些簡單的自我介紹,這部分水分較多,如果沒興趣的同學可以直接跳到第二部分看些面試題,
我是16年本科畢業,畢業第一年在福建上班,17年到杭州,來杭州前,自己花了很長時間準備面試,本來信心滿滿,但是到了杭州,還是遇到很大的挫折,我還記得,當時有一個面試官問我說你說下什么是組件化和插件化,我當時就卡殼了,雖然面試前做了很多準備,看了很多開源框架設計思想的東西,并且說專案的時候也吹了一把,專案如何用到,但是當面試官叫我簡單講組件化和插件化的區別的時候,居然一時答不上了,現在想想真的很尷尬,
但杭州不愧是互聯網之都,機會真的非常多,也可能是跟我前期準備比較足有關系,或者是我面的公司都比較小還是公司比較缺人的原因,反正記得當時我也拿了挺多offer,后面經過朋友推薦,選擇了一家阿里系的合資公司,現在回過頭來想想,真的非常感謝在杭州第一段作業的這段經歷,在這里我遇到了很多很多優秀的同事(后面這些同事絕大多數也都去了阿里),也遇到了很不錯的老板,
現在回想,真的很慶幸當時遇到的同事,我們當時那個團隊真的氛圍非常好,學習氣氛很濃烈,我們當時經常私下組織技術分享,那段時間成長了非常非常多,不僅僅是最前沿的互聯網技術,還有學習習慣, 在這家公司我得到了非常多的機會,并且每個機會我也都把握住了,半年后我甚至都當上了5、6個成員的小組組長,當時距我畢業還沒兩年,我還記得當初晉升談話的時候,有個評委跟我說的,你才剛畢業兩年就開始帶人了,這個對你是挑戰也是一個坑,不管是技術和經驗你都非常欠缺,一定不要迷失自己,對技術要始終抱有熱情,不斷進步, 這句話我也同樣送給在規模比較小的公司,剛開始作業不久就開始帶人的其他同學,
到18年中,我跳槽到了螞蟻金服,就是做花唄借唄的那個阿里巴巴下面的螞蟻金服,當時跳槽純粹是因為身邊很多同事都慢慢收到阿里的offer,其實作為我們當初那個階段的計算機專業的人來說,基本都有一個BAT的夢(現在是2021年了,可能當初的BAT已經不那么香了),我看到大家都出去嘗試也心動了,就投了阿里的崗位,應該算是一點實力加一點運氣吧,本來我是面的釘釘,后面陰差陽錯去了螞蟻金服,
螞蟻金服我是18年8月入職的,到21年的1月底,差不多兩年半時間,因為我現在還在職,處在交接階段,這里有很多事就不方便說了,在這里我遇到過很多挑戰,同時也遇到很多牛逼的同事,學習到了很多做事方式,即將離開螞蟻了,這里我也總結幾個作業經驗,包括我自己做的不好的幾個地方,希望對后面的同學有一點借鑒:
1: 在阿里這種大廠,其實在很多公司也一樣,溝通和反饋是非常非常重要,一味的埋頭苦干的人其實是很吃虧的,我見過好幾個踏實做事的同學被打上’325’走人的,所以一定要學會在老板和同事面前包裝和表現自己,
2: 需求太多、運維作業量太大,平時各種瑣事會充滿你所有的時間(甚至包括你的睡眠時間和周末時間),一定要學會解脫(思考解法或者尋求幫助再或者甩給別人),然后自己抽身去做些有成長有意思的事情,只有這樣你才有時間去搞些容易拿KPI的專案,不然到時候你剩下的只有抱怨為什么這么忙,為什么臟話累活都是你干,實際上這些抱怨一點用都沒有,在老板和大多數人眼里,只能說明你什么事都搞不定,以結果為導向的價值觀里,程序是不重要的!
3: 一般人的作業目的無非是為了在同等的條件下,獲取更高的物質回報,如果你確實努力了也拼命了,還是得不到老板的精神認可,獲取不到自己想要的物質回報,你要么改變自己,要么就改變環境-或者換個環境,
4: 作業是公司的,只有技術、成長還有健康是自己的,此處不留爺,自有留爺處,但是打鐵還需自身硬,說白了,你想跳槽也是要看你實力,在日常作業中一定要抽時間多學習多總結,互聯網這行業,技術更新換代速度太快,只有自己成長才是王道,
2:面試經驗
我面的崗位是Android開發,前前后后面了很多一二線互聯網公司,其中包括騰訊,阿里,滴滴,網易,美團、頭條、快手等等,下面的文章水分較少,都是一些面試干貨,希望能為大家圈一些“考試范圍”,給大家面試帶來一點點幫助,
第一個我要說的就是面試時間點很關鍵,這直接決定了你的競爭力和拿到offer的難度,同一個崗位,不同時間點面試,難度和要求是不一樣的,因為這里要看缺人的程度和崗位HC的數量
根據我的觀察在杭州互聯網的話,一般每年年底機會比較多,另外就是如果有認識的人,推薦的比較急的或者“放水”幾率比較大的崗位的話,那么你拿到offer的可能性自然而然就比較高,這就是我前面說的面試是實力的基礎上加一點運氣,
第二個點,Android基礎,我是畢業4年半,即將5年,面的崗位有開發工程師,有開發專家(近期也拿到過一二線廠的開發專家的offer),基本每次面試都要準備一下Android面試常見的“八股文”,也基本每次都會被問到,比如Activity、Service、比如Handler NDK,等等,這些基礎的肯定要掌握,甚至要滾瓜爛熟,舉一反三,
第三點:筆試題,最近兩年的面試一些大廠基本都要做一些筆試題,一般都是牛客網上面出題,這些題大多數都是一些演算法題,基本都是leetcode的原題,所以要準備面試的同學,要提前適應一下,去leetcode上面刷刷題,一般面試官會根據你的面試表現然后出一些不同難度的題目,如果你面試問題回答的比較好,給的題目就相對比較簡單,如果回答的不好,可能就直接給你一道hard,
不過根據我的經驗,大多數情況給的題都是leetcode上面熱題100的中等難度的原題,我這里整理了一些我最近兩個月面試程序中遇到的筆試原題,供大家參考:點此處GitHub查看完整題庫,
第四點,各種常用的性能優化、原始碼:一定要掌握他的原理,如果有時間最好擼一下核心原始碼,一般的面試官很喜歡問這些東西,特別是小廠跳大廠的時候,這些知識點大家可以根據網上的文章和自己的情況去做一些相應的準備, 這里東西太多,我就不做總結了,
第五點,專案,說專案的時候如果是業務專案,就要體現出專案的難點和解法,最好有高并發、大資料量,怎么保證穩定性等等,如果是框架型的專案,就要體現出他的平臺性、怎么保證高可靠等等,然后就是你在專案中做的哪些比較有特色的事,最難的事情(這個時候就是要活學活用了,不管是不是你做的,你只要能說的上來就是你的),
這里可能有很多同學沒接觸到什么有難度的專案,就是專案在面試官眼中是沒什么挑戰性的,那這個時候你最好要準備一個中間件類似的專案說一下,來吸引一下面試官的眼球,比如限流、比如任務調度、比如配置平臺等等,這些都是通用的萬能的專案,很容易集成到自己的業務專案中,
3:小結
離職交接期無聊,就簡單的回顧一下自己的這幾年的一些作業經歷,順便把這段時間積累的一些面試經驗分享給大家,希望對大家有一點點幫助,
4:寫在最后
我現在已經入職新公司了,之前寫這篇文章是為了分享自己的一些經驗,另外下面分享一份由阿里九位架構師聯合發布的Android架構師成長學習路線與學習資料:
1.架構師筑基必備技能:
Android應用是由Java語言進行開發的,SDK也是由Java語言撰寫,所以我們要學習java語言,另外,雖說kotlin語言得到了Android官方的熱推,但是kotlin也是編譯成了java語言再運行的,對于Android來說,只要SDK沒有用kotlin重寫,那么Java語言是都需要學習的,而且Androidapk的后臺服務器程式大概率是java語言構建,所以學習java也是一種必然,
那么Java中哪些東西是我們Android程式員需要學習的呢?由于Android程式員習慣了CV代碼塊,所以與Android中比較相關的稍微比較難的Java基礎幾乎都是一個門檻,像泛型,多執行緒,反射,JVM,高效 IO,注解,序列化等,都是被CV的物件,而程式員是不懂原理的,具體內容如圖所示,

2.Android框架體系架構——Andlroid高級UI與FrameWork原始碼
說到FrameWork別的不說,你只要去 Github上看一下騰訊Matrix的原始碼,就知道Framework 的知識有多重要了,像掉幀監控,函式插裝,慢函式檢測,ANR 監控,啟動監控,都需要對 Framework 有比較深入的了解,才能知道怎么去做監控,利用什么機制去監控,函式插樁插到哪里,反射呼叫該反射哪個類哪個方法哪個屬性……

3. 360°全方面性能調優
Android性能調優方面包括了很多知識點,其中關鍵的就有設計思想與代碼質量優化, 程式性能優化,和開發效率優化, 我們開發者將這些統稱為Android360°全方面性能調優, 其實在軟體開發程序中,想必很多讀者都遇到過系統性能問題,而解決系統性能問題的幾個主要步驟是:
測評:對系統進行大量有針對性的測驗,以得到合適的測驗資料,
分析系統瓶頸:分析測驗資料,找到其中的hotspot(熱點,即bottleneck),
性能優化:對hotspot相關的代碼進行優化,

4.解讀開源框架設計思想
在Android開發中開源框架設計思想中的知識點也是較為重要的,相信大家都可以看到在每個公司招聘當中,對Android開源框架要求都是比較嚴謹的,而想要完全搞懂還得學會整理和規劃:我們常見的Android熱修復框架、 插件化框架、 組件化框架、 圖片加載框架、 網路訪問框架、 RxJava回應式編程框架 , IOC依賴注入框架、最近架構組件Jetpack等等Android第三方開源框架,這些都是屬于Android開源框架設計思想的,如下圖所示:

5.NDK模塊開發
Android平臺從誕生起,就已經支持C、C++開發,眾所周知,Android的SDK基于Java實作,這意味著基于Android SDK進行開發的第三方應用都必須使用Java語言,但這并不等同于“第三方應用只能使用Java”,在Android SDK首次發布時,Google就宣稱其虛擬機Dalvik支持JNI編程方式,也就是第三方應用完全可以通過JNI呼叫自己的C動態庫,即在Android平臺上,“Java+C”的編程方式是一直都可以實作的,在最近比較吃香的音視頻開發技術也是屬于NDK模塊開發,關于音視頻進階方面可看這篇文章:關于音視頻進階方面可點擊這篇文章:作為一個Android程式員,精通音視頻開發,寒冬再冷也凍不到你

6.架構師練成實戰
在學好以上知識后就應該運用到實戰當中了,在常見的實戰當中:架構設計,網上商城專案實戰,新聞客戶端專案實戰,多格式播放器專案實戰,Gradle自動化專案 都是屬于重中之重的,

當然還有小程式專案實戰也是Android開發者必須搞懂的:

7.微信小程式
阿里架構師對小程式的看法:
第一點,不管小程式能不能在未來的時間里在移動端大放異彩,學習它,掌握它,都是沒有任何壞處的,
第二點,就目前的版本而言,還是太過封閉,開發小程式就感覺像是在微信給我們劃定的一個小圈子里兜兜轉轉,在圈里也許我們能得到很良好的開發體驗,但是一步都出去不得,
第三點,在性能與便捷之間,最終往往會是便捷取勝,
第三點,能用 js 開發的,最終都會用 js 開發,

8.Hybrid開發與Flutter
想要成為一名優秀的架構師,需要掌握的知識是有點篇多,出來新的技術也不能落下學習,正像Flutter
在flutter中,一切皆控制元件!一切皆控制元件!一切皆控制元件!牢牢記住這個概念,Text是控制元件,Image是控制元件,Icon是控制元件,布局腳手架也Scaffold也是控制元件,甚至整個APP也是控制元件,

學習大綱配套學習筆記:
1.架構師筑基必備技能:
2.Andlroid高級UI與FrameWork原始碼:
3.360°全方面性能調優:
4.解讀開源框架設計思想:
5.NDK模塊開發:
6.架構師練成實戰

7.微信小程式:
8.Hybrid開發與Flutter:
如果你正在走往架構師的道路上迷茫了,感覺自己的所知知識已經膨脹了,那么可能你學的多而不精,缺少一份完整的學習思路大綱,我想此篇文章正好能夠幫助到你,小公司的可能沒有架構師這個概念,大公司的架構師職位又不是那么容易拿下,但不管怎樣,不斷去學習新的技術,提升自己的層次是很有必要的,無論你在哪一家公司,過硬的技術水平才能吃得開,
文中所有資料和完整架構師學習大綱可以直接點此處免費獲取,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/263876.html
標籤:其他
