03.05 態度決定成敗:大專畢業的我如何在25歲時拿到了阿里P6的offer?

閱讀前請點擊右上角“關注”,每天免費獲取Android知識解析及面試解答。Android架構解析,只做職場乾貨,完全免費分享!

你是否和我一樣,也曾因為自己的學歷低而煩惱?

首先申明我是一個大專生,很爛的一個學校,大學學Android,我什麼都沒學會,四級考到大三才過,可想我大學成績有多差。其實我高中小學成績可以,當年高考與二本線也就差幾分,三本沒去去了專科,雖然不後悔,但有深深的遺憾。

因為很多公司,尤其是知名公司招聘第一條就是本科以上學歷。所以大多數情況下門都進不去的。所以本人繞了一個大大的圈子,歷經四年才“真正”進入阿里,享受正式員工的福利待遇。

這些年的經歷,本人深深感到身邊圈子的重要,因為起點低,身邊都是普通的人,自己的視野打不開,連努力方向都不知道。中途想改變,卻茫然無力。最後只能一步步去更好的公司,與更優秀的人共事。終於花了四年光陰,極好的運氣,趕上了別人的起點。

態度決定成敗:大專畢業的我如何在25歲時拿到了阿里P6的offer?

記得剛畢業的我找了幾份工作,做的較長時間的一份工作實在江蘇南京,一家普通軟件公司APP產品運營。不算專職敲代碼,做了半年,發現工資低,沒有晉升空間,又沒有技術傍身。因此又動了辭職的念頭,開始了投遞簡歷之旅。

終於接到了阿里的外包,優酷的工作機會。猶豫了很久,雖然是外包公司,但想著能去更好的公司,與更優秀的人共事。所以還是果斷辭職去了。

剛開始的我一直加班,覺得很累,比起身體更勞累其實是心累!

態度決定成敗:大專畢業的我如何在25歲時拿到了阿里P6的offer?

學校的東西在公司根本不夠用,寫需求時比較吃力,儘管很努力地去想去寫了,但是寫出來的代碼質量自己都覺得差,也被別人懟過幾次了。每天壓力都很大,很焦慮。

為了留下來,代碼寫不好,懂得又不多,只能經常向公司老員工請教,人生的發展,離不開貴人的相助。同組的高爺,當時就已經是阿里P8架構師,給了我很多幫助和鼓勵,除了在工作中幫助我分析解決問題,還建議我多學習和注重能力提升。

結合高爺的建議,和自身的學習積澱,給大家分享一些學習心得:

關於Java

Java 是 Android App 開發默認的語言, Android Framework 也是默認使用 Java 語言,熟練掌握 Java 語言是 Android 開發者的必備技能。高爺同時還贈送了我幾本書,《Java核心技術》、《Java併發編程的藝術》、《深入理解Java虛擬機》。至今翻看這些書都覺得獲益匪淺,當然現在這些書我也都蒐集到了PDF版本。需要的朋友可以自行前往免費下載。

態度決定成敗:大專畢業的我如何在25歲時拿到了阿里P6的offer?

需要上述資料的朋友,可以點擊關注+轉發+私信**學習**前往免費領取!

關於kotlin

Google 幾年前就開始走 “Kotlin First” 的路線,目前很多官方的文檔和 Demo 都是使用 Kotlin 語言作為默認,Kotlin 的重要性不言而喻。

我算是第一波開始跟風學習和接觸這項技術的人,現在阿里項目上也在使用Kotlin語言,也算趕上了好的時候。當然中間的學習過程,我也有從培訓機構學習和借鑑了很多技術。

態度決定成敗:大專畢業的我如何在25歲時拿到了阿里P6的offer?

需要上述資料的朋友,可以點擊關注+轉發+私信**學習**前往免費領取!

Android Studio

Android Studio IDE Overview

Android Studio 作為 Android 默認的開發者工具,目前的版本更新已經解決了諸多之前的性能問題,雖然目前對硬件資源的要求仍然比較高,但是一旦你接受了這個設定,真香預警!

AS 主要需要熟悉下面幾點

  1. AS 快捷鍵
  2. AS 插件
  3. AS Profile (內存、CPU、IO、NetWork)

Project Structure — Java/Kotlin/Flutter, XML, .gradle files

熟悉各種項目的目錄結構,資源文件、Gradle 文件

Android 基礎知識

四大組件

這部分不必做過多的解釋,下面列出的就是大家熟悉的 Android 四大組件,Android 開發的基礎

  1. Activity — Activity Lifecycle, Tasks & Back Stack
  2. Service
  3. Broadcast Receiver
  4. Content Provider

Intents

  1. Types of Intent - Implicit, Explicit
  2. Intent Filter

Static User Interface

  1. View — Button, ImageView, TextView, EditText, and etc :這是開發中會遇到的常用的組件,許多複雜的佈局都是用簡單基礎的 View 組合而成
  2. ViewGroup - LinearLayout, RelativeLayout, FrameLayout:三大傳統佈局,適用於不同的場合
  3. ConstraintLayout : Google 新推的佈局,目前已經取代 RelativeLayout 成為默認的 App 佈局,具體使用可以參考官方文檔

Dynamic User Interface

  1. RecyclerView - 列表類的佈局首選控件,性能相對 ListView 要好一些,功能也比 ListView 要多一些
  2. ViewPager
  3. Spinner

CustomView

Android 默認的佈局很多時候都沒法滿足設計的需求,這時候就需要自定義 View,你需要掌握下面幾個知識點的使用

  1. Canvas
  2. Bitmap
  3. Paint

UI Resources

相比 HardCode,使用資源文件會讓代碼的可修改性更高

  1. Drawables
  2. String
  3. Styles

Fragments

許多人提倡 App 使用 單 Activity + 多個 Fragment 的組合,可見 Fragment 在開發中的重要性,但是 Fragment 的管理又是一門技術,Fragment 的坑,只能在實際開發中慢慢填平了,不過下面的 Fragment 基礎還是要牢固

  1. Fragment Lifecycle
  2. Fragment Manager

Support User Interface

這裡列的同樣是一些功能組件,需要知道這是什麼東西,基本的用法

  1. ProgressBar - 進度條
  2. Dialogs - 彈框
  3. Toast & Snackbar - 提示

Storage

App 開發不免要和文件打交道,文件的讀寫、存儲都是必不可少的,下面列出了幾種 Android 中存儲相關的知識點

  1. Shared Preferences - 適合存儲字段
  2. File Systems - 文件存儲
  3. Database — RoomDB - 數據庫存儲,RoomDB 是 Google 新推出的數據庫解決方案(在 AndroidX 中),具體使用可以參考官方文檔

Build

Android App 默認使用 Gradle 進行編譯,關於 Gradle 的使用必須要熟悉,以及如何區分開發版本和 Release 版本,以及國內特有的多渠道打包技術、以及 ASM 等

  1. Gradle
  2. Debug / Release Configuration
  3. 多渠道打包
  4. ASM

Threading

理解 Thread 非常重要,Android App 只有一個主線程,其餘的我們稱之為工作線程,我們的很多工作需要再工作線程和主線程直接切換,如何高效創建和釋放線程、線程池、線程間通信、Message-Looper-Handler 模型這些知識點都要了熟於心,另外進階的話 Binder 通信也是需要掌握的知識

  1. Threads
  2. Handler / Looper / Message / MessageQueue
  3. AIDL / Binder

Debugging

這裡列舉了一些 Debug 的基本手段,實際開發中遇到具體問題的時候一般都會用到,不過有的可能入手難度要高一些,需要花時間去掌握。Debug 工具除了下面這幾個還有很多

  1. Memory profiling - MAT,AS Memory Profile
  2. Logging - Log 包含非常豐富的信息,可以幫助我們還原現場
  3. Systrace - Systrace 工具可以查看一段時間內手機系統各個進程的運行狀態,具體使用可以參考我博客的 Systrace 系列教程
  4. Exceptions - 各種異常,保證程序的健壯性
  5. Error Handling - Error 是必須要解決的問題,一般會導致 App 直接閃退,需要非常重視

Memory Leak

內存洩漏是一個很大的專題,包括 Java 內容洩漏和 Native 內存洩漏,涉及的知識點非常多,可以單獨拿出來做一個大的知識棧。一般來說, Java 內存洩漏會比較好檢測和修復,但是 Native 內存洩漏就會比較難。

  1. Detecting and Fixing Memory Leaks - 內存洩漏檢測和修復,是一個比較大的工程,可以參考 LeakCanary、Matrix 等開源工具
  2. Context - 使用不當會造成該釋放的對象沒有釋放造成內存洩漏
  3. Native Memory Leaks

3rd Party Library

經典的第三方類庫,可以大幅節約我們的開發時間

  1. Image Loading - Glide, Picasso
  2. Dependency Injection - Dagger
  3. Networking - Fast Android Networking Library, Retrofit
  4. MultiThreading - RxJava, Coroutines

Data Format

常見的一些數據保存流格式

  1. JSON — GSON
  2. Flat Buffer
  3. Protocol Buffer

Android Jetpack

Jetpack 是 Google 推出的一套庫、工具和指南,可幫助開發者更輕鬆地編寫優質應用。這些組件可幫助您遵循最佳做法、讓您擺脫編寫樣板代碼的工作並簡化複雜任務,以便您將精力集中放在所需的代碼上。Jetpack 包含與平臺 API 解除捆綁的 androidx.* 軟件包庫。這意味著,它可以提供向後兼容性,且比 Android 平臺的更新頻率更高,以此確保您始終可以獲取最新且最好的 Jetpack 組件版本。

  1. Foundation Components — AppCompat, Android KTX, Multidex
  2. Architecture Components — LiveData, ViewModel, DataBinding, Paging, Work Manager, Navigation
  3. Behaviour Components - Download Manager, Media Playback, Notification, Permissions, Preference, Sharing, Slice
  4. UI Component - Animation & Transition, Android Auto, Emoji, Palette, Android TV, Android Wear

Android架構設計模式

  1. MVC架構設計模式:MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫。
  2. MVP架構設計模式:MVC全名是Model View Persenter,MVP由MVC演變而來,是現在主流的開發模式。
  3. MVVM架構設計模式:MVVM全名是Model-View-ViewModel,它本質上就是MVC的改進版。各種模型的主要目的都是是分離視圖(View)和模型(Model),即將UI界面顯示和業務邏輯進行分離。
態度決定成敗:大專畢業的我如何在25歲時拿到了阿里P6的offer?

架構學習手冊

需要上述資料的朋友,可以點擊關注+轉發+私信**學習**前往免費領取!

Unit Testing

  1. Local Unit Testing
  2. Instrumentation Testing

Security

安全方面接觸畢竟多的應該是加密、解密、混淆等,畢竟用戶數據安全大於一切,不重視這個歐盟會教你做人

  1. Encrypt / Decrypt
  2. Proguard
  3. R8

音視頻開發

音視頻開發則需要從以下四個方面進行入門學習和提升。

1.多媒體系統

  1. FFmpeg
  2. 流媒體協議
  3. 音視頻效果處理NDK模塊開發資料包
態度決定成敗:大專畢業的我如何在25歲時拿到了阿里P6的offer?

NDK模塊開發資料包

需要上述資料的朋友,可以點擊關注+轉發+私信**學習**前往免費領取!

專項技術

  1. App 瘦身
  2. MultiDex
  3. 插件化
  4. 推送技術
  5. Crash 統計
  6. 函數式編程
  7. 啟動保護
  8. 在線熱修復
  9. AOP
  10. React Native
  11. Hybrid
  12. SDK化
  13. 依賴注入
態度決定成敗:大專畢業的我如何在25歲時拿到了阿里P6的offer?

Android架構資料包

需要上述資料的朋友,可以點擊關注+轉發+私信**學習**前往免費領取!

作為一個有進取心的 Android 開發者,擁有自己的技術棧和規劃非常重要,技術棧確保你有足夠的市場競爭力,從而形成護城河;技術規劃則可以給你一個明確的學習目標。

喜歡的朋友,別忘了關注+點贊!2020我們一起努力前行吧!


態度決定成敗:大專畢業的我如何在25歲時拿到了阿里P6的offer?



分享到:


相關文章: