天天看點

2019Android面試總結

從4月17号提離職到今天,已經面試了整整15家公司了,其中有二三十個人的小廠,也有像騰訊QQ音樂和OPPO這樣的大廠,因為本人做的項目也是比較雜的,所有面試的類型也比較多,有做ReactNative的,也有做人工智能、機器人的,同時也有做智能家居的,是以接觸到的面試題也是比較多的,為了避免自己忘記,在這裡做個總結,先把面試題給列出來,之後有時間再補充答案.

Java方面:

1、如何停止一個線程請求;

2、線程之間的通信方式;

3、線程和程序的差別;

4、程序之間的通信方式;

5、Java的垃圾回收機制;

6、雜湊演算法以及HashMap的底層原理;

7、數組和連結清單的差別;

8、讀寫鎖和互斥鎖的差別;

9、重載和重寫的差別

Android方面:

1、AsyncTask的原理

2、RxJava如何進行線程切換,如何取消RxJava的請求以及RxJava的錯誤重試api

3、自定義view的三個方法,invalidate和postInvalidate的差別,requestLayout會調用哪幾個方法,onLayout中的三個方法

4、Android的事件分發機制,以及如何解決滑動沖突等(ScrollView中包含ListView和GridView的滑動沖突)

5、自述從業以來最滿意的一個項目,在其中遇到什麼問題,如何解決,講一講閱讀過印象最深刻的技術部落格,從中學到了什麼

6、項目中如何解決ANR

7、做過的Android性能優化,包括包體積、記憶體優化、布局優化等;

8、Android的螢幕适配;

9、Android webview和Js的通信;

10、ProtocolBuffer的優缺點以及底層實作;

11、https和http,http怎麼傳遞資料,https怎麼加密資料;

12、LeakCanary的原理;

13、handler相關,handler底層處理消息的算法;

14、如何實作音視訊的同步;

15、Okhttp的底層原理;

16、RecycleView中資料複用可能會存在的問題以及如何解決;

17、EventBus的原理;

18、Android中四種啟動模式以及應用場景;

19、Activity的啟動方式;

20、ListView如何實作複雜布局,不同Item不同子布局;

21、Glide的原理以及和piccasso的差別。

22、如何給資料庫添加索引;

23、OpenCV、OpenGL等圖檔處理的東西;

24、Android的Hook技術,如何不在AndroidManifest中注冊啟動一個Activity;

25、Android中的四種引用方式;

26、Jni的使用經驗

React Native:

1、React的生命周期;

2、Js中的事件循環;

3、ReactNative中原生和Js的通信方式;

4、redux的原理,如何解決action的異步操作(中間件);

5、如何優化FaltList加載長資料;

6、ReactNative的優缺點;

7、setState方法可以那幾個生命周期中調用;

8、ReactNative如何進行資料緩存;

9、React Native調用setState做了什麼

暫時能想起來的就是這些了,其中Android的事件分發,Handler是問的比較多的問題,其他的就是根據你項目中做過的一些點進行一個提問了,總的來說,因為離職前都還有一直在做新需求,也沒啥時間準備,被虐的還是挺慘的,不過也好,認識到了自身存在的一些問題。現在市場不缺能實作功能的碼農,缺的是了解底層原理的程式員。

繼續閱讀