簡介:大四學生黨一枚!主攻Android開發,轉游戲客戶端開發中
語錄:取乎其上,得乎其中,取乎其中,得乎其下,以頂級態度寫好一篇的博客,
最近有很多學弟學妹私信我,咨詢
Android學習路線的問題,結合今年秋招Android崗的面試經驗,做個總結,僅代表個人看法,
Android
- 一.企業要求
- 1.1 任職要求
- 1.2 推薦書籍
- 1.3 細分Android
- 二.技術深度
- 三.建議
一.企業要求
1.1 任職要求
下面是我在招聘網站上發現的幾個Android工程師的任職要求
騰訊社招
1、具備Android應用層除錯分析能力,快速定位解決anr、crash等問題;
2、對Android開發相關的事件處理、記憶體處理、多執行緒編程、網路通訊及性能優化有深入理解;
3、熟悉Android應用框架和Android GUI庫,
4、有過Android系統應用軟體的開發,
5、有良好的原始碼閱讀能力和編碼習慣
網易社招
1、計算機及相關專業本科以上學歷,2年以上Android相關開發經驗
2、熟悉Android平臺的開發技術,如UI,網路,性能和記憶體優化等
3、了解各類常用開源框架實作原理,并能靈活運用;
4、扎實的計算機專業基礎,熟悉常用的資料結構、演算法、設計模式
5、熟悉網路編程,熟練掌握tcp/udp等協議相關知識
6、具備良好的學習能力,自主分析和解決問題能力,以及良好的溝通協作能力
重點:從上面的要求中詳細提取了一些
Android從中階邁向高階必備的技能,友情提示:基礎不牢,地動山搖,四大組件都不熟悉的童鞋可以先不要看下面的內容,
如果覺得自己四大組件掌握的還可以的同學,請回答以下幾個問題
1.Activity的啟動模式與標志位分別有?每種啟動模式的使用場景,
2.Activity的生命周期,onStart和onResume的區別,Activity A跳轉到Activity B,生命周期如何?
3.廣播的幾種型別?粘性廣播了解過嗎?靜態注冊和動態注冊的區別,
4.關于Service,startService和bindService的區別,
5.ContentProvider可以暫時不做了解,涉及跨行程的資料互動,當了解了跨行程通信后再學習,
1.2 推薦書籍
說實話,大三的我是不能完整回答任何一個問題的,建議閱讀《Android開發藝術探索》,《Android進階之光》,《Android自定義View實戰》,《Android進階解密》
下面的問題,在這些書中都有完整的答案,我認為是進階必讀的書,每本書中都有相互重復的章節,可以有選擇性的閱讀,
大神級直接推薦《深入理解Android內核涉及思想》,比較深涉及到Android`內核比較多,沒有一定功力很難懂,
1.3 細分Android
- UI:自定義View,View繪制流程,View事件分發機制,Android影片(
★★★★★)
1.如何用自定義View的方式實作一個圓角控制元件(大體思路)
2.View的三大繪制流程,每一步的作用
3.如何處理滑動事件沖突
4.幾種Android影片的區別
5.四大組件是基礎,面試必問,
- 網路相關:常用網路框架的底層原理以及實作細節,(
★★★★★)
你了解目前目前流行的的網路框架Retrofit和Okhttp的實作細節嗎?
1.Retrofit的實作原理?動態代理技術了解多少?
2.OkHttp的五層攔截鏈分別是哪些?OkHttp中的快取如何實作的?
- 多執行緒編程:Android中提供的實作多執行緒的方法(
★★★★★)
比如HandlerThread,AsyncTask,IntentService等方法
1.他們的區別,適用場景,實作的原理
2.執行緒同步的幾個方法,阻塞同步和非阻塞同步了解多少,
3.執行緒池有沒有了解過,優缺點有哪些,任務佇列呢?
4.Handler,MessageQueue,Message,Looper了解嗎?
- 性能優化:各項指標優化讓app達到最佳運行效果,(
★★★★)
1.啟動和回應速度優化:阿里魔鏡檢測首幀顯示時間,耗時方法檢測
2.網路優化:網路快取,長鏈接,鏈路復用,連接池,
3.記憶體優化:記憶體泄漏記憶體溢位等,業界常用的解決方案
4.UI優化:三大常用布局,線性,約束和相對布局,按需加載,
5.Apk安裝包體積減小的優化,
- 建議(
★★★★)
架構方面:MVP和MVVM(MVP必須要了解)
路由:ARouter框架(可以了解,加分項)
存盤:資料持久化的解決方案,序列化與反序列化的原理,
底層原理:反射,動態代理,注解等,(必須了解,造輪子離不開的東西)
技術:Kotlin和Flutter(對于校招生應該是加分項,可以了解一下,)
閱讀原始碼的能力:可以拿OkHttp,View的原始碼練手,
編程風格:可復用,可擴展,比如Java中的多型,介面,抽象等等,
代碼管理倉庫:git指令的使用
二.技術深度
上面的知識掌握以后,技術廣度可以,還有需要注意學習的地方,
- Android
1.Zygote,Launcher行程
2.AMS,WMS,Context的理解
3.IPC和Binder(IPC行程間通信)
上面處理IPC和Context,其他可以選擇性掌握,也不一定都會問,這部分內容都是比較難的,
- Java
1.Java虛擬機
2.Java多型的原理
3.反射,動態代理,注解
4.Java運行時記憶體
關于Java的深度遠不止這些,建議閱讀《深入了解Java虛擬機》這本書,
三.建議
現在已經10月了,距離春招還有半年左右的時間,其實時間真不多了,
假設串行執行:
1.《Android開發藝術探索》和《Android進階之光》兩本書大概需要啃一個月,
2.計算機基礎知識如資料結構,計算機網路,資料庫,作業系統突擊復習半個月,
3.演算法大概需要在leetcode刷幾十道中等難度的題,時間未知
4.簡歷上至少需要兩個拿得出手的專案,圖書管理系統就可以pass了,假設之前沒有比較厲害的專案,要花一個月做專案,
大三上學期課程還是挺多的,加上上學期是網課,大家都懂的,所以到2021/01/22,還有大概四個月,周末時間大概有一個月,如果抓緊一些,大概可以擠出兩個月空閑時間吧,
時間真的很緊啊
- 專案帶動學習
這個就是一邊做專案一邊學習相關技術,(上上之選)
- 開源專案來幫您
開源專案改改,深入原始碼分析,(時間不夠可以嘗試一下)
現階段最重要的仍是提高技術和做專案吧,加油,送給學習Android的學弟學妹們,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/138981.html
標籤:其他
