- 相關推薦
關于Android工程師面試題
singletask:棧內復用模式。不是在當前任務棧中查找是否存在,實際過程如下:
查找該Activity所需的任務棧是否存在(由taskAffinity控制,或者默認為包名)。
在任務棧當中查找該Activity是否存在。
這里面存在任務棧的切換,也就是當開啟的singtask類型的Activity不屬于當前任務棧時,則會切換到其任務棧。
singleInstance:單實例模式。
包含了singleTask的所有特性,另外加上:設置為該模式的Activity,只能單獨存在于一個任務棧中。當有兩個singleInstace的Activity設置成同樣的任務棧時,會出現兩個同名的任務棧,分別用來存放同名的Activity。
注:在任何跳轉的時候,首先調用本Activity的onPause,然后跳轉。如果被跳轉的activity由于啟動方式而沒創建新的實例,則會先調用onNewIntent,然后按照正常的生命周期調用。
如
1:A→B,A:onPause;B:onCreate,onStart,onResume。
2:A(singleTop)→A,A:onPause;A:onSaveInstanceState;A:onResume。
3、View的繪制
推薦郭霖大神的博客:
https://blog.csdn.net/guolin_blog/article/details/16330267
4、canvas的使用
推薦以下博客:
https://blog.csdn.net/qinjuning/article/details/6936783
5、ActivityManagerService的相關知識點
推薦以下博客:
https://wiki.jikexueyuan.com/project/deep-android-v2/activity.html
6、Activity切換時生命周期交集
Activity之間的協作當一個activity A啟動了另外一個activity B,它們的生命周期是有交叉的;
首先A的onPause()被調用;
之后B的onCrate(), onStart()及onResume() 方法會被調用(此時B擁有用戶焦點);
最后,如果A在屏幕上不可見,onStop()方法被調用;
因此,我們在兩個activities中傳遞數據,或者共享資源時(如數據庫連接),需要在前一個activity的onPause()方法而不是onStop()方法中進行;
7、Hybrid(重要加分項)
java和JS的交互
https://droidyue.com/blog/2014/09/20/interaction-between-java-and-javascript-in-android/
https://rensanning.iteye.com/blog/2043049
WebView開啟JavaScript腳本執行
WebView設置供JavaScript調用的交互接口。
8、網絡編程
volley
https://bxbxbai.github.io/2014/09/14/android-working-with-volley/
https://blog.csdn.net/guolin_blog/article/details/17656437
如何控制TCP連接時的擁塞
https://blog.csdn.net/yechaodechuntian/article/details/25429143
三次握手
https://blog.csdn.net/whuslei/article/details/6667471
Android客戶端和服務端如何使用Token和Session
https://wyong.blog.51cto.com/1115465/1553352
移動端獲取網絡數據優化的幾個點連接復用 :
節省連接建立時間,如開啟 keep-alive。
對于 Android 來說默認情況下 HttpURLConnection 和 HttpClient 都開啟了 keep-alive。只是 2.2 之前 HttpURLConnection 存在影響連接池的 Bug,具體可見:Android HttpURLConnection 及 HttpClient 選擇
請求合并:
即將多個請求合并為一個進行請求,比較常見的就是網頁中的 CSS Image Sprites。如果某個頁面內請求過多,也可以考慮做一定的請求合并。
減少請求數據的大小:
對于post請求,body可以做gzip壓縮的,header也可以作數據壓縮(不過只支持http 2.0)。
返回的數據的body也可以作gzip壓縮,body數據體積可以縮小到原來的30%左右。(也可以考慮壓縮返回的json數據的key數據的體積,尤其是針對返回數據格式變化不大的情況,支付寶聊天返回的數據用到了)
根據用戶的當前的網絡質量來判斷下載什么質量的圖片(電商用的比較多)。
9、android開發中,可能會導致內存泄露的問題
不要讓生命周期長于Activity的對象持有到Activity的引用
盡量使用Application的Context而不是Activity的Context
盡量不要在Activity中使用非靜態內部類,因為非靜態內部類會隱式持有外部類實例的引用(具體可以查看細話Java:”失效”的private修飾符了解)。如果使用靜態內部類,將外部實例引用作為弱引用持有。
垃圾回收不能解決內存泄露,了解Android中垃圾回收機制
**更多內容可以參考以下博客:
https://spencer-dev.lofter.com/post/d7b9e_6faf120
10、activity的啟動過程:
https://www.cloudchou.com/android/post-788.html
以上是我遇到和搜集到的各類題目以及相應的解答,接下來一段時間也會持續更新,大家遇到什么經典或者不會的問題也可以給我留言,在此統一分享給大家。祝大家能夠找到自己心儀的工作,前途一片光明!
【Android工程師面試題】相關文章:
投行面試題07-24
軟件測試面試題01-17
中層副職競聘面試題09-05
來看看谷歌的面試題08-17
濟南稼軒中學小升初面試題07-21
壓力危機類面試題目突破技巧11-09
今年最強的面試題和最牛的答卷09-20
考察個人價值觀的另類面試題02-21
人力資源行業常見面試題匯總02-03
面試題:給我們一個錄取你的理由?11-16