Android 开发面试准备指南
简历的准备
简历重点是突出自我介绍、擅长技能、项目经验。
- 自我介绍:要做到一句话就能表述清楚自己的优势,例如学习能力(短时间熟练掌握技能)、个人履历(BAT 背景优势)、积极努力(个人推动什么项目等)。
- 擅长技能:专业技能的描述词无非就那么几种:精通、熟练、熟悉、了解。精通感觉一般还是不要写,除非你在某个技术点上真的有足够的把握,真正能做到精通一门语言、一个分布式框架这才是精通。熟悉、熟练居多,精通是典型的金字塔顶部。总之,简历不要过于突出精通项数,而是突出精通的领域。
- 项目经验:突出自己的王牌项目,最有技术含量、挑战和帮助最大的一个项目讲就足够了。面试的过程中面试官也会重点让你描述这个擅长的项目,提前模拟这个项目的讲解顺序和重点,而不是临场讲解。
复习技巧
学习没有捷径可言。信奉好记性不如烂笔头,也信奉书读百遍其义自见。
- 一定要去实践:对于程序员而言,不单单是死记硬背,我们有更好的方式去学习,比如写 demo 去验证,比如学习源码的过程中,一定要自己去翻看源码,多翻几遍看熟了再说。
- 边学边做笔记总结:学习笔记很重要,不仅要记笔记,还要写心得体会,文字笔记、画图、总结等,方式很多,但是一定要自己认真去做,不要太相信自己的记忆,只有反复记忆,加深理解才行。
- What、How、Why:学习知识点的过程中,可以遵循 What、How、Why 这个三板斧。即这个东西是什么?它是怎么做的?它为什么这么做,原理是什么,有没有更好的方式?
- 由浅到深,由点及面:在复习的过程中,都是从一个个小的知识点开始学的,复习到一定阶段,可以尝试着去把这些东西串联起来,由点及面。
- 复盘项目:在复习的过程中,一定要及时跟你做过的项目结合起来,这样也可以反哺你的项目,你在面试时就知道怎么聊了,就会有项目讲到知识点,由一个知识点串联到另一个知识点,这样你的知识体系就建立起来了。
面试前的心态调整
心态的调整决定了事半功倍或是事倍功半。笔试的状态,实力的发挥,可以影响一个面试过程的方方面面。心态崩了,就只剩运气了,offer 估计也就走远了。
那怎么调整自己的心态呢?
- 首先是要正视自己的能力:不轻视,不高估。不高估就是要清楚自己的能力范围,不是说期望过高不好,但过高的期望会让你的心理变得脆弱,稍有不顺心态就有崩掉的趋势。因为面试毕竟有太大的偶然性,就算你达到了一定的水平,相应水平的岗位也不是百发百中的。
- 不要总给自己消极的暗示:心态差了,积极调整。大多数的人,总暗示自己说什么时间不多了,怎么每天过这么快效率怎么这么低。到笔试了,跟自己说这个算法太难了,肯定做不出来。临到面试了,跟自己说千万别问我 linux 内核,别问我分布式,问我肯定完;面试过之后,没有结果,就天天想肯定又挂了,唉,我怎么这么菜。
- 如果这一系列的表现形成习惯:那心态这个系数最多 0.5,能发挥出来的东西也都打了一半的折扣。凡事都不要太悲观,就算一个 offer 没拿到,正常情况是这个失败的经历产生的经验和总结是会让下一次的成功率提高的,千万不要在哪里跌倒就在哪里躺下了,站起来把绊脚石挪开就好了!
- 心态差的时候反而要停下你重复而没有效率的工作:可以静下心来去复盘调整一下。对于身边的朋友,多交流,不比较。能有一些一起准备的好伙伴是件非常好的事情,不仅可以互相督促,而且可以在交流和分享的过程中取长补短。
对自己的水平有个很清楚的认识,并选择自己合适的公司,好好准备自己的笔试、面试,不怕失败,但保证每次面试都有收获和提高,那满意的 offer 早晚会来。
各大厂常见真题分享
以下整理了部分大厂常见的 Android 面试题目,涵盖基础、原理、架构及算法等方面。
阿里巴巴
- LRUCache 原理
- 图片加载原理
- 模块化实现(好处,原因)
- JVM
- 视频加密传输
- 统计启动时长,标准
- 如何保持应用的稳定性
- ThreadLocal 原理
- 谈谈 classloader
- 动态布局
- 热修复,插件化
- HashMap 源码,SpareArray 原理
- 性能优化,怎么保证应用启动不卡顿


