我们来剖析一下这个 Android 猴子的面试过程,以及被问到的问题
====
小欧在上家公司做过组件化和 MVP,写过 Gradle Plugin,做过 Gradle 编译优化,做过包体积优化
简历评价 & 问题导向
===========
从专业技能来看,对于毕业一年的 Android 开发者来说,Java、Android、计算机基础知识是必备技能,性能优化、Gradle 算加分项了
从项目经验来看,小欧毕业一年做了不少事情,算是比较难得了,其中的 Gradle 编译优化、包体积优化就是亮点了
所以总体上来看,这份简历可以体现出小欧比较出色的能力(学习能力和做事能力),所以面试问题路线大概是两点:
先确认项目是否真实做过,做的多深,对项目中用到的知识、工具掌握有多深
考察专业技能的深度和广度
面试题目及考察点
========
下面是面试的题目和考察点,对于一些比较敏感的问题,没有展示出来(以下观点仅代表个人,不代表任何组织和公司)
组件化如何实现?和 Arouter 的区别?优势?(考察项目中对组件化的参与程度,以及对组件化的一些思考)
此类问题其实和项目关联度很大,需要对所做的项目有详细的了解,同时也需要对已有方案的了解
组件间如何通信?(考察对组件化的了解程度)
MVC、MVP、MVVM 区别?MVP 的缺点?(考察对 MVP 以及相近的架构的理解)
对于 MVC、MVP、MVVM 的分析其实有很多文章,如果在回答的时候有一些自己不一样的思考就更好了
包体积如何优化?(考察项目具体的实现)
关于包体积优化,网上其实有很多通用方案,如果自己真的做过,有一些自己不一样的思考就更好了
Png 和 webp 的区别?(考察细节点)
知识类问题,知道即可
Arsc 是怎么用的?(考察细节点)
知识类问题,知道即可
Gradle 构建优化做了什么事情?(考察 Gradle 构建优化做的事情)
网上有关的文章其实也很多,如果能答上来,会往更深层次问下去,需要有一些准备
Gradle 6.5.1 相比 4.4.1 的变化?(考察细节)
Gradle 的生命周期?分为哪些阶段?(考察对 Gradle 的掌握程度)
网上有关的文章其实也很多,如果能答上来,会往更深层次问下去,需要有一些准备
Android 打包流程?(考察基础知识)
网上有关的文章其实也很多,如果能答上来,会往更深层次问下去,需要有一些准备,下面的几个问题都属于打包流程引申出来的深入问题了
Aapt2 和 Aapt 和 有什么区别 (考察细节点)
Class 和 Dex 文件的区别?(考察细节点)
V1 V2 签名?(考察细节点)
为什么要分 Dex?(考察细节点)
多 dex 怎么加载?(考察细节点)
View 的绘制流程?(基础知识考察)
关于 View 的绘制流程,网上讲解的文章也比较多,如何区分是看文章还是看
源码了解的知识呢?本质上还是根据对细节的了解程度来区分的
如何重绘?requestLayout 和 invalidate 的区别?(基础知识考察)
View 事件分发 cancel 事件什么时候触发?(基础知识考察)
事件如何从点击屏幕传递到 View 的?(基础知识考察)
Java 内部类如何访问外部类方法?(基础知识考察)
如何访问 private 方法(基础知识考察)
如何检测线上 ANR?(知识广度考察)
如何检测 crash?(知识广度考察)
总结
==
但是整体问下来,可以看出来小欧的知识还是比较扎实的,深度和广度都有的,项目中的内容了解也比较好,作为刚毕业一年的同学来说还是很优秀的
上面的问题其实更多的局限在知识掌握的层面,对工作经验更多的面试者来说,考察点可能又会不一样了,可能重点就在项目和对项目的思考上了
评论