一面 :面试官很年轻,去的时候在一楼等他帮我刷卡进去,然后我们就直接在五楼的开放式餐桌面试,全称看我简历问,所以写简历一定要把会的写上面,不会的就看情况写不写了,要是写上面被问到还答不上来就尴尬了
1.上来自我介绍,简单看了一下项目,然后问我对内存优化,我就说图片压缩,然后又问我图片压缩怎么处理的,就是oom ,就是三级缓存lrucache 那一套,又问我为什么底层是用linkedhashmap ,最近最少使用算法怎么实现的?
2.做过那些安卓性能优化
3.view 绘制原理,具体会问到方法,和参数是干嘛的,点击事件传递原理(这个感觉是必考点哪家面试都问)(问的很深入)
4.okhttp 网络请求队列缓存机制,怎么过滤重复请求,还有gilde 图片压缩原理
5.滑动事件冲突,不用高度写死,自己实现ontouchlistener 怎么做
6.用过的设计模式,为什么mvp ,有什么好处?
7.Rxjava +retrofit
8.双重检查加锁机制,为什么它是线程安全的(这个是先让我手写个单例,我问写懒汉还是饿汉,他说随便,你觉得最好的单例,我特么就写个双重检查加锁,自己给自己下套)
二面:面试官换了个稍微大点年龄的,但也是二十多感觉,上来照例自我介绍,然后看看我最近独立开发的项目,这个哥们感觉是Java老手
1.先问了一下集合,就是经常问到的,list set map
2.然后问线程,线程的几种状态,停止线程有哪些方法,还有线程池的队列(问了很长时间)多线程并发访问,同步线程,异步区别,和实现原理
3.问我做没做过插件化开发,(确实没做过,只好说不太了解)又问热修复用过那些框架,我就光说一个知道的andfix 但是并没有说的很详细
4.应用程序从launcher 点击图标,到程序启动的过程,以及应用程序除了点击图标启动还有别的启动方式麽?(这里多亏了之前从事过车机开发,接触过一些freamwork 源码,知道可以通过设置manifest.mk 文件创建电话广播,通过拨号#*#*……启动应用)勉强说上来一点
5.怎么保证服务不被杀死,长期运行在后台
6.还有Java中一些如synchronized和volatile 的用法还有区别,还聊了些Java原生线程间通讯(这个说的不好)
之后问了下期望薪资
三面:面试官换成了年龄大一点的经理了吧,应该是,两边头发有点白,然后就是刨根问底的问之前的公司,公司各方面情况,然后项目遇到什么难题,怎么解决的,还有就是个人擅长什么,向往什么,了解哪些技术,(比如你做过什么牛逼框架或者用过什么厉害的技术(这个我没有)),最后就是离职原因(我是在职,我就说现在在职公司不开工资)然后就是回去等信吧
总结一下:面试的技术点,很多都是你简历上写的,而且都会问的很详细,很深入,更看重阅读源码能力,和自己封装库,自己自定义控件什么的,感觉能力还是欠缺不少,算是一次宝贵经验,以后多多学习,多多努力