悲哀!新“三無”Android開發進大廠成了無法企及的追求?這個機會到底怎麼獲得!

大廠offer是每個技術人的追求

我覺得每一個程序員的夢想大概就是能夠找一份大廠的 Offer,我覺得這很正常,這並不是我們的飯後談資而是每個技術人的追求。像阿里、騰訊、美團、字節跳動、京東等等的技術氛圍與技術規範度還是要明顯優於一些創業型公司/小公司,如果說能夠在這樣的公司鍛鍊幾年,相信對自己能力的提升還是非常大的。但不是每個人都能夠進入大廠的,這往往取決於我們的能力、學歷、面試表現等因素。

現在面試大公司你說你沒有大型項目開發經驗估計都拿不出手,jetpack、NDK、插件化、熱修復理論等等已然大廠面試所必須的知識。但是,你真進入大廠了,可能幾年都用不上這些知識,還是老老實實去寫CRUD。

與其抱怨,不如提高自己

相比於前幾年來說,現在的面試難度提升了不少。你說說現在程序員這麼多,你投遞的公司可能與你一起投遞的就有300人,可人家只招5人,那怎麼辦?簡歷PASS掉一大批,然後面試再PASS掉一大批。從這樣來看,現在流行說的:“面試造火箭,工作擰螺絲”還是很有道理的,提高面試難度只是爲了從很多人中招到自己需要的那些人。

很多人都抱怨現在工作越來越難找了,的確,互聯網行業現在確實沒有之前好找工作了。我覺得有很大一部分原因是現在的培訓班培訓出來了太多半路出家的程序員,培訓班打着保障你高薪就職的稱號引誘了很多人進入這個圈子。我並不是對半路出家的人有偏見,只是一個事實就是培訓班出來的一些人是真的無法勝任很多工作。

一是大部分培訓班的培訓水分特別大,說白點,很多培訓班就是爲了圈錢;二是半路出家的人的基礎肯定是沒有大學習踏實學習計算機知識的人好的,這就造成很多培訓班出生的人很難往前走;三是互聯網行業確實對年輕的人有一部分偏愛,畢竟剛畢業的大學生還是比較廉價的,但是互聯網行業並不是喫青春飯。

所以,不管是培訓班出生、應屆生還是工作幾年的小夥伴都要對自己有一個清晰的認識,搞清楚你自己所欠缺的能力,搞清楚你自己的優勢(企業爲什麼要招你)。知道自己不足的地方之後,就要去努力!

互聯網行業其實還是挺公平的,雖然面試的時候會將你的學歷作爲參考,但是如果你的能力真的厲害,你的簡歷真的豐富的話,面試官還是會很欣賞這樣的應聘者的。

互聯網競爭激烈,但是我們這些移動開發者來說可能競爭會相對於更加強烈一點,畢竟現在大環境形勢也沒有之前好了,下面來講講身爲Android開發的那些“悲哀”。

移動開發程序員的那些“悲哀”

移動開發程序員完全是一個刀口舔血的職業!

我今年33歲,身邊熟悉的不少朋友,從事互聯網行業,年齡在 40 歲附近。常常,我通過觀察他們,想象自己的未來的樣子。

這些朋友,更準確的說,是我的老師,師兄,前輩,在40歲的年紀,人生境況各不相同。

有位師兄,打拼多年,現在的職級是阿里 P9。這一兩年和他聯繫較多,主要是作爲晚輩後生請教問題。阿里集團有十萬員工,在 P9 職級的員工只有寥寥千人,所能夠獲得的工資和股票,遠遠超過了普通人的期望。我問過他,怎麼看待這幾年愈演愈烈的中年危機話題。他沒有多說,只淡淡的提了一句,「其實不是像大家講的那樣緊張,如果三四十歲,職級還是 P6,能不中年危機嗎」,這裏需要說明一下,阿里的碩士入職定級一般是 P5。

我們來品品這句話,是有一定信息量的。誠然,以這位師兄取得的成績和社會地位,中年危機對他來說,可能是沒有親密接觸過的。但從以往的交流中,我知道師兄熱愛思考,也熱愛與人打交道,甚至對我這樣一位寂寂無名的晚輩後生都經常保持聯繫。所以他對社會百相是有着高於一般人的認知的。他之所以這樣說,其實是想告訴我,在他的觀念裏,與其說職場中年危機是一種現象,倒不如說是一種結果。

何出此言,從畢業後的二十多歲,到可能出現中年危機的三四十歲,這十幾年裏,有些東西的改變是我們無法阻止的,例如身體機能的下降,精力明顯沒有青年時旺盛了。但有些東西,是我們可以爭取的。

像師兄說的,如果一個程序員,人近中年,還在相對而言較低的職級位置上,這十幾年的時間,基本是處於一種原地踏步的狀態,過着溫水煮青蛙的日子,技術深度和廣度都停滯不前,當公司的效益下滑時,很容易成爲優化的目標。

特別是我們移動開發人員,以前小廠需要分別招一個IOS和Android開發人員,Flutter技術的升級使用,實現了跨平臺開發,公司崗位需求變成了只招一個Flutter技術開發人員就可以滿足部分需求了。裁員縮減成本就成了懸在移動開發人員頭上的一把利劍,隨時會降臨到自己身上!

關於移動開發程序員的通病

1、一些馬上畢業的同學和已經畢業一年從事Android開發相關的工作的初級開發者,往往會有這樣的疑惑,不知道要學習什麼東西。自己摸索着學習呢,又不知道學習的路線對不對,發愁啊。

實話說這個蠻正常的,咱們Android開發要學的東西也不少,大多數開發者都會有這種時期,當自己項目完成、處於維護階段的時候,工作不忙,想自己學習,但是又不知道(我也想學習,可現實她不允許啊)

從何學起?怎麼學?東一榔頭西一棒子,最終收穫甚少。然後開始自我懷疑,厭倦學習,從此墮落。

2、還有一些高級工程師除了代碼,完全不知道這個世界是怎麼運轉的。

  • 你知道怎麼與陌生人打交道嗎?
  • 你知道怎麼推銷產品嗎?
  • 你知道你一個東西做出來,怎麼把它推廣出去嗎?
  • 你知道除了技術以外,互聯網的衆多行業是怎麼掙錢的嗎?

如果這些都不懂,恭喜你,你是純純的程序員,將來被優化以後,你將完全不懂如何生存。

那我們應該怎麼辦呢?

只說問題,不講方案,不是我的風格,透過問題看到本質,進而給出解決方案纔是。

既然知道了問題的本質,那答案就很簡單了,程序員的小夥伴們,不要兩耳不聞窗外事,一心只讀聖閒書了。

具體怎麼做呢?

1、儘量讓自己擁有較長時間競爭力的技能和思想。

比如說,很多年輕人熱衷於學習新的工具,新的編程語言,學習在新的平臺做系統,當然,這是有一定紅利期的,但作爲個人的競爭力,稍過幾年,很可能就一文不值。

我應該是中國最早寫cold fusion代碼的人,誰還知道這是啥玩意,是中國最早翻譯asp教程的人,也是中國最早一波寫php代碼的人,從當時看,很牛逼對不對,過不了幾年,這玩意也算競爭力?

什麼是競爭力,多理解系統底層的邏輯和思想,諸如內存分配的機制,多理解數據結構的原理和設計理念,這些也不能說永遠都有競爭力,但如果理解到位,並且應用得當,至少可以保證二三十年自己的思想不會在業內落伍。

具有發現問題的敏銳度,掌握分析問題的方法和思路,也能讓自己職場競爭力相對牢固一些。

那些中年技術大咖,你讓他們繼續跟年輕人一起比敲代碼,真敲不過,當然個別有還能敲得很利索的,大部分可能已經無法熟練的使用具體的編程工具和具體的特定算法,跟優秀的年輕人比拼了,但他們知道如何有效的在複雜的系統中發現問題,定位問題,並針對性的給出解決問題的方向,這就是競爭力,這個競爭力,依然可以持續很多年。

2、站的越高,位置越穩。

如果你曾經站在Top 1/1000的優勢位置,雖然來了很多優秀的年輕人,你可能力不從心,掉到了Top 1/100。雖然沒有曾經的光輝,但仍然具有足夠的競爭力。仍然配得上非常優秀的標籤。

如果你沾沾自喜自己現在屬於Top 20%的優秀人羣,但年輕人一波波衝進來,你眼看着自己掉到了 Top30%, Top40%, Top50%,對不起,優秀倆字從此與你無緣。

3、即便力不從心,也要奮力向前。

你說一代更比一代強,有的時候真的力不從心,但看你目標是什麼,想獨孤求敗,一覽衆山小,可能越來越難。但畢竟!畢竟大部分人是懶惰,缺乏耐心的。想讓自己超過大多數人,畢竟沒那麼難。

TK教主有句話很經典,具體原文找不到了,大概意思我整理一下,如果你否定天分的存在,只強調勤奮努力,那就是蠢。但如果你因此認爲勤奮努力沒有用,那就是又懶又蠢。

比如我這些年一直下圍棋,學習新的定勢,不斷提升棋力,實話說,以我的水平,你說打職業比賽,開玩笑,差距太大了。每年會有大量學棋青少年超過我的水平,這是擋不住的,認了,但只要我堅持進步,就會超過很多停步不前的圍棋愛好者,我四十多歲,還在漲棋,沒有年輕人學的快是真的,但總有大量停步不前的圍棋愛好者會被我超越對不對。

只要你肯進步,總會超越大量不進步的人。對於普通人來說,這就足夠了。

4、廣結善緣,穩固地位。

趁着自己優秀的時候,多幫助和扶植優秀的年輕人,我一直是這麼強調的,等他們足夠優秀了,你的地位和影響力會越加穩固。

有些人覺得,教會徒弟,餓死師傅。幹嘛不給自己留點競爭力。

現在這個社會,優秀的人才太多,優秀的年輕人太多,你不教,別人也會教,你的徒弟不搶你的飯碗,別人的徒弟也會搶你的飯碗。你結善緣,還能等他們成長起來感恩回饋,你藏着掖着,最後你真的以爲能守住什麼競爭力?搶你飯碗的年輕人會在任何角落裏冒出來。

5、提升視野,向上發展。

一個人在職場如果經歷了很多事情,經歷了很多歲月,多半總會有點優勢,這個優勢叫做見識,你知道一個企業是怎麼成,怎麼敗的,你知道一個產品是怎麼做起來,怎麼壯大的。這就是你的競爭優勢,年輕人學的算法再好,很多想法再優秀,沒有見識過大場面,總會缺那麼一點格局和視野。

但可怕的是,很多人雖然經歷了很多事,卻沒有見識,匱乏視野。

比如簡單化,標籤化的看待問題,老闆當時成功是因爲運氣比較好。

比如從不關心產業和市場變化的情況,一直隨波逐流。

比如在自己的工作職能之外,毫不關心合作伙伴,上下游,同行的生存和發展話題。

當然也比如更常見的,只關心行業八卦話題,對各種巨頭老闆的緋聞八卦如數家珍,對各種真真假假的小道消息樂此不彼。並以爲這是見識,視野。

所以,當更有活力,更便宜的年輕人衝上來,他們的教育背景比你更好,他們的算法邏輯比你更清晰,你還剩下什麼,信謠傳謠的能力和素質?

還想安安靜靜當個螺絲釘?對不起,你生鏽了。

總結一下,優秀的門檻越來越高,這是歷史趨勢,誰也擋不住。

但任何時代,大部分人總是會固步自封,隨波逐流,隨着歲數增長,你可能真的無法擋住優秀的年輕人超越你,但你只要肯進步,總會不斷超越那些停步不前的大多數。

另外就是廣結善緣,提升格局,不要讓自己停留在跟年輕人競爭基本戰鬥能力的場景裏,那樣你就很難維持競爭力了。

那些雙非/三本/專科學校的Android開發,有機會進入大廠嗎?

我自己也是非985非211學校的,結合自己的經歷以及一些朋友的經歷,我覺得讓我回答這個問題再好不過。

首先,我覺得學校歧視很正常,真的太正常了,如果要抱怨的話,你只能抱怨自己沒有進入名校。但是,千萬不要動不動說自己學校差,動不動拿自己學校當做自己進不了大廠的藉口,學歷只是篩選簡歷的很多標準中的一個而已,如果你夠優秀,簡歷夠豐富,你也一樣可以和名校同學一起同臺競爭。

企業HR肯定是更喜歡高學歷的人,畢竟985,211優秀人才比例肯定比普通學校高很多,HR團隊肯定會優先在這些學校裏選。這就好比相親,你是願意在很多優秀的人中選一個優秀的,還是願意在很多普通的人中選一個優秀的呢?

雙非本科甚至是二本、三本甚至是專科的同學也有很多進入大廠的,不過比率相比於名校的低很多而已。從大廠招聘的結果上看,高學歷人才的數量佔據大頭,那些成功進入BAT、美團,京東,網易等大廠的雙非本科甚至是二本、三本甚至是專科的同學往往是因爲具備豐富的項目經歷或者在某個含金量比較高的競賽比如ACM中取得了不錯的成績。一部分學歷不突出但能力出衆的面試者能夠進入大廠並不是說明學歷不重要,而是學歷的軟肋能夠通過其他的優勢來彌補。

所以,如果你的學校不夠好而你自己又想去大廠的話,建議你可以從這幾點來做:

①儘量在面試前最好有一個可以拿的出手的項目;
②有實習條件的話,儘早出去實習,實習經歷也會是你的簡歷的一個亮點(有能力在大廠實習最佳!);
③參加一些含金量比較高的比賽,拿不拿得到名次沒關係,重在鍛鍊。

非計算機專業的學生能學好Android嗎?我能進大廠嗎?

當然可以!現在非科班的程序員很多,很大一部分原因是互聯網行業的工資比較高。我們學校外面的培訓班裏面90%都是非科班,我覺得他們很多人學的都還不錯。另外,我的一個朋友本科是機械專業,大一開始自學安卓,技術賊溜,在我看來他比大部分本科是計算機的同學學的還要好。參考Question1的回答,即使你是非科班程序員,如果你想進入大廠的話,你也可以通過自己的其他優勢來彌補。

我覺得我們不應該因爲自己的專業給自己劃界限或者貼標籤,說實話,很多科班的同學可能並不如你,你以爲科班的同學就會認真聽講嗎?還不是幾乎全靠自己課下自學!不過如果你是非科班的話,你想要學好,那麼註定就要捨棄自己本專業的一些學習時間,這是無可厚非的。

建議非科班的同學,首先要打好計算機基礎知識基礎:

①計算機網絡
②操作系統
③數據機構與算法

我個人覺得這3個對你最重要。這些東西就像是內功,對你以後的長遠發展非常有用。當然,如果你想要進大廠的話,這些知識也是一定會被問到的。另外,“一定學好數據機構與算法!一定學好數據機構與算法!一定學好數據機構與算法!”,重要的東西說3遍。

移動端開發需要怎麼增強自己的式?

首先明確一個觀點,那就是移動開發是必須有的,只要平臺在原生開發就必須有。但是渾水摸魚的日子沒有以前那麼好過了,因爲小程序和各種跨平臺開發讓企業有了更多的選擇。

如果你還想做界面開發,那麼增強你的能力廣度是必須的,比如:

  • 小程序的上手並不難,同時還有諸如 uni-app 、taro、chameleon 可以幫助上手。
  • 通過學習 React-Native 來認識前端開發,學習 React、CSS、JavaScript 等相關能力,只要你會 RN 其實等同於你已經學會了小程序。
  • 瞭解學習諸如 Flutter 、 PWA 、WebAssembly 等新的技術迭代。

當然,最後不要落下數據結構與算法、計算機原理等基礎知識,這些纔是程序員後期的競爭力,如果想要把握更多的當然你也可以學習後端開發相關的知識。

如何學習提高個人硬實力?

我在這裏所說的個人硬實力更多的指的是個人的專業能力,比如構建高質量網站的能力或者是對專業知識的掌握程度。

多去實踐,將學到的東西運用到實際項目中去。很多人都找我抱怨過沒有實際項目讓自己去做。下面我會介紹到幾種讓你可以有項目經驗的方式,項目經驗對於技術能力的提升和麪試都是很重要的。

想要提高個人硬實力,那麼學習一門新技術的方法一定是至關重要了。

Android學習是一條漫長的道路,我們要學習的東西不僅僅只有表面的 技術,還要深入底層,弄明白下面的 原理,只有這樣,我們才能夠提高自己的競爭力,在當今這個競爭激烈的世界裏立足。

如果你覺得自己學習效率低,缺乏正確的指導,可以參考下我下面分享的學習路線:

  • 架構師築基必備技能:深入Java泛型+註解深入淺出+併發編程+數據傳輸與序列化+Java虛擬機原理+反射與類加載+動態代理+高效IO
  • Android高級UI與FrameWork源碼:高級UI晉升+Framework內核解析+Android組件內核+數據持久化
  • 360°全方面性能調優:設計思想與代碼質量優化+程序性能優化+開發效率優化
  • 解讀開源框架設計思想:熱修復設計+插件化框架解讀+組件化框架設計+圖片加載框架+網絡訪問框架設計+RXJava響應式編程框架設計+IOC架構設計+Android架構組件Jetpack
  • NDK模塊開發:NDK基礎知識體系+底層圖片處理+音視頻開發
  • 微信小程序:小程序介紹+UI開發+API操作+微信對接
  • Hybrid 開發與Flutter:Html5項目實戰+Flutter進階

知識梳理完之後,就需要進行查漏補缺,所以針對這些知識點,我手頭上也準備了不少的電子書和筆記,這些筆記將各個知識點進行了完美的總結。

接下來分享的系統學習資源以詳解各大互聯網公司的 Android 常見面試題爲主線,從面試的角度帶你介紹必備知識點,以及該知識點在項目中的實際應用

幫你在現在的基礎上,重新梳理和建立 Android 開發的知識體系。無論是你短期內想提升 Android 內功實力,突破自己工作中的能力瓶頸,還是準備參加 Android 面試,都會在這份資料中有所一些收穫。

1.2020大廠面試高頻知識點

  • 圖片
  • 網絡和安全機制
  • 數據庫
  • 插件化、模塊化、組件化、熱修復、增量更新、Gradle
  • 架構設計和設計模式
  • 性能優化
  • Android Framework
  • Android優秀三方庫源碼

2.Jetpack架構組件從入門到精通

  • Android Jetpack - Navigation
  • Android Jetpack - Data Binding
  • Android Jetpack - ViewModel & LiveData
  • Android Jetpack - Room
  • Android Jetpack - Paging
  • Android Jetpack - WorkManger
  • Android Jetpack架構組件之Lifecycle
  • Android Jetpack Compose 最全上手指南

3.Framework精編內核解析

主要內容包含:

  • 深入解析Binder
  • 深入解析Handler
  • Dalvik VM 進程系統
  • 深入解析 WMS
  • PackagerManagerService

4.Kotlin強化實戰(附Demo)

  • 第一章 Kotlin入門教程
  • 第二章 Kotlin 實戰避坑指南
  • 第三章 項目實戰《Kotlin Jetpack 實戰》
    • 從一個膜拜大神的 Demo 開始
    • Kotlin 寫 Gradle 腳本是一種什麼體驗?
    • Kotlin 編程的三重境界
    • Kotlin 高階函數
    • Kotlin 泛型
    • Kotlin 擴展
    • Kotlin 委託
    • 協程“不爲人知”的調試技巧
    • 圖解協程:suspend

5.Android設計思想解讀開源框架

  • 熱修復
  • 插件化
  • 組件化框架設計
  • 圖片加載框架
  • 網絡請求框架
  • RXJava 響應式編程框架設計
  • IOC 架構設計
  • Android架構組件Jetpack

6.NDK模塊開發

  • NDK 模塊開發
  • JNI 模塊
  • Native 開發工具
  • Linux 編程
  • 底層圖片處理
  • 音視頻開發
  • 機器學習

7.Android源碼解析

“編程語言是程序員的表達的方式,而架構是程序員對世界的認知”。所以,程序員要想快速認知並學習架構,讀源碼是必不可少的。閱讀源碼,是解決問題 + 理解事物,更重要的:看到源碼背後的想法;程序員說:讀萬行源碼,行萬種實踐。

主要內含微信 MMKV 源碼、AsyncTask 源碼、Volley 源碼、Retrofit源碼、OkHttp 源碼等等。

以上這些內容均免費分享給大家,需要完整版的朋友,點這裏可以看到全部內容。或者點擊 【這裏】 查看獲取方式。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章