Android開發新手入門教程!我三年開發經驗,從位元組跳動抖音離職後,跳槽薪資翻倍
前言
馬爸爸總結了一句話:跳槽,要麼是錢不到位,要麼是受了委屈。
我給自己這次的跳槽經歷做了一個分析,希望能對那些想換工作的朋友有所幫助。
許多朋友想換工作,但是對“換工作”的理解可能僅限於寫簡歷、投簡歷、面試。在跳槽之前,我也是這麼想的。
當時,工作並不順利,我的專業技能並沒有很好的發揮,公司也給不了什麼發展前景,就有了跳槽的打算。
我看到一家行業內還不錯的上市公司在招聘這個崗位,於是我發了簡歷。面試後我感覺很好,但我拒絕了,因為工資沒有達到預期。
經過仔細思考,我發現我準備得太匆忙了,或者根本沒有準備好。粗糙地寫了一份簡歷,面試前也沒有充分的準備,就去了那裡。在面試中,專案的一些細節無法得到回答,許多知識點也沒有很好的回答,這可能讓面試官感覺處於普通水平。
在接下來的幾個月裡,我開始查閱各種跳槽和麵試相關的資料,同時按計劃組織重點、整理學習路徑,逐步複習。
目錄:
Java基礎
Android初中級面試題
Kotlin相關
資料結構與演算法
計算機網路
FrameWork原始碼相關
Flutter相關
一、Java初中級面試題
1.容器(HashMap、HashSet、LinkedList,HashSet等)
2.記憶體模型
3.JVM、Davilk、ART 三者的原理和區別
4.垃圾回收機制
5.類載入方案
6.說說你對Java 反射的理解
7.說說你對動態代理的理解
8.什麼是執行緒池,如何使用?為什麼要使用執行緒池?
9.在多執行緒執行過程中,解決安全性問題?
10.設計模式(六大基本原則)
11.Java 中引用型別都有哪些?
12.Java 的泛型
13.String、StringBuffer 和 StringBuilder 的區別
14.關鍵字 final 和 static 是怎麼使用的?
15.什麼是過載,什麼是重寫,有什麼區別?
16.說說你在專案開發過程中,常用的幾種設計模式?
17.java 中==和 equals 和 hashCode 有哪些區別?
18.utf-8 編碼中的中文佔幾個位元組;int 型幾個位元組?
19.JAVA 的異常體系是怎樣的
20.談談你對解析與分派的認識。
…
二、Android初中級
1.Activity的四大啟動模式,以及應用場景?
2.Activity中onStart和onResume的區別?
3.平時如何有使用螢幕適配嗎?原理是什麼呢?
4.Android訊息機制介紹?
5.Looper在主執行緒中死迴圈為什麼沒有導致介面的卡死?
6.IdleHandler介紹?
7.View事件分發機制和View繪製原理
8.Bitmap的記憶體計算方式?
9.Bitmap的高效載入?
10.原始碼分析:AMS 、PMS、Handler,Binder
11.Android是如何通過Activity進行互動的?
12.Binder 機制(IPC、AIDL 的使用)
13.橫豎屏切換時Activity的生命週期
14.Android中程序的級別和它們的區別
15.Android版本的新特性你知道哪些?
16.Android有哪些序列化方式?
17.什麼是ANR 如何避免它?
18.AsyncTask的缺陷和問題,說說他的原理。
19.android中有哪幾種解析xml的類,官方推薦哪種?以及它們的原理和區別?
20.Android為每個應用程式分配的記憶體大小是多少
…
三、Kotlin相關(初中級)
1.說一下使用kotlin的幾大好處
2.為什麼kotlin跟Java具有互相的操作性?
3.說一下Kotlin的伴生物件
4.協程能解決什麼問題
5.Kotlin裡的Extension Functions實現原理分析
6.kotlin中的抽象有什麼作用?
7.Kotlin Null檢測機制是怎樣的?
8.Kotlin中的高階函式,說說你的理解
9.Kotlin 編譯為什麼比Java慢?
10.Kotlin 泛型的 in 和 out 有什麼用?
11.Kotlin 擴充套件功能有什麼用?
12.、=和equal的區別?
13.Kotlin中預設引數的作用以及原理?
14.Kotlin中常用的類的修飾符有哪些?
15.Kotlin中的內部類和Java中的內部類有什麼不同?
16.使用實化型別引數解決泛型擦除的原理是什麼?
…
四、演算法
1.說一下使用kotlin的幾大好處
2.為什麼kotlin跟Java具有互相的操作性?
3.說一下Kotlin的伴生物件
4.協程能解決什麼問題
5.Kotlin裡的Extension Functions實現原理分析
6.kotlin中的抽象有什麼作用?
7.Kotlin Null檢測機制是怎樣的?
8.Kotlin中的高階函式,說說你的理解
9.Kotlin 編譯為什麼比Java慢?
10.Kotlin 泛型的 in 和 out 有什麼用?
11.Kotlin 擴充套件功能有什麼用?
12.、=和equal的區別?
13.Kotlin中預設引數的作用以及原理?
14.Kotlin中常用的類的修飾符有哪些?
15.Kotlin中的內部類和Java中的內部類有什麼不同?
16.使用實化型別引數解決泛型擦除的原理是什麼?
…
五、計算機網路
1.Http與Https兩者的區別
2.從網路載入一個10M 的圖片,說下注意事項
3.網路請求快取處理,okhttp如何處理網路快取的
4.自己去設計網路請求框架,怎麼做?
5.TCP 的 3 次握手和四次揮手…
6.三次握手為什麼要傳回 SYN,為什麼要ACK
7.DNS解析過程
8.談談你對安卓簽名的理解。
9.TCP/IP四層協議有哪些結構與功能
10.TCP 利用滑動視窗實現流量控制的機制
11.在瀏覽器中輸入url地址後顯示主頁的過程
12.常見的Http狀態碼
13.HTTPS是如何保證安全的?
14.HTTPS的中間人攻擊是什麼?
15.如何理解HTTP協議是無狀態的?
16.ping命令基於哪一層協議的原理是什麼?
…
六、Framework原始碼相關
1.Glide的快取機制
2.EventBus
3.LeakCanary原理
4.ARouter框架解決了什麼問題,內部原理是怎樣?
5.RxJava 的執行緒切換原理
6.RxJava用到哪些設計模式?
7.Retrofit 動態代理的理解
8.OkHttp 內部原理的理解
9.事件分發機制是怎樣的?設計者為什麼要設定攔截?
10.Android是如何通過View進行渲染的?
11.Android App 安裝的流程是怎樣的?
12.Android事件分發流程是怎樣的?
13.Android外掛化原理知道嗎?
14.Android 元件化管理模式是怎樣?
15.Android 使用Hook去攔截過系統原始碼嗎?
最後
如果你看到了這裡,覺得文章寫得不錯就給個讚唄?如果你覺得那裡值得改進的,請給我留言。一定會認真查詢,修正不足。謝謝。
最後針對Android程式設計師,我這邊給大家整理了一些資料,包括不限於高階UI、效能優化、移動架構師、NDK、混合式開發(ReactNative+Weex)微信小程式、Flutter等全方面的Android進階實踐技術;希望能幫助到大家,也節省大家在網上搜索資料的時間來學習,也可以分享動態給身邊好友一起學習!