导语
看到一篇文章中提到“最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才仍然稀缺“,这的确不假,从我在百度所进行的一些面试来看,找一个适合的高级Android工程师的确不容易,一般需要进行大量的面试才能挑选出一个比较满意的。
为什么中高级Android程序员不多呢?这是一个问题,我不好回答,但是我想写一篇文章来描述下Android的学习路线,期望可以帮助更多的Android程序员提升自己。
由于我也是从一个菜鸟过来的,所以我会结合我的个人经历以及我对Android学习过程的认识来写这篇文章,这会让这篇文章更加真实,而并非纸上谈兵。
开始
我觉得“技术的高低 ”的意义有很多,不仅只是包括手上操作能力,还包括很多隐形的能力,主要从以下的几个角度来衡量:
一、技术的深度
这应该算是首要的吧,现在市场上,能够实际在工作中发挥作用的人,必定是在某个领域掌握了比较熟练的技术的人——这是主观因素,客观来说,Android这门学问很深的,全部精通不大可能,能精通一门就很棒了。有技术热情的人,会忍不住去探究它背后的技术原理,所以单凭考察技术上的深度,就可以考察一个人是否对技术有热情,是否有技术好奇心等这些“优秀程序员的特征”。
二、技术的广度
作为一个Android开发者,深度是必要的,广度算是很重要的加分项。一般来说,工作中偶尔也需要用到其他领域的相关知识,这个时候广度就显得很有优势。从另一方面来看,一个人的知识体系的完整度与广度也有很深的关系,一个高精尖的人才,需要一个比较完整的知识体系,不要求面面精通,但是最好能面面俱到,这样在遇到问题时,就能想出更多更好的解决办法。
三、逻辑思维能力
这一点实在是太重要了,大家应该都明白,做我们这一行的,逻辑思维能力是必不可少的,优秀的逻辑思维能力他的码想必也不会差。
上面是宏观角度,微观知识点的话主要看以下几点:
一、Android经验
这个一般包含很多基础概念和技术原理,比如对Activity、View、Window这些的理解,LaunchMode的使用场景,Touch事件机制,Android动画的原理,Handler, Looper的理解等。
二、Java水平
像泛型,多线程,反射,JVM,注解,序列化原理等比较难的Java基础这些,一个优秀的Android应用开发者自然不能不懂吧,能够讲出自己的一套理解那就更好了。
三、性能优化(直接说要有哪些点吧)
- 从事件
- 从内存
- 卡顿调优
- APP保活
- 内存优化
- 高性能编程优化
- OOM、ANR解析和Crash监控
- 高效文件IO与网络IO
四、NDK开发
- C/C++基础
- 交叉编译
- 增量更新与Gif渲染
- H264视频编码
- OpenGL
- MediaCodec
五、腾讯T3-3架构
- 热修复设计
- 组件化/插件化
- RxJava深入研究
- 图片与网络架构
- Binder通信框架
- 手写Glide图片框架
六、Android Q FrameWork源码与UI新技术
- apk瘦身
- 哈夫曼编码详解
- UI绘制与新技术
- 手写RecycleView源码分析
- Google官方架构组件
- JetPack架构详解
七、Kotlin实战技术
- Kotlin语法
- Kotlin入门到实战
- Kotlin进阶
学习方法
如果真的到了高级工程师这个阶段这个时候已经没有太具体的学习方法了,无非就是看书、看源码和做项目,平时多种总结,尽量将知识融会贯通从而形成一种体系化的感觉。
同时这个阶段对架构是有一定要求的,架构是抽象的,但是设计模式是具体的,所以一定要加强下设计模式的学习。
关于设计模式的学习,最近一本新书推荐给大家《Android 源码设计模式解析与实战》,既可以学习设计模式,又可能体会到Android源码中的设计思想,我最近也在阅读此书。
技术要求:
- 稍微深入的知识点
- 系统核心机制
- 基本知识点的细节
- 设计模式和架构
- 书籍推荐: 《Android开发艺术探索》、《Android 源码设计模式解析与实战》、《Android内核剖析》
总结
每个程序员朋友都有自己的架构师梦,可往往梦想是美好的,现实又是残酷至极的。不努力不奋斗,可能就会在基层一辈子止步不前。也许有很多朋友还会说,程序员也是干的年轻饭,年纪大了也就爬不上了,脑子跟身体都跟不上了。
那既如此,又为何不趁着自己还年轻,好好把握机会,努力一把,美好的未来才有机会和你招手!当然咯,这也仅仅代表我个人的观点,毕竟一百个人有一百个不同的脑子,就会有成千上万种不同的想法。
所有大厂面试题资料都整理成了这份-Android学习PDF+架构视频+面试文档+源码笔记
点赞+评论!转私信我【面试】!即可获取免费下载此Android框架体系架构学习路线的方式!
网友评论