提前批非常幸运地拿到了oppo的offer,分享一波面经
一面 35min
- 自我介绍
- 项目相关:
- ①ARouter路由框架:有没有看过源码?分析一下。如果是你来设计,你会如何设计路由跳转?
- ②Retrofit网络框架:看过源码吗?简单说下。
- ③项目难点,如何解决?
- JVM和DVM的区别,ART与DVM的区别。
- 有几种情况会产生ANR,ANR产生的原因
- Android控件为什么不能加锁?
- 线程通信:
- ①handler简单讲一下
- ②Asyntask的缺点是什么?为什么官方现在不推荐使用。
- ③说一说handlerThread
- Binder机制,AIDL简单说一下。
- 如果设备内存只有1G,加载一张20G的图片,需要怎么操作?
- JVM GC部分:
- 为什么不使用引用计数法而是使用可达性分析法
- 各种GC算法的优缺点,分代回收算法。
- 内存泄漏问题,在Android一般如何定位?有使用过什么工具解决吗?
一面总结:一面比较注重Android方面的基础,也会问一些开放性的问题。
二面 38min
- 自我介绍
- 项目深挖,二面的面试官明显更加注重细节,可能是组长或者主管,所以要求你在简历上写的项目要非常熟悉,如果不熟悉的点最好不要往简历上写,避免给自己挖坑。
- 有没有了解过插件化?插件化和组件化什么区别?(这个也是跟项目相关,因为我的项目使用了组件化)
- Applicatipn Context在什么情况下不能使用。(Context在Android中非常重要,建议大家多了解下,郭霖有一篇文章介绍Context写的非常好)
- 加载一张特别大的图片,该如何操作?(一面也问了这个问题,所以二面回答的不错。可以了解下Android压缩图片的操作以及图片缓存技术LruCache。图片加载库最好也了解下,比如Glide,如果能把Glide大概的讲出来,相信面试官会眼前一亮)
- 一定要在主线程中更新UI吗?能不能在子线程更新?(surfaceView)
- LRU的底层数据结构?双向链表如何提高查询效率?
- kotlin是如何兼容Java的(这个其实很简单,因为Java和Kotlin都属于编译型语言,只需要Kotlin的代码编译成Java虚拟机能识别的class文件就可以了)
- 你觉得你最大的优势是什么?(建议遇到这种问题不要一个劲地夸自己,可以举例说明。比如说在了解快速排序算法的时候,会去深入地了解各个版本的快速算法是怎么改进的,从而思考其中地道理,表现出你是一个喜欢钻研,喜欢技术的同学)
- 有没有了解Android最新的技术?(没事看看Android官网)
- 反问环节
二面总结: 二面主要是围绕项目,然后面试官问的特别特别深。相比之下,一面比较注重广度,考察你对整个安卓体系的知识。二面比较注重深度,考察你对安卓底层源码以及框架源码有没有深入的研究。
hr面 15min
- 自我介绍
- 实习在做什么项目?有没有遇到什么困难,如何解决?
- 除了实习,有没有其他安卓项目,如何分工。和组员有矛盾如何解决?
- 你觉得你应聘这个岗位最大的优势是什么?
- 反问环节
hr面总结:其实hr面大家基本上如实回答就可以了,hr只是想要通过聊天对你有一个基本的了解,不要回答的太偏激太离谱就行。最终刷人也是综合一二三面的成绩排序。
OPPO确实是一家很好的公司,很注重新人的培养,有不懂的也可以找同事 找导师请教。 大家如果想投递OPPO,可以填写我的内推码:80351954
全部评论
(6) 回帖