20181013某大廠的一次android面試經歷
阿新 • • 發佈:2018-12-15
1.activity的啟動模式LaunchMode以及使用場景
1.standard標準模式,也是預設模式 每次啟動一個activity不管這個例項是否存在,都會重新建立一個新的例項。這就是多例項實現。 一個棧內可以有多個這個例項,每個例項可以屬於不同的任務棧。 被建立的例項的生命週期就是典型的activity的生命週期。 這種模式下誰啟動了這個activity,他就執行在啟動他的那個棧內。 2.singleTask模式,棧內複用模式,單例項模式 只要這種模式的activity在一個棧中存在,那麼多次啟動這貨都不會重新建立例項,系統會回撥onNewIntent. ERROR/AndroidRuntime(556): Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 當用ApplicationContext啟動standard模式的activity時候會報這種錯誤。 standard模式的acitivty預設進入啟動他的任務棧,但是非activity型別的context並沒有任務棧,就撲街了。 為了解決這個問題就是為被啟動的activity指定FLAG_ACTIVITY_NEW_TASK標記位,這樣啟動的時候會為他建立一個新的任務棧,這時候被啟動的activity的模式就是singleTask. singleTask具有cleartop的效果哦 3.singleTop:棧頂複用模式 這種模式下,如果新的activity已經位於任務棧的棧頂,那麼這貨不會被重新建立,只是呼叫 他的onNewIntent方法,這個activity的oncreate,onstart不會被呼叫,因為這貨沒有發生改變。 如果這貨已經存在但是不是在棧頂不好意思了,只能重建了,這也是跟singletask的區別。 4.singleInstance單例項模式,是singletask 的plus版 具有singletask模式的所有特性,外加這種模式的activity單獨的位於一個任務棧中。
2.java中的引用型別記憶使用場景,描述一下GC
引用型別,以及回收順序,無非是那些老生常談,百度一下即可。
gc相關就不多說了,下邊是本人手寫版筆記,比較詳細。
jvm的相關:
https://blog.csdn.net/github_37610197/article/details/82865680
gc策略:
https://blog.csdn.net/github_37610197/article/details/82870638
4.私有構造方法的使用場景
這個出門百度吧
5.join的作用和實現原理
控制執行緒的執行順序,實際是呼叫了wait()方法
6.android的效能優化包括哪些方面,分別使用什麼方式
8.HashMap和ArrayList的實現原理
資料結構
9.執行緒池的實現原理是怎麼樣的,執行緒有哪些狀態
10.關於對AIDL的理解,以及實現AIDL的流程或者步驟
11.git命令的問答
平時用圖形化介面用的多了,基本忘記這些命令行了,