面试时我打算聊点基础的,先打开一下话题,结果发现他们都对于开发中很基础的原理问题很不清楚,比如说:
-
Activity 的启动流程?
-
Handler通信原理?
-
进程的优先级?
上面几个问题没有一个是**“造火箭”**的吧,结果发现,这些很基本的问题,他们普遍都答得很模糊,或者支支吾吾。其中,一个候选人的反问,令我印象特别深刻,他说:
上面的问题我虽然都不懂,但是我都工作五年了,如果我不能胜任工作,那你告诉我,我这5年经验是怎么来的?
再说了,做 Android 开发,说到底,还不是对着产品项目输出原型,然后CRUD吗?
遇到问题网上搜索一下,再不行就群里问一下,而且我又不找什么百万日活APP的Android开发,面试题不都是这样吗,还能有什么别的花样?
听完我沉思了很久,想着做为一个高级开发,如果连Activity的启动流程都说不清楚、Handler机制的原理都不理解,只会对着产品原型CRUD,测试不提bug,代码都不想复盘多看一眼的话,试问谁又愿意和这样的“Android高级大佬”一起干活?
其实我想了一下,他之所以有这样的想法,很大程度取决于他的经历,长年在传统行业,或者“小作坊”,平时就两三个 Android 开发,大家都是“难兄难弟”的水平。让他认为,Android 开发,就是对着产品原型CRUD,年限上去了,就是高级开发。
思维一旦形成,就很难改变。但是,互联网是个瞬息万变的行业。
从BAT等各种大厂的应届生招聘薪水就可以看得出,现在应届生的水平越来越6,如果还以为大家都是一样的,都是对着原型CRUD,有问题就把报错信息网上一搜,群里一丢等回复这种方式,迟早给淘汰。即使不做framework开发,基本的原理、源码还是要了解的!
不制造任何焦虑,学习需要的也不是一腔热血,需要的是长期的规划,这里分享一个 Android 架构师成长学习路线,大家可以自行进行查漏补缺和规划:
下面我详细介绍成为架构师必须要学习的知识点:
一、Android 架构师内功心法
Java
-
Java序列化
-
Java泛型
-
Java反射
-
Java并发原理
-
线程与多线程
-
线程通信
-
线程池
-
JVM底层源码
-
GC垃圾回收器
-
类加载器
-
内部类
-
接口
-
Hashmap底层框架
-
Hashmap底层源码
-
Arraylist源码分析
Android基础
-
Activity:启动流程、启动模式、启动周期
-
Fragment:生命周期、通信
-
Service:启动模式、生命周期
-
View:事件滑动、事件分发、自定义View
-
进程:生命周期、多进程、进程存活、进程保活方案
-
Bitmap:配置、常用操作、BitmapFactory
-
适配:屏幕适配(今日头条)方案、屏幕适配(刘海屏)方案
-
消息机制:Handler、工作原理、Looper、AsyncTask、线程池、RecyclerView优化方案
-
内存泄漏
Android进阶知识
-
ART:预(AOT)编译
-
Apk包体优化:流程、整体、代码优化
-
Hook:流程
-
架构:MVC、MVP、MVVM
-
Jetpack:Data Binding组件、ViewModel & LiveData组件、流程
-
NDK:JIN基础、NDK开发的基本流程
-
类加载器
性能优化
-
启动优化
-
UI渲染优化
-
崩溃优化
最后
愿你有一天,真爱自己,善待自己。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!