当当当当,诸位看官请听我娓娓道来。
呔!谁会需要挖煤工?
啊,老板需要挖煤工!
老板要的,你给不了那又如何?
被淘汰呀被淘汰!
那为何有煤工挖了数十年?
因为什么煤都能挖呀都能挖!
为何什么煤都能挖?
对呀,为何他什么煤都能挖呢?
原来,永葆青春的秘诀就是:基础!
这应该是老生常谈的东西了吧,但好像只是"基础"两个字起不到任何帮助,所以我详细说说。
就以 Android 来说,属于移动端,你看Android,IOS,现在又出来一堆RN(当然,现在已经凉了 :D ),weex, flutter之类的东西。
前端的东西一年三变(这里的前端指包括移动端在内的大前端),你没有自己的判断,很容易就会迷失在一堆杂乱无章的 "设计模式","设计思想" 里,不知道什么是重点,然后被一堆技术忽悠忽悠得云里雾里,不知道要学什么东西。
我打个比方,你在看Android的源码分析,实际上也就可以看到,他里面各种各样的View的工作原理实际上就是在一个叫 Canvas 的东西上用 Rect 之类的控件来画画,(这里我们不考虑动画之类的东西,因为其实动画也可以用 Canvas 做)。
嗯,这就是最精炼的Android绘制原理了。
其实 Flutter 里面也有同样的 Canvas,甚至你写 Web 前端也有一样的 Canvas,同样的名词出现在不同的地方,这是为什么?这个 Canvas 代表什么东西?
如果你基础 OK,就会知道,计算机显示的原理实际上就是在一块内存区输出数据。这个Canvas 你可以看做就是提供给 "高级程序员" 的接口。
如果你学 Android 不妨把它 Canvas 如何工作,常用的第三方库原理是什么,比如有些框架是做自适应的,他是怎么做到的?
造两个轮子,然后你就会知道 Android 里面设计有哪些是比较野鸡的了(抱歉,我居然说出了如此大逆不道的话 >_<)。
顺便想下原生的 Animation 是怎么回事,除了绘制,还有按键,触摸这些事情他是怎么做的,偶尔看看源码(其实源码是最不重要的,当然,这话要等你至少看过一套源码了才能这么说),看看书。然后你可以玩玩 Flutter,对比下 RN,做点东西,然后下一份工作你就不再投 "Android 开发" 岗,而是 "移动端开发负责人",只要操作适宜,应该是可以过的。
当然,学习的时候很多东西都需要良好的计算机基础,而且需要花一些时间,当然其实也花不了多少时间。
小小的总结一下,正确的思路就是:
不要纠结他是 Android 还是 Bdroid,你要关心的是解决了什么问题
绘制,输入,操作(按键触摸),电量,IO,网络,每一个话题下都有无数细节:绘制层级/ 重复绘制,bitmap占用,预加载。
学习么,要学总是有很多东西可以学的。
学习方向
目前我们要做的就是选好自己细分领域深入研究,对基础原理性内容深入理解,尽快向高级水平靠近并达到。当然也要了解新技术,拥有开放的心态去学习一些新技术,不要一开始出来一个新技术就转入学习,这样会导致啥都会一点啥都不会,当然新技术是有一个发展过程的,不会立马流行和大量应用等它稍微成熟点。
这样你会少踩很多坑,也不要排斥它,完全不去理会和了解学习,正确的方式是简单了解这个技术产生是为了解决什么问题,有什么优缺点已经目前发展成熟度和应用范围,我们还是要多抓住技术的本质和基础,这样出现了新技术学起来也会很轻松,当然机会合适了再去学习它。 所以,找准自己的定位及细分领域。
这里我归类了如下几类:
1、应用层开发,不限于各种产品,主要还是Android原生开发,主要是各种性能优化。
2、嵌入式开发,不限于各种开发板子,物联网,智能家居,车联网/车载。
3、安全开发,不限于各种反逆向,反汇编,寻找安全漏洞。
4、音视频开发,不限于直播、点播、音视频通话、音视频会议,短视频等。
5、插件化、组件化、热修复开发,不限于自研和使用开源框架集成开发。
6、系统开发(Android),不限于Rom维护和FrameWork层定制需求。
7、图形图像开发,不限于OpenGL ES,EGL,GLSurfaceView,滤镜,美颜。
8、小程序 / 快应用
小程序是基于微信这个亿级流量入口所衍生出来的产品,而快应用,快应用是九大手机厂商基于硬件平台共同推出的新型应用生态。用户无需下载安装,即点即用,享受原生应用的性能体验,不过个人觉得,他已经凉凉了,小程序倒是挺看好的,腾讯这座大山,微信这座凉亭,你想不凉快都难,不过看你是否刚需,比如你公司有需求,那你可以去学习。
推荐学习的新技术,Flutter和Kotlin,这两个都是Google推荐的。
系统学习很难吗?
自己去制定系统的一个学习计划可能是比较难的,所以文章最后我给大家准备了一份系统的学习思维导图,还有相关的学习资源,这些资料也都是我开发这么多年一点一点的累积整理出来的,今天完全无偿的分享给大家就是想今年寒冬我们程序员能好过一点,希望大家都能工作顺利,事业有成。
首先是超级详细得不能再详细的Android开发学习思维导图,因为图片实在是太大了,所以我就只把二级目录的内容放出来,更加详细的你们可以私信我获取。
接下来就需要梳理知识,提升储备了!(Android移动架构师七大专题学习资源)
-
**架构师筑基必备技能:**深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO
-
**Android高级UI与FrameWork源码:**高级UI晋升+Framework内核解析+Android组件内核+数据持久化
-
**360°全方面性能调优:**设计思想与代码质量优化+程序性能优化+开发效率优化
-
**解读开源框架设计思想:**热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack
-
**NDK模块开发:**NDK基础知识体系+底层图片处理+音视频开发
-
**微信小程序:**小程序介绍+UI开发+API操作+微信对接
-
**Hybrid 开发与Flutter:**Html5项目实战+Flutter进阶
知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。
然后再是通过源码来系统性地学习
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
再阅读前辈的一些技术笔记,帮助提升
刷大厂面试题备战,增加大厂通过率
历时半年,整理了这份市面上最全面的安卓面试题解析大全。
1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数
以上内容均放在了开源项目:【github】 中已收录,里面包含不同方向的自学Android路线、面试题集合/面经、及系列技术文章等,资源持续更新中...
最后:一点心里话
如果你的水平接近达到高级水平,有信心快速达到高级水平,那就按照高级水平的技能点和市场招聘的高级要求对照靠近,一步步达到这个水平。
如果你的水平还是初级入门水平,或者兴趣度不是很高,想早点转换,你可以快速转变,因为在正确方向上努力太重要了,这里也建议不要跨度太大,这里我推荐往大前墩或者产品方向转变,当然前提是你有这方面的兴趣。
当然上面讲的都是技术方向上的发展,当然对一些技术栈水平和技术积累到一定程度后你也可以往技术管理和产品方向发展,当然你也可以选择创业,如果你有足够好的idea和心理准备。
当然大部分人停留在中高级水平,然后一直停滞不前,加上外部各种环境,产生了各种焦虑,所以很矛盾,这时候你最好的状态是快速往高级水平发展,当然这里是比较难的,这个坎也是比较难迈过去的。因为Android知识体系比较庞大和复杂的,涉及到计算机知识领域的方方面面。下次可以专门讲讲怎么快速进阶为Android高级工程师。
名人语录:“生活其实很简单,但我们总是把它复杂化。”——孔子
最后
答应大伙的备战金三银四,大厂面试真题来啦!
这份资料我从春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。 节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。 给文章留个小赞,就可以免费领取啦~
《960全网最全Android开发笔记》
《379页Android开发面试宝典》
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。
如何使用它? 1.可以通过目录索引直接翻看需要的知识点,查漏补缺。 2.五角星数表示面试问到的频率,代表重要推荐指数
《507页Android开发相关源码解析》
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
腾讯、字节跳动、阿里、百度等BAT大厂 2020-2021面试真题解析
资料收集不易,如果大家喜欢这篇文章,或者对你有帮助不妨多多点赞转发关注哦。文章会持续更新的。绝对干货!!!