android从业者的自我修养
从业两年半。细碎知识点很多,本次做一个全局的梳理。
android 知识点梳理:
- 一.android 四大组件
四大组件:activity 、service、broadcastReceiver、contentProvider
activity启动方式:
1.singleTask
调用activity A时,检测栈中有没有A,有的话调用,非栈顶ko之前的
2.singleInstance
调用activity A时,单独给开一个栈,一直用到GG
3.singleTop
调用activity A时,在栈顶就复用,不在就开个新的
4.standard
调用activity A时,创建一个新的填到栈顶
service:
启动: 1.startService。2.bindService
broadcastReceiver
类型: 1.本地广播 2.普通广播 3.系统广播
注册:静态注册 、动态注册
contentProvider
是应用程序之间共享数据的接口。使用的时候首先自定义一个类继承ContentProvider,然后覆写query、insert、update、delete 等方法。
- 二.android 源码
1⃣️ view绘制流程、事件分发机制
2⃣️ recycleView的源码
3⃣️ okhttp源码(网络)
4⃣️ Glide源码(图片加载)
5⃣️ ActivityManagerService 源码
6⃣️ WindowManagerService 源码
- 三.android UI (布局,自定义view 各种酷炫视觉特效waiting)
- 四.android 线程、多线程、协同
- 五.android 性能优化 (UI、内存、卡顿、启动、I/O、存储、网络、包体积)
- 六.android 热修复
- 七.android 项目架构 MVVM(lifeCycle、DataBinding、ViewModel)\ MVP \ MVC
- 八.Gradle 打包流程 (xml.dex.class.等转化,使用groovy)
- 九.android 网络(应用层:HTTP 传输层:长连接socket)
- 十.android 知名三方框架
- (网络:android-async-http 、volley、okhttp、retrofit)
- (图片加载:UIL、Picasso、Fresco、Glide)
- 十一.android 辅助工具(androidKiller 反编译、postMan 查接口 、charles 抓包、Monkey 测试)
- 十二.android 安全(目前:MD5 代码混淆proguard)
- 十三.android 扩展( kotlin flutter。。。)
- 十四.android 插件化
java知识点梳理
【工欲善其事,必先利其器】java是android的基础,java语法必须要非常熟练。同时需要清楚的了解应用运营的操作系统和环境。经验证明,在解bug的时候有莫大的帮助。
ps:没想到尝试的第一次面试,碰到的就不是资深安卓工程师来面,而是主攻服务端的java程序员(CTO)。
因同是java语言,面试题里,两道java基础题,一道安卓题,一道算法题。有一道java题不会做,是关于多线程的,给问懵了。觉得丢脸哦,得把这块知识点好好梳理复习一下。
public synchronized void recordData(String data){
dataList.add(data);
}
public void printData() {
synchronized(dataList) {
for (int i = 0; i < dataList.size() ; i ++) {
printOut("i :" + dataList.get(i));
}
}
}
数据结构与算法梳理
基本数据结构:
字符串(KMP算法)
数组 (排序算法)
队列和栈
链表(单向链表、双向链表、循环链表)
树\堆
二叉树(平衡二叉树、二叉查找树 【先序、中序、后序遍历】)
图(求最短路径 :弗洛伊德算法、迪杰特斯拉算法)
散列表 【哈希】
常用设计模式梳理
建造者模式(Builder):
Request request = new Request.Builder().url(url).post(body).build();
单例模式(singleInstance):