上来就是算法题:两个线程如何让线程A等待线程B的运行结果:一开始想用join,后来尝试synchronized,但都存在问题,最后想到了自旋
算法题:确定一个数组是不是二叉搜索树的后序遍历
聊项目
然后是八股文面试
Retrofit的实现原理
Retrofit所使用到的设计模式
说一说观察者模式
对LiveData监听的的onChange方法什么时候会被调用(这个一开始答偏了,说内部的引用改变才会调用,后来经过提示是生命周期相关)
弹出一个Dialog,Activity中LiveData的onchange是否会调用
不用第三方库,自己尝试读取Bitmap,需要注意哪些问题(内存溢出和LRUCache)
boss直聘得到的面试机会
面试有笔试,当时有三个面试的同学一起做笔试,笔试有选择题和回答题
选择提是多选题,还挺难的
一面:
1.介绍一下你们项目的架构
2.Rxjava是怎么实现线程切换的
3.Rxjava自定义操作符
4.ARouter的原理
5.ARouter怎么实现接口调用
6.ARouter怎么实现页面拦截
7.MVP怎么处理内存泄漏
8.OkHttp怎么实现连接池
9.如果让你来实现一个网络框架,你会考虑什么
10.你做过什么性能优化的工作
11.热修复的原理,资源的热修复的原理,会不会有资源冲突的问题
12.ViewPager中嵌套ViewPager怎么处理滑动冲突
13.android源码中有哪些设计模式
14.说说binder机制的原理
项目追问 跨平台原理 webview优化,除了jsbridge还有哪些通信方式边下边播,断点续传的原理
跨进程同时操作文件多线程同时操作文件,对组件化的理解,AMS,binder细节,动画的区别引出属性动画原理,invalidate原理
1、计算机基础知识:网络 ssl细节、操作系统启动
2、整体安卓系统及app启动流程及细节
3、项目细节。画项目架构图。项目难点
4、0首帧细节
java 线程状态,sleep处于什么状态,线程池的选择方案,sp的commit,apply区别。
问0首帧方案、中台架构,这么多组件怎样提升编译效率,invalidate流程,与requestlayout区别,aop的字节码插桩使用,javaassist与asm区别。插件项目中插件托管宿主view使用资源的具体插桩细节
算法:数组中的第 k 大的数字