等着做
来源:https://www.jianshu.com/p/fbf38058d2bb
1,Activity启动过程,AMS,PMS源码
启动过程:
点击app图标后通过startActivity()远程调用到AMS中,AMS将activityRecord的结构 压入Activity栈中,并通过远程Binder回调到进程,使得原进程进入pause状态,原进程pause后通知AMS,”我pause了”;
这时AMS再根据 栈中activity的启动意图(intent)中的flag是否有new_task 的标签判断是否需要启动新的进程;
启动新的进程后,通过反射调用ActivityThread的main方法,方法中调用looper.perpare和looper.loop启动消息队列循环机制。最后告知AMS"我启动了",然后AMS回调handlerLauncherActivity方法加载Activity()方法加载Activity,在此方法中,通过反射调用Application的onCreate()和Activity的onCreate(),然后在handleResumeActivity()中反射条用Activity的onResume()方法。
AMS:Activity Manager Server,是Android内核的核心功能之一,在系统启动SystemServer时启动该服务。主要功能:对Android四大组件(Activity,Server,Broadcast,Content Provider)的管理,包括启动、生命周期管理等;
2,View的绘制过程,MeasureSpec测量模式分别代表什么意思,draw是哪里来的?自定义view
3,view的事件分发机制
4,hashmap原理,arraylist,linklist原理
5,你在开发过程中常用设计模式有哪些,单例设计模式的双重校验的目的?去掉第一个判空或第二个判空有啥不同
工厂模式解决了什么问题?使用了哪些设计原则?等
6,retrofit,okhttp,rxjava原理,okhttp用到了哪些设计模式,连接池的实现原理,rxjava线程切换的原理,eventbus原理
7,jvm模型,java内存模型,垃圾回收机制,垃圾回收哪个区域,对象在内存哪个区域等等
8,startService和bindService区别,多次启动会调用哪些方法?
9,Activity旋转会调用哪些方法(被问过一次)
10,数据结构和算法,比较少会去写,要求手写 冒泡或者快速希尔排序等排序,最少要会一种
11,你都做过哪些内存优化,apk优化等
12,哪些会导致内存泄漏,如何检测,以及解决办法,内存泄漏和溢出有啥不同
13,图片优化,一个大图(10M,100M)如何去展示。
15,一些程序运行的结果,一般考的是重载,多态的,或者各种 i++ ++i 的结果的
16 图片缓存框架的原理,你字迹是否有实现过图片缓存框架,怎么实现的
17 mvp,mvc区别,mvvm有木有了解的?
18 适配方案
19 跨进程通信方式,以及AIDL原理
20 子线程与子线程通信方式,handler怎么去实现子线程之间的通信
21,Message、Handler、MessageQueue、Lopper,以及Looper既然是死循环的,为毛不会导致UI线程的阻塞
22,android动画
23,多线程同步问题,锁lock,syc等
网友评论