今天早上参加了深圳OPPO开发工程师的技术面试,总的来说面试过程不是很顺利。面试官并没有问一些很深奥的底层原理,基本都是一些Java基础以及Android四大组件内的基础,但是我自身在开发过程中并没有很重视这些理论基础,导致很多知识点都忘记了。整个面试过程耗时一小时,感谢两位面试官不厌其烦地给我提示,一方面让我能够回想起来那些遗忘的知识点,另一方面也缓解了尴尬的气氛。。。
顺便一说,OPPO的保密工作还是做得比较严格的,进去后海卓越中心大楼前需要申请临时通行证才能进去。而在面试前还需要登记,并且把手机的前后摄像头都给用胶带封起来才能进行面试。废话少说,下面分成两部分汇总一下这次技术面试的知识点。
Java
- 如何理解Java的多态?其中,重载和重写有什么区别?
- 谈一下JVM虚拟机内存分配?哪部分是线程公有的,哪部分是私有的?
- final关键字的用法?
- 死锁是怎么导致的?
- 数据库如何进行升级?SQLite增删改查的基础sql语句
Android
- Broadcast的分类?有序,无序?粘性,非粘性?本地广播?
- Touch事件是如何传递的?
- Handler的原理?
- ANR出现的情况有几种?怎么分析解决ANR问题?
- 内存泄露的场景有哪些?内存泄漏分析工具使用方法?
- 如何实现启动优化,有什么工具可以使用?
- 常用的设计模式有哪些?是否了解责任链模式?
总结
现在回顾一下,问的问题并不难,只是环环相扣问出了很多细节相关的知识点。由此看来,在日常开发中还需要注重基础。尤其对于开发经验是1-5年内的Android Developer,面试官考察的多数是基础知识是否牢固,沟通表达能力,总结能力。虽然此次面试黄了,但不失为一次很好的经历。
对于问题的答案,后面会抽时间整理总结,敬请期待。
2018-10-22更新:
关于问题的答案,已整理到个人的简书。如有需要可移步查阅。