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

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

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

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

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

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

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

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

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

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

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

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

關於Java

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

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

關於kotlin

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

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

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

Android Studio

Android Studio IDE Overview

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

AS 主要需要熟悉下面幾點

AS 快捷鍵AS 插件AS Profile (內存、CPU、IO、NetWork)

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

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

Android 基礎知識

四大組件

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

Activity — Activity Lifecycle, Tasks & Back StackServiceBroadcast ReceiverContent Provider

Intents

Types of Intent - Implicit, ExplicitIntent Filter

Static User Interface

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

Dynamic User Interface

RecyclerView - 列表類的佈局首選控件,性能相對 ListView 要好一些,功能也比 ListView 要多一些ViewPagerSpinner

CustomView

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

CanvasBitmapPaint

UI Resources

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

DrawablesStringStyles

Fragments

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

Fragment LifecycleFragment Manager

Support User Interface

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

ProgressBar - 進度條Dialogs - 彈框Toast & Snackbar - 提示

Storage

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

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

Build

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

GradleDebug / Release Configuration多渠道打包ASM

Threading

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

ThreadsHandler / Looper / Message / MessageQueueAIDL / Binder

Debugging

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

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

Memory Leak

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

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

3rd Party Library

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

Image Loading - Glide, PicassoDependency Injection - DaggerNetworking - Fast Android Networking Library, RetrofitMultiThreading - RxJava, Coroutines

Data Format

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

JSON — GSONFlat BufferProtocol Buffer

Android Jetpack

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

Foundation Components — AppCompat, Android KTX, MultidexArchitecture Components — LiveData, ViewModel, DataBinding, Paging, Work Manager, NavigationBehaviour Components - Download Manager, Media Playback, Notification, Permissions, Preference, Sharing, SliceUI Component - Animation & Transition, Android Auto, Emoji, Palette, Android TV, Android Wear

Android架構設計模式

MVC架構設計模式:MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫。MVP架構設計模式:MVC全名是Model View Persenter,MVP由MVC演變而來,是現在主流的開發模式。MVVM架構設計模式:MVVM全名是Model-View-ViewModel,它本質上就是MVC的改進版。各種模型的主要目的都是是分離視圖(View)和模型(Model),即將UI界面顯示和業務邏輯進行分離。

架構學習手冊

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

Unit Testing

Local Unit TestingInstrumentation Testing

Security

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

Encrypt / DecryptProguardR8

音視頻開發

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

1.多媒體系統

FFmpeg流媒體協議音視頻效果處理NDK模塊開發資料包

NDK模塊開發資料包

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

專項技術

App 瘦身MultiDex插件化推送技術Crash 統計函數式編程啟動保護在線熱修復AOPReact NativeHybridSDK化依賴注入

Android架構資料包

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

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

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