最近面试了一位五年的 Android 开发,一问三不知!还反怼我...

最近看了很多份简历,很多候选人的工作年限都不小,但是做的都是一些非常传统的项目,想着也不能通过简历就直接否定一个人,何况现在大环境越来 越难,大家找工作也不容易,于是就打算见一见。

在沟通中发现,由于年限不小,他们的定位基本都是高级及以上,毕竟,年限摆在那里,面个中级也不体面。

面试时我打算聊点基础的,先打开一下话题,结果发现他们都对于开发中很基础的原理问题很不清楚,比如说:

  • 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知识点

  • 对象
  • 变量
  • 继承
  • 常量
  • 静态常量
  • 定义方法
  • 重载
  • 数据类型
  • 字符串
  • 数组
  • 循环

设计模式知识点汇总

  • 六大原则
  • 工厂模式
  • 单例模式
  • 建造者模式
  • 原型模式
  • 适配模式
  • 观察者模式
  • 代理模式
  • 责任链模式
  • 策略模式
  • 备忘录模式

二、那如何学习才能快速入门并精通呢?

当我们真正开始学习的时候难免不知道从哪入手,学习时频繁踩坑,导致效率低下影响继续学习的信心,最终浪费大量时间。

为了让学习变得轻松、高效!今天帮大家把上面的架构师所要学习的知识点整理在了Github,有需要阅览全部核心知识点的朋友可以去我的Github中查阅;希望能帮助你们在学习和进阶中,点亮一盏照亮迷雾的登;

需要高清PDF版的朋友,可在点这、点这(直接获取哦)

推荐阅读更多精彩内容