题目来源:
https://www.jianshu.com/p/c70989bd5f29
参考:
http://blog.csdn.net/javalive09/article/details/50588525
15193
理论没有上限
Viewpager+fragment
(一)图片
图片库对比
图片库的源码分析
图片框架缓存实现
LRUCache原理
LinkHashMap单向链表,最近使用的放在最后,不常使用的放在头部,超过限制就删除头部的缓存。
图片加载原理
自己去实现图片库,怎么做?
Glide源码解析
Glide使用什么缓存?
Glide内存缓存如何控制大小?
HTTP协议
HTTP1.0与2.0的区别
HTTP报文结构
HTTP与HTTPS的区别以及如何实现安全性
如何验证证书的合法性?
https中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解?
client如何确定自己发送的消息被server收到?
谈谈你对WebSocket的理解
WebSocket与socket的区别
谈谈你对安卓签名的理解。
请解释安卓为啥要加签名机制?
视频加密传输
App 是如何沙箱化,为什么要这么做?
权限管理系统(底层的权限是如何进行 grant 的)?
参考:
http://blog.csdn.net/leehong2005/article/details/9128501
https://www.cnblogs.com/xgjblog/p/5647803.html
1.重命名原来的表
2.建立新表
3.复制数据
4.删除旧表
参考:
http://blog.csdn.net/u014608640/article/details/52511310
http://blog.csdn.net/horkychen/article/details/18892223
http://blog.csdn.net/whb20081815/article/details/70142033
1.索引
2.事务
3.在Where分支中使用限定符
4.语句的拼接使用StringBuilder代替String
5.查询时返回更少的结果集及更少的字段。
6.异步操作数据库
参考:
http://blog.csdn.net/u010134293/article/details/58590092
http://blog.csdn.net/da_caoyuan/article/details/61414626
greenDao 插入删除快
realm 查询快
对热修复和插件化的理解
插件化原理分析
模块化实现(好处,原因)
热修复,插件化
项目组件化的理解
描述清点击 Android Studio 的 build 按钮后发生了什么
参考:
https://www.zhihu.com/question/29575295
http://blog.csdn.net/happy_horse/article/details/50908439
单例模式:各种系统级服务
建造者模式:AlertDialog.Builder,静态内部类
适配器模式:Adapter
工厂模式:BitmapFactory
观察者模式:ContentObserver
参考:
http://blog.csdn.net/copy_yuan/article/details/51524667
MVC Activity即是Controller又是View,View与Model耦合很高
MVP Activity充当View处理UI,Presenter用来负责事件分发,将View和Model隔离
MVVM 解决了数据绑定的问题,但是View中逻辑过重。
个人使用MVP,View中去掉数据操作之后,代码量完全可以接受,再加上findViewById插件或者ButterKnife插件写起来很快。
实现组件间通信
register会把当前类中匹配的方法,存入一个map,而post会根据实参去map查找进行反射调用
RxBus实现EventBus
https://www.jianshu.com/p/b99d60a4e749
参考:
http://blog.csdn.net/universus/article/details/6211589
http://blog.csdn.net/huaxun66/article/details/52966087
http://blog.csdn.net/u011240877/article/details/72825706
(七)性能优化
DDMS 可用于 检测内存泄漏;
TraceView 可跟踪代码的执行时间,需要SD卡访问权限
Debug.startMethodTracing("love_world_");
Debug.stopMethodTracing();
冷启动:Application.onAttachBaseContext->FirstActivity.onWindowFocused
热启动:onRestart->onWindowFocused
设置windowBackground,延时创建Application中的对象,不必要的类可以稍后实例化, 一些第三方 SDK延迟初始化
代码稳定性,提前用捕捉一些可能出现的异常,自定义异常捕捉器
(八)NDK、jni、Binder、AIDL、进程通信有关
(九)framework层、ROM定制、Ubuntu、Linux之类的问题