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