美文网首页安卓文章
安卓面试题一

安卓面试题一

作者: tgcity | 来源:发表于2018-10-29 10:43 被阅读0次

    J2SE篇幅

    1.Java里头的多态是什么意思?

    首先必须要有继承或者实现,其次是要有方法的重写,最后一个是父类引用指向子类对象

    大多数情况下回答这三个就ok了,再具体点直接给面试官举个例子:

    动物类 Animal   狗Dog extends Animal   猫Cat extends Animal   --->>继承

    Animal有个方法 吃得方法eat()   狗不满意这个父类的吃法,自己重写了eat() 猫也不满意这个父类的吃饭,自己也重写了eat() --->>重写

    最后 Animal animal = new Dog(); --->>父类引用指向子类对象

           animal.eat();调用这个方法实际执行的是狗的吃的方法,这就是多态,实际运行时动态绑定。

    2.GC的原理

    全拼是Garbage Collection(垃圾回收);当堆内存里的对象没有引用指向了,GC就来了。

    3.抽象类跟接口的区别

    抽象类可以有非抽象的方法,接口只有方法的定义没有实现,实现接口必须重写接口所有定义的方法,接口里头变量是static final的常量

    4.StringBuffer跟StringBuider的区别

    StringBuider非线程安全,执行速度快,单线程用这个类

    5.sleep(), wait()的区别

    sleep不释放同步锁,自动唤醒,需要try catch,  wait释放同步锁,需要notify来唤醒

    sleep是线程的方法    wait是Object的方法

    6.递归执行路径有几条。

    主要是考察你对java线程的执行路径,其实递归并不是开启线程,虽然是重复调用方法本身,其实执行路径就一条。

    7.LinkedList跟ArrayList的区别

    一个链表结构,一个数组结构,LinkedList查找慢,插入快,ArrayList查找快,插入慢。

    Android篇幅

    1.手写一个线程安全的单例

    public class SigleInstance {

    private static SigleInstance instance;

    public static SigleInstance getInstance() {

            if (instance == null) {

                syncronized(SigleInstance.class) {

                        if (instance == null) {

                                instance = new SingleInstance();

                        }

                }

           }

            return instance;

    }

    }

    这个算是目前来说最有的单例,最好是能手写出来,面试官主要是考你为什么同步关键字要写在方法里头,写在那块,其实你只要答到点上就ok了,主要原因就是不用频繁加锁,因为频繁加锁会消耗性能,当instance new出来之后,可以不用在方法外加锁就直接返回实例,减少了一次加锁的操作。

    2.Bitmap图像模式有哪几种,给出一张1080 * 1920的,ARGB 8888格式的占用内存是多大

    ARGB 8888一个像素占用4个字节,一个字节8位,1080 * 1920 * 4 * 8

    3.静态方法跟静态代码块有什么区别。

    静态方法属于类,用类名.就能直接调用,静态代码块是类加载的时候就会调用的

    4.Android进程有哪几种

    前台进程,可见进程,服务进程,后台进程,空进程

    5.Runnable , Callable, Feature三个的区别

    Runnable 没有返回值,Callable有返回值,Feature一般配合Callable来使用,用于检测任务的状态,具有有是否执行完成,还可以做取消任务操作,再可以稍微撤下AsyncTask源码,因为有返回值,其实底层也是用Callable跟Feature来实现的, 显得你会懂一些源码,会是加分项

    6.一个应用允许多个进程吗?

    允许,最直接的直接说在功能清单文件里配置Service为一个独立进程,android:process就能配置

    7.多进程会引起一些什么样的异常呢?

    (1)静态成员和单例模式完全shixiao

      (2)线程同步机制完全失效

      (3)SharedPreferences的可靠性下降

      (4)Application会多次创建

    8.HashMap的底层数据结构

      数组加链表

    9.Serializable和Parcelable的区别

    Serializable是java中序列化接口,使用开销很大,序列化和反序列化过程需要大量的I/0操作,Parcelable是Android中序列化的方式,用起来虽然麻烦一些,效率很高,Parcelable主要用在内存序列化上,如果说要序列化到存储设备中,建议大家使用Serializable,具体通过Object流来做序列化操作。

    相关文章

      网友评论

        本文标题:安卓面试题一

        本文链接:https://www.haomeiwen.com/subject/zgnvtqtx.html