天天看点

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的关系