天天看點

Android 面試題整理(一)

1、請簡述JAVA引用中的’強引用’、‘弱引用’、‘虛引用’的用法和回收時機

1.強引用 – GC不會回收(必需品)

2.軟引用 – 記憶體不夠就回收,記憶體夠的話就不會回收。(可有可無)

3.弱引用 – GC在掃描的時候,一旦發現即刻回收。

4.虛引用 – 随時都會被回收

2、請用JAVA語言實作一個簡單的單例模式

public class SingleTon{

            private SingleTon(){}
            public static SingleTon instance;
            public SingleTon getInstance(){
                synchronized(SingleTon.class){
                    if(instance == null){
                        synchronized(SingleTon.class){
                            instance = new SingleTon();
                        }
                    }

                }
                return      

3、JAVA線程的sleep()、wait()、notify()、yield()方法的差別

sleep() 線程休眠一段時間,一段時間結束後,線程進入可執行狀态,等待CPU排程。休眠期間,不釋放持有的鎖。

wait() 線程休眠一段時間,如果設定參數,時間到時,線程自動進入可執行狀态。若沒有,則需要notify()方法喚醒。wait和notify都是針對this對象的,調用wait之後,會釋放加載對象上的鎖。

4、什麼是Android ARN? Android ARN 有幾種類型?如何定位ANR?

Android ANR 即程式無響應異常。
Android ANR 一般有3種類型:
    KeyDispatchTimeout(5 sceonds) 按鍵或觸摸事件在特定時間無響應
    BoardcastTimeOut(10 sceonds) BoardcastReceiver 在特定的時間内無響應
    ServiceTimeout(20 seconds) Service在特定的時間内無法處理完成
解決ANR的姿勢:
    1.檢視LOG,擷取ANR類型
    2.檢視分析trace.txt檔案(需root)
        chrom 777 /data/arn
        rm /data/arn/traces.txt
        ps
        kill -3 PID
        adb pull data/anr/traces.txt ./mytraces.txt      

5、簡要描述Activity和Fragment的關系