當前位置: 華文星空 > 知識

大二學生在 Android 與 Java EE 之間該如何做出選擇?

2017-01-16知識

謝邀。看題真是感慨萬千,說句有些冒犯的話,題主很可能是走到一條歪路上去了——Android研發水平跟你做幾個App,並沒有直接關系。以前面試過的一些畢業生,做過一些小有名氣的APP的不在少數,但是最後大部份不是被我拒了就是被我老大拒了——

  • 會寫Activity,但對於Activity的生命周期一知半解,對於DecorView、PhoneWindow、ViewRootImpl等關系更一無所知。
  • 會寫簡單的自訂VIew,但不懂View的Traversal機制(甚至說不出invalidate()的意義),不懂事件傳遞邏輯,基本上更說不出自訂動畫卡頓的最佳化思路。
  • 知道一堆開源框架: 知道Eventbus,但說不清什麽是事件總線;用過Retrofit,但搞不懂反射、動態代理是什麽;用過Dagger2,但完全沒聽過Java annotation processor是什麽,甚至都沒好奇過build/generated包下的程式碼咋生成出來的;用過realm,但是連Sql語句都寫不順溜。


  • 更別提執行緒、IO、NDK之類的了……所以才有這麽一句戲言:寫了十萬行Android程式碼,裏面九萬行XML……

    當然如果我以上說的這些題主已了然於胸,因此才產生厭倦情緒,那當我沒說。否則的話,Android系統是一座高山,你還只是剛剛邁過門檻而已,尚未開始攀登呢,就開始想寫網誌是否有點……咳咳。

    至於找工作,Java EE的執行緒、泛型、IO之類的一大堆基礎砸牢,無論是做Android還是轉Hadoop或者Spark,都一樣是必須的。 基礎是重中之重, 不是說對找工作有什麽幫不幫助,至少是重點加分項。這樣說吧,BAT裏大部份專案組的校招標準,會選擇招一個Java基礎吊打其它候選人的,而不是APP開發數量多但基礎稀松的。

    ======關於練手專案=====

    關於很多人私信我【寫個什麽專案練手最好】,我個人的感覺是——如果你不知道自己該搞Android還是Java Web,那就寫個IM聊天的專案,然後自己寫機器人程式做壓力測試。基本上能讓你把Java前端和後端的都涵蓋了。

    Android端:UI、訊息持久化(讀寫、緩存)、長連結網絡(解決NAT超時、DHCP續租、參考TLS1.3的安全機制、私有協定設計、大檔分片、失敗重試機制設計)、多執行緒、訊息推播、訊息同步等等。

    伺服端:持久化(表設計、分庫機制)、發送佇列、連線管理、並行、負載均衡等等……

    坦白說,現在您大二,邊做邊學,不驕不躁,這樣一個專案叠代兩年,比你兩年寫100個App都強。