android面试技术总结

1. 算法和数据结构
    1.数据结构:线性结构,链表结构,双向链表,堆栈和队列,树和二叉树,图

1.


    2.算法: 常见算法算法的时间复杂度空间复杂度手写算法,排序,查找等

1.


    
2.设计模式 MVC MVP MVVM,reduce
    1.MVC 的设计优缺点 使用场景
        
    2.MVP 的设计优缺点 使用场景
    
    3.MVVM的设计优缺点 使用场景
    
    4.reduce的设计优缺点 使用场景
    
    5.设计模式的讲解 使用
    
3.Java的语言特性
    1.运行时类型信息(RTTI+反射)
        RTTI:编译时开始打开和检测.class文件。(普通方法调用对象的所有方法)
        反射:.class文件在编译时是不可获取的,在运行时打开和检查.class文件。这个可以用于工程设计模式用于动态生成想要的类
    
    2.代理模式和Java中的动态代理
        1.代理模式:在任何时刻,只要你想要将额外的操作从“实际”对象中分离到不同的地方,特别是当你希望能够很容易的做出修改,
            从没有使用额外操作转为使用这些操作,或者反过来时,代理就显得很有用(设计模式的关键封装修改),例如,
            如果你希望跟踪对某个类中方法的调用,或者希望度量这些调用的开销,那么
        2.动态代理
            Java的动态代理比代理的思想更加向前迈进了一步,因为他可以动态地创建代理并动态地处理对所代理的方法的调用
    
    3.面向对象的特性 
        1.继承,多态,封装
            1.继承:
                
            2.多态:
                1.在面向对象中,子类拥有父类相同的方法名称这时子类覆盖父类方法,当调用子类中的这个方法时,不必知道子类的具体类型,
                    只需要将子类类型看做是父类的引用调用其操作方法,在运行时,jvm会根据引用对象的具体子类类型而调用该对应的方法,
                    
                2.早绑定:一般在飞面向对象的编程语言中使用,在陈旭编译时即计算出具体调用方法体的内存地址
                3.晚绑定:面向对象中编程语言中经常使用,在程序编译时无法计算出具体调用的方法体的内存位置,只进行方法参数类型和
                          返回值类型的校验,在运行时才能确定具体的调用方法体的内存地址。

4.多态存在的三个必要条件:要有继承,要有重写,父类引用指向子类对象

5.多态的好处:

1.可替换性:多态对于已存在的代码具有可替换性

2.可扩充性:多态具有对代码具有可扩充性,增加新的子类不影响已存在的多态,继承。

3.接口性:多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它来实现其中的内容

4.灵活性:

5.简化性:多态简化了应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时。
                
            3.封装:
            
        2.面向对象中的两种中的两种组合方式 is-a 和 has-a
            1.is-a组合:一个类继承了具有相似功能的另一个类,根据需要在所继承的类基础上进行扩展
                优点:具有共同属性和方法的类可以将共享信息抽象到父类中,继承类根据需要进行扩展
                缺点:子类中扩展的部分父类不可见,另外如果共性比较少的时候使用继承会增加冗余代码
            2.has-a组合:has-a组合是在一个类中引用另一个类作为其成员变量
                优点:可扩展性和灵活性高,在对象组合关系中优先考虑has-a组合关系
                缺点:具有共性的类之间看不到派生关系
    
    4.垃圾回收机制
        1.垃圾回收器的原理
            1.引用计数(ReferenceCounting)垃圾回收算法
                一种简单但速度慢的垃圾回收算法,每一对象拥有一个引用计数器
            2.暂停复制(stop-and-copy)算法
            3.标记清除(Mark-and-sweep)算法
            4.分代复制(generation-copy)算法 
    
    5.Java中的构造函数和析构函数
        1.构造函数
        2.析构函数
            Java中没有像C/C++的析构函数,用来销毁不用的对象是否存在内存空间,只有一下三个方法用于通知垃圾回收器回收对象
            1.finalize() 只是通知JVM的垃圾收集器当前的对象不再使用可以被回收了,但是垃圾回收器根据内存使用状况决定是否回收
            2.system.gc() 是强制显示通知垃圾回收器回收垃圾对象释放内存,但是垃圾回收器还是会根据当前内存使用情况决定是否回收
            3.RunTime.getRunTime().gc()和System.gc()类似。


    6.java中的集合容器及其继承关系

1.Collection

   |---List

   | |---LinkedList

   | |---ArrayList

   | |---Vector

   | |---Stack

   |---Set


Map

  |---Hashtable

  |---HashMap

  |---WeakHashMap


     7.java虚拟机

java语言编译后生产中间字节码,java平台提供虚拟机,虚拟机在具体运行字节码时生成平台对应的机器指令执行


    8.string,StringBuffer,StringBuilder

1.String:字符常量

2.StringBuffer:字符串变量(线程安全)

3.StringBuilder:字符串变量(非线程安全)

        
4.git svn gradle ant maven等团队协同,项目工程管理工具的使用 场景 原理等
    1.git
    
    2.svn
    
    3.gradle
    
    4.ant
    
    5.maven
    


5.Android平台的特性 组件特性 性能优化
    1.android的四大组件的生命周期,运行所在线程,Windows和windowManger机制和使用

1.


    2.View,scrollView,ListView,fragment,等view的特性,事件分发


    3.多进程,多线程的消息通讯,handle机制,IPC机制,aidl机制,socket机制,
    4.动画的类型和动画的使用
    5.Bitmap,Drawble,图片加载的缓存,大图的加载,对于网络的多线程加载,本地的三级缓存
    6.Android的线程和线程池
    7.Android的打包发布,异常的捕获和处理异常的机制
    8.Android的性能优化
    9.Android的实际场景问题


6.Android开源工具的设计原理 使用场景 性能特点
    1.
    2.


7.Android实践的问题集合


8.APP框架:分包分层


9.自动化测试


10.代码CodeReView工具

    1.Gerrt
    2.Github pull request

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值