- View的绘制和触摸事件机制。
调用 invalidate 或者 reqeustLayout 方法后,对绘制流程的影响。
- Java内存模型和虚拟机内存模型。
- 多线程的volatile关键字原理。
- 关于TCP你知道多少。
- https是如何加密的。
- HashMap的数据结构,并说明下put和get的流程。
- Android是如何通过xml文件展示出控件布局的。
- dex分包原理,哪些是放在主dex中的。
- CAS是什么,它的实现原理是什么。
- synchronized是如何保证原子性,可见性,有序性的。
- Flutter的绘制流程。
这个算是Flutter的重点问题吧。
- HashMap如何使用分段锁来保证线程安全。
- 主线程的Handler在子线程通过Message的obj把某对象传递到主线程处理,子线程切换到主线程是如何保证它的可见性的。
- CAS的ABA问题,如何解决。
- 点击app到第一个Activity可见经历了哪些过程。
- StartingWindow的展示时机。
- 详细说下Binder机制。
- Skiga和openGL的关系,各自负责哪些点。
- Kotlin协程是如何挂起和唤醒的。
- http2了解多少。
- 实现AOP的手段有哪些,切入点是哪些时机。
- 如何判断一个对象是可回收的。
- 垃圾回收算法有哪些。
- 你们应用启动时会有多少线程产生。
可能是想知道是否有对整体的线程进行调度。
- Kotlin和Java混合开发时,遇到了哪些坑。
- 进程和线程的关系和区别。
- HandlerThread帮我们做了哪些事。
- Android中有哪些动画,各自的坑点是什么。
- HashMap和Hashtable的区别。
最主要的区别还是线程安全,但是其他的数据结构、扩容、null值也最好说下,还有就是Hashtable是如何实现线程安全的。
- Retrofit是如何通过RxJava2CallAdapterFactory实现RxJava的链式调用的。
- LiveData和RxJava的联系和区别。
- 热启动显示启动页,如何实现。
- RecyclerView的缓存机制。
- 算法部分:
- 有一棵无穷大的满二叉树,其结点按根结点一层一层地从左往右依次编号,根结点编号为1。现在有两个结点a,b。请设计一个算法,求出a和b点的最近公共祖先的编号。 给定两个int a,b。为给定结点的编号。请返回a和b的最近公共祖先的编号。注意这里结点本身也可认为是其祖先。
- 获取一个二叉树的每层最大值。
- 利用链表进行大数相加。
如:1 -> 2 -> 3 -> 4和5 -> 6 -> 7 -> 8进行相加,得到6 -> 9 -> 1 -> 2。
- 对一个链表以两个节点为一组,进行反转。
如:1 -> 2 -> 3 -> 4,得到2 -> 1 -> 4 -> 3。
- 如何进行一次遍历得到一个链表的倒数第k个节点。
- 获取二叉树从根节点出发和为target的路径。
- 如何判断一个由'{','}','[',']','(',')'组成的字符串是合法的。
- 合并两个有序链表得到一个有序链表。
- 对一个二叉树进行链表化。