电话一面:
1、Android事件分发机制,如何处理冲突;
2、webview有哪些问题?
3、listview缓存机制和优化;
4、Bitmap图片优化;
5、okhttp源码:分发器和五大拦截器;
6、线程间通信和进程间通信;
7、类加载机制;
8、如何做进程保活?
9、了解小程序、RN、flutter吗?
笔试二面:
1、求下列代码执行后result的值;
String intersect(String s1,String s2){ char[] c1 = s1.toCharArray(); char[] c2 = s2.toCharArray(); List<Character> list = new ArrayList<>(); StringBuilder sb = new StringBuilder(); for(int i=0;i<c1.length;i++){ for(int j=0;j<c2.length;j++){ if(c1[i]==c2[j] && !list.contains(c1[i])){ list.add(c1[i]); sb.append(c1[i]); } } } return sb.toString(); }
public SingleClass{ private static SingleClass instance = new SingleClass(); private SingleClass instance2; public static SingleClass getInstance(){ return instance; } public static SingleClass getInstance2(){ if(instance2==null){ sychronized(SingleClass.class){ if(instance2==null){ instance2 = new SingleClass(); } } } } }
4、sleep,wait,yield在多线程应用中的区别
5、使用JNI时,如何在C++代码中访问到一个java对象
public void sort(int[] a){ //注意此行是重点,不能放到循环内 int temp; for(int i=0;i<a.length;i++) for(int j=0;j<a.length-i-1;j++){ if(a[j]>a[j+1]){ temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } }
三面:
1、四大组件、activity启动模式、activty各种情况下的生命周期
(1)activity生命周期:onCreate - onStart - onResume - onPause - onStop - onDestroy - onRestart
(2)activity启动模式:standard、singleTop、singleTask、singleInstance
(3)singleTop在栈顶时候再启动的生命周期变化:onPause - onNewIntent - onResume
(4)singleTask在栈内再次启动时候的生命周期变化:onRestart - onStart - onResume
2、屏幕横竖屏切换时的生命周期变化
(1)onCreate - onStart - onResume - onPause - onSaveInstanceState - onStop - onDestroy - onCreate - onStart - onRestoreInstanceState - onResume
3、view的绘制流程
(1)测量
(2)布局
(3)绘制
①绘制背景
②绘制画布
③绘制内容
④绘制孩子
⑤绘制阴影
四面:
1、http 1.0 、1.1和2.0的区别
(1)1.0每次都要重新建立连接
(2)1.1连接可以复用
(3)2.0可以实现并发多路复用,长连接服务器可主动向客户端推消息
2、你这个项目是怎么做架构设计的?如何做事件传递?EventBus中如何处理生命周期问题?组件化如何解决模块间部分服务调用问题?
(1)架构层次和模块划分,细节请点击
(2)事件传递使用EventBus
(3)模块间页面跳转和调用使用Arouter,部分服务调用抽离接口到基层模块
全部评论
(3) 回帖