美文网首页
杭州Android面试小结

杭州Android面试小结

作者: zvl | 来源:发表于2017-05-14 19:14 被阅读61次

    最近一直在杭州面试,想要写一写面试中遇到的技术问题并总结一下。主要分为java基础部分和android基础部分。

    java基础:

    1.对抽象,封装,继承,多态的理解

    抽象:就是把业务逻辑用程序代码表示出来。分为数据抽象和过程抽象,数据抽象是对象的属性,行为抽象是对象的行为特征

    封装:封装是设置访问权限,只把内部的数据或方法暴露给可信的类或对象,对不可信的进行隐藏

    继承:把一些有共性的类称为父类,不同子类可以通过继承付类重用这一些共性

    多态:允许不同类的对象对同一消息做出响应。方法的重载体现了多态,向上转型也体现了多态。例如:

    Animal d = new Dog();
    
    Animal c = new Cat();
    

    在编译时,并不知道引用的具体对象是那个类,只有当程序运行时才能知道。

    2.java中的单例模式怎么写

    饿汉模式
    public class Singleton {
        //饿汉模式,没有达到懒加载的效果,在类加载时就会实例化,但是是线程安全的
        private static Singleton singleton = new Singleton();
        private Singleton(){}
        public static Singleton getInstance(){
            return singleton;
        }
    }
    

    3.String和StringBuffer、StringBuilder的区别

    String是不可变的,StringBuffer和StringBuider都是可变的;StringBuffer是线程不安全的,但是效率会高一些;StringBuilder是线程安全的,但是效率低一些。

    4.对java的泛型的理解

    泛型,即“参数化类型”。
    创建集合时就指定集合元素的类型,该集合只能保存其指定类型的元素,避免使用强制类型转换。

    5.java中的垃圾回收机制是怎么样的

    5.1.确定删除的对象

    java中的GC采用对象引用遍历的方式判断该对象是否被回收,如果该对象是不可达的,则视为垃圾回收

    5.2.GC扫描堆栈,删除垃圾

    删除对象的过程中,会停止所有其他线程

    6.如何实现对象排序

    实现comparable接口,然后通过Collections.sort()或者Arrays.sort()进行排序

    7.java中的反射

    Java反射机制可以让我们在编译期(Compile Time)之外的运行期(Runtime)获得任何一个类的字节码。包括接口、变量、方法等信息。还可以让我们在运行期实例化对象,通过调用get/set方法获取变量的值。
    反射机制详解

    8.java中的设计模式

    1.单例模式
    2.适配器模式
    3.观察者模式
    4.builder模式
    个人理解它的优点是能把一个复杂对象的每一步的构造过程解耦
    5.代理模式

    android中使用的设计模式

    9.synchronized关键字的应用

    synchronized详解

    10.HashMap工作原理

    HashMap工作原理

    Android基础:

    1.Activity生命周期是怎么样的

    ActivityA跳转到ActivityB:

    a.onPause()-->b.onCreate()-->b.onStart()-->b.onResume()-->a.onStop()

    ActivityB再回退到ActivityA:

    b.onPause()-->a.onRestart()-->a.onStart()-->a.onResume()-->b.onStop()-->b.onDestory()

    若在Activity界面按home键又返回:

    onPause()-->onStop()-->onRestart()-->onStart()-->onResume()

    2.Service的生命周期有哪些

    通过start方式启动:

    onCreate()-->onStartCommand()-->onDestory()

    通过bind方式启动:

    onCreate()-->onBind()-->onUnbind()-->onDestory()

    3.对MVP、MVC、MVVM的了解

    4.android中handler的使用

    //handler绑定looper,并暴露接口,用于实现
    mHandler = new Handler(Looper.myLooper()){
                @Override
                public void handleMessage(Message msg){
                    Log.d(TAG, "获得了message");
                    super.handleMessage(msg);
                }
            };
    //创建MessageQueue
    looper.prepare();
    //发送Message到MessageQueue
    Message message = new Message();
    message.sendToTarget();
    //轮询MessageQueue
    looper.loop();
    

    5.android中touch事件的传播

    6.有没有用过EventBus

    EventBus使用详解

    7.谈谈android中的性能优化

    7.1.对布局的优化

    1.使用include标签,能达到对布局的重用
    2.使用merge标签,他可以删除多余层级
    3.使用ViewStub,ViewStub加载布局时,占用资源很少。ViewStub的应用
    关于include,merge和ViewStub

    7.2.使用clipRect用于防止overDraw

    7.3.ListView滑动卡顿:

    可能是因为滑动过程中正在下载图片,也可能是item布局太复杂

    8.有哪些常用的开源框架,说说他们的优点

    网络请求 okhttp:会从很多常用的连接问题中自动恢复。如果您的服务器配置了多个IP地址,当第一个IP连接失败的时候,OkHttp会自动尝试下一个IP。OkHttp还处理了代理服务器问题和SSL握手失败问题
    图片加载 glide:glide会根据imageview的大小来确定要加载的图片的大小,磁盘缓存时,也只缓存控件大小的bitmap
    View注入 Butter Knife
    数据存储 DBFlow ORM
    热修复 tinker 热修复的原理是用classloader来加载class文件
    事件总线框架 EventBus EventBus使用详解

    9.JNI的使用

    JNI基础

    10.Android中常用的IPC的方式,以及各自的优缺点

    1.使用Bundle 数据类型支持有限,序列化耗时
    2.使用文件共享 无法即时通信,不好处理高并发
    3.使用Messenger 通过Message进行传输,所以也只能支持bundle数据;适用于轻量级和地并发 Messenger详解
    4.AIDL AIDL详解
    5.ContentProvider 用于数据共享
    6.Socket 用于网络交换

    11.Android中的内存泄漏,内存溢出,以及内存抖动

    内存泄漏是某些对象不能被回收
    内存溢出是由于内存不足
    内存抖动是由于频繁GC

    Android性能优化典范

    12.图片的处理

    13.Fragment与Activity通信,Fragment之间是怎么通信的

    Fragment与Activity之间通过EventBus或者接口的方式通信
    Fragment之间通过绑定的Activity中转做通信

    14.Fragment的生命周期和Activity生命周期比较

    Activity与Fragment生命周期探讨

    15.android蓝牙开发流程

    Android经典蓝牙开发简介

    16.android应用启动流程

    17.android中的缓存策略

    分为内存缓存(一级缓存)和磁盘缓存(文件缓存),需要特定数据时,先去找内存中是否存在,如果没有再去磁盘中找,如果都没有,则再去进行网络请求。

    18.android组件化开发

    19.两种注册广播的方法的区别

    清单文件中注册广播是常驻型广播,不跟随程序的生命周期,在代码中注册的广播正相反

    20.如何实现自定义标签列表

    Android自定义标签列表控件

    21.Activity四种启动模式

    Activity启动模式

    22.lrucache在android中的使用及原理

    LruCache的使用及原理

    23.android图片处理

    android图片处理

    24.android surfaceView

    android surfaceView

    相关文章

      网友评论

          本文标题:杭州Android面试小结

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