今天早上现场面的,一共三面,由于问的问题确实太多了,所以有些遗漏,把记得的问题记录了下。每面差不多一小时。
一面:
1、聊项目
2、MVP模式的优缺点
3、图片压缩怎么做
4、图片缓存怎么做,解释LruCache算法
5、http协议
6、常用的排序算法,时间、空间复杂度
7、常用的设计模式
8、java中多态的表现
9、抽象类和接口的异同。
10、android 7.0和android N分别新增了什么内容?
算法题:字符串数组(可能很大)按字典序排序,不能用现有的类库。
二面:
1、自定义控件的基本流程,每一步具体做什么
2、介绍http协议,http的常用请求头,OkHttp的优点在哪?
3、android中多线程怎么处理,handler机制
4、多线程下载文件;多个线程写同一个文件和多个线程分别写单独的文件然后最后合并这两种做法的区别在哪?那种性能好?有什么更优的方法吗?
5、断点续传文件怎么做?
6、android中的性能优化,布局、内存等
7、android中出现内存泄漏的原因,怎么发现?
8、解释OOM的原因,如果当前应用可用内存为20MB,而目前只用了10MB,请问这种情况有可能会发生OOM吗?
9、android中的跨进程方式,binder原理,数据要拷贝几次?android为什么要设计跨进程?
10、sleep()和wait()的区别
11、为什么要使用设计模式?
12、多线程访问单例(双重锁写法)会存在什么问题?怎么解决?
13、项目中遇到的困难。
三面:
1、聊了很久项目,分析项目的难点、核心技术。
2、使用SharedPreferences的get和put方法读写数据会面临什么问题,IO性能方面怎么解决?
3、一个应用如何发现当前局域网中别的也开启了这个应用的设备?
4、android中CRASH和ANR的区别在哪?
4、android中ANR是怎么发生的?系统又是如何发现有应用ANR的?
5、普通for循环和增强for循环的区别,以及使用的场景。
6、http2.0新增了什么内容?
7、当需要加载一个类时,在当前classLoader中没有找到该类会怎么样?(双亲委派)如果最后也没找到呢?(抛出异常ClassNotFound)抛出异常后又会怎么样?
8、解释AtomicReference和compareAndSet。