最近看了很多份简历,很多候选人的工作年限都不小,但是做的都是一些非常传统的项目,想着也不能通过简历就直接否定一个人,何况现在大环境越来 越难,大家找工作也不容易,于是就打算见一见。
在沟通中发现,由于年限不小,他们的定位基本都是高级及以上,毕竟,年限摆在那里,面个中级也不体面。
面试时我打算聊点基础的,先打开一下话题,结果发现他们都对于开发中很基础的原理问题很不清楚,比如说:
- 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渲染优化
- 崩溃优化
- 内存优化
- 卡顿优化
- 存储优化
- 网络优化
- 耗电优化
- 多线程并发优化
- 安装包优化
Android 开源库源码分析
- LeakCanary
- EventBus
Kotlin知识点
- 对象
- 变量
- 类
- 继承
- 常量
- 静态常量
- 定义方法
- 重载
- 数据类型
- 字符串
- 数组
- 循环
设计模式知识点汇总
- 六大原则
- 工厂模式
- 单例模式
- 建造者模式
- 原型模式
- 适配模式
- 观察者模式
- 代理模式
- 责任链模式
- 策略模式
- 备忘录模式
二、那如何学习才能快速入门并精通呢?
当我们真正开始学习的时候难免不知道从哪入手,学习时频繁踩坑,导致效率低下影响继续学习的信心,最终浪费大量时间。
为了方便阅读让学习变得轻松、高效!今天帮大家把上面的架构师所要学习的知识点整理在成PDF文档了,需要高清PDF版的朋友,可在点这、点这(直接获取哦)