面試小記

1:设计模式 观察者模式observer observerble,subscribe (订阅) (1)观察者对象 imp observer,实现update(observable,object) (2)observervle被观察者 创建实例,通过add添加观察者对象 (3)创建观察者实例,调用update更新操作,deleteObserver删除消息 onCompleted onError onNxet observer通过subscrible实现对observable的订阅 工厂模式:多态的一种体现 1:创建一个抽象类,需要实现的方法(getResult) 2:具体类(add方法)继承抽象类,实现抽象方法 3:创建工厂,抽象类 new 具体类,实现 代理模式:proxy 1:创建一个抽象类和抽象方法 2:创建一个真实类继承抽象类实现抽象方法 3:创建一个代理类继承抽象类,new 一个真实类,实现抽象类方法 4:调用抽象类创建一个新的代理类,执行代理类方法即可完成真实类的方法. 单例模式:保证只有一个实例存在,节约内存开销,避免重复创建对象. public class SingleInstance{ static class SingleHorder{ public final static SingleInstance singleinstance=new SingleInstance(); } public static SingleInstance getInstance(){ return SingleHorder.singleinstance; } } 适配器模式 adapter 对象适配器模式,可以将接口不同的通过继承方式更好的复用方法. 2:android sdk源码 Log源码 i:一般提示性信息 e:错误信息 v:任何信息都会输出 w:警告信息 a:4.0新增,断言的信息 d:debug信息 handle源码 dispatchMessage处理消息 push将消息存放在消息队列 handleMessageDelaye延时消息 3:android常用布局框架 FrameLayout LinearLayout ReletiveLayout AbsoluteLayout TabLayout 4:android多线程 (1)asyncTask 处理少的请求, (2)handleThread 为某些回调方法执行专属的线程 (3)ThreadPool 把任务拆分成不同的单元,分发到不同的线程上并发处理 一:ThradPool线程池 二:poolWork工作线程 三:Task任务接口 四:TaskQueue任务队列 (4)IntentSercvice 执行ui发出的后台任务.继承Service里面实现了handleThread处理异步任务配合broadcastRecerver使用 5:http/tcp/socket ip:网络层 tcp/udp:传输层 tcp传输三次握手,传输速度快,数据量大,安全,upd反之. http:应用层 socket:Tcp/ip网络的api tcp使用socket需要定制ip和端口 Socket socket=new Socket("192.168.1.1",123); udp只需要端口即可 DatagramSocket datagramsocket=new DatagramSocket(123); udp接口发送数据: new DatagramPacket 接收receive 发送send 6:html5,vue 7:mvp mvp: model数据层 v:view层activity p:persenter 8:图片缓存方式 piccaso 不需要初始化 不支持动态图 glide 支持gif imageLoader 设置缓存图片大小 2:磁盘缓存 3:网络缓存 1:LruCache。(内存) 弱引用,linkedHashMap>,引用bitmap对象 通过put方式加入集合,每次加入到栈顶,内存不足时候从栈低移除bitmap对象 1:质量压缩(不变) 质量压缩不会改变实际的像素,内存不变 2:采样率压缩(变小) 计算原有的尺寸后压缩 3:比例压缩(变小) 给定宽度高度进行压缩 jni调用 loadLibrary() 插件化: dexClassLoader 9:okhttp了解 1可以缓存InternalCache 2拦截器Interceptor 3允许自动重定向 4GZIP解压速度快 android6.0新特性: 1:运行时权限 2:httpClinet替换成httpurlConnection 3:新增指纹解锁 android5.0新增沉浸式状态栏 app打包流程: 1:编译资源文件和类文件成class 2:将class文件编译成.clasess 3:将.clasess转成Dex 4:打包 5:签名对齐操作 android自定义view: 1:创建view集成view 2:设置view属性 3:获取view属性值 4:初始化Paint 5:重写onMesure 6:重写onDraw android事件拦截: onTouchEvent() 当viewGroup本身决定拦截并未设置事件onTouchListener onDisPathTouchEvent();true则不向下传递 viewGroup的IntercpterTouchEvent和TouchEvent在此方法内部调用 onInterceptTouchEvent();当viewGroup本身决定拦截Action.DOWN时,后续的move和up不会调用onIntercepterTouchEvent()

你可能感兴趣的:(面試小記)