系统架构部分的总结和展望

快到年底了想想也是比较激动,因为眼看一年就要过去了。最近也是利用闲暇时间一直在补文章,因为明年有新的学习计划,年后可能也不会再分享 Android 方面的知识,在这之前希望能把视频同步的一些文章补上。记得刚开始有人跟我说:你写的这些东西我都会 。。。(具体记不清了,大致的意思就没必要写这些东西,不要误人子弟)

从未想过要去扰乱他人的心志,去动摇自己的决心。我只是想用一种方式记录一下而已,这些内容可能是比较适合中小型企业,1~3 的工作经验。但当很多人一起学习一起探讨的时候,对于技术的提升还是比较快的,至少现在我感觉我的技术没有去年那么菜了。

明年可能会分享一些关于 NDK 和智能识别方面的知识,但目前我们应该先把 Android 应用层方面的基础知识打牢。很多人会认为 NDK 很难,可能是因为 C 和 C++ 不太会的缘故;也有很多哥们有错觉,觉得会 NDK 的人一定是高级程序员,什么是低级什么又是高级?我其实不知道。我知道的就是会 NDK 还蛮简单的,但是要精通就不知道了。

NDK 和智能识别这一块我也不熟,只是把他作为我明年的主要学习方向。我们都喜欢追求上层心法,浮躁的情况下很难静下心来,如果我们是从事 Android 应用层开发,建议还是应该把 Java 基础和 Android 基础先学好,这里罗列一下从事 Android 应用开发需要知道的一些基础知识点,当然仅代表个人的观点,有不同意见你可以评论评论:

1.知识方面

1.1 基本的数据结构和算法: 线性表,栈和队列,数,二叉数,图,比较简单的数据结构,会一些常用 Java 集合的实现原理,像 HashMap 和 ArrayList 这些要会自己手敲,因为相对于 BAT 这些企业我们有时需要理解其细节,比如上次给大家讲解的阿里面试题 HashMap 的容量大小为什么是 2 的幂次?这些都涉及到细节。要会一些基础的算法,像归并,递归,穷举,贪心,回溯,时不时的去刷一些算法题。

1.2 Android 的自定义 View 特效方面: 这一部分相对来说是初学者比较感兴趣的内容,我记得刚自学 Android 那会,花了大概半年多的时间才勉强上手,个人觉得两个地方比较难,第一是事件分发,第二方面是像三角函数,波形,矩阵,微积分等等跟数学相关的一些特效。

1.3 Android FramWorker层源码: 这一部分的知识,严格意义上来讲当我们点击 AS 上面那个绿色运行的按钮后,就该明确的知道后面的内容,比如 AS 是怎么打包的,打包后像 META-INF 、resource.arsc 等等这些文件的作用。知道应用是怎么安装上去的,怎么 Zygote 进程的,应用怎么启动的,Activity是怎么启动的,怎么压栈弹栈的,怎么绘制界面的,资源怎么加载的等等,有一本书可以推荐《Android系统源代码情景分析》,每天啃一啃,啃个大半年。

1.4 设计模式和第三方开源库源码: 设计模式也有一本书可以推荐《Android源码设计模式解析》,我在视频讲解中带大家看的是 pdf 版本,希望大家支持作者购买正版实体书籍。看过之后可能还是一知半解,也可能会忘记,这个就需要去实战,自己去分析主流的一些第三方的开源库,这里再推荐一本书 《JakeWharton 开源库》

1.5 性能优化和重构: 经验不是很多。

这些东西你会吗?会一点皮毛吧,还在不断学习中,严格意义上来讲不会。那请问要学多久呢?我记得我之前在 CSDN 潜伏写文章写了四年多(那时没人看)。如今依旧从未停止过,还没想好什么时候停止,也不知道什么时候才能停止。关键我们是否选择开始,至于终点是何方早已不重要。

如果我们想要走得更远,这一部分知识我们可能是逃不掉的,是个必经的过程。一年半载后我们基本熟悉了整个 Android 应用开发的体系,那个时候我们想学一些其他的东西,或者想往高处发展都会快很多,因为学习能力和心态已经上去了。

2.技术角度

这一年来面试了很多人,经验大都是3年以上,调用接口数据显示界面,想想大部分都玩的很溜了。所以很多人能做的我们都能做,优势又在哪里?打个比方我们都会用热修复,但是如果你知道原理这应该就算优势。很多人说会用就可以了,百度一下就出来了,不必要这么麻烦。其实不是,至少作为面试官来讲,我会问你用过哪些第三方,会问你是否了解原理,如果细节你能答上来,就算达到了我的要求,就可以进入最后的复试。我会根据这些来判断你目前的工作能力和解决问题的能力以及是你的学习能力。面试完之后会给你评个等级,你觉得薪资范围能接受,就可以报道上班,不能接收那就只能期待下次合作。当然,我目前是处在长沙,也不知道其他公司的用人标准,只是站在个人的角度来说。其实,我们也可以问一下自己,如果我是面试官会选择我自己吗?

3.其他方面

记得大四有个老板请我吃饭,很荣幸有大佬请我吃饭,是酒鬼酒长沙的总代理,而我是个写程序的。不知道怎么就搞到一块去了,可能是因为我们都喜欢研读《圣经》。当时他有一句大概是这么说的,一个好的销售员或许每年能够为我创造 100 万的纯利润,但我更喜欢一个能够带团队的人…… 学习知识只是一个部分,团队协作,别人不想做的我去做,别人不能解决的我能解决,不去抱怨,学会积极乐观还是比较重要。

最好我们还能有一个比较突出的方面,比如我们自定义View玩得贼溜,又或者在对音视频特别感兴趣,又或者对 Android 源码特别感兴趣,或对热修复插件化,智能识别或者其他,就可以每天朝一个点只研究这些。很多人跟我说太累了,学了很多都用不上,但当我们开黑的时候就不累吗?活着本来就很累。自从我看到我大学室友快乐并痛着,我不想成为那样。

怎么检验我们到底学得怎么样?我们可以找一些大型企业像 BAT 或者说薪资相对比较高的一些岗位面试题做一做,如果我们能够做出个 7、8 成以上,面试笔试都能答上来,我觉得可能差不太多了,当然具体我也不知道,没去过,没经验。我知道的是我们自己搭的代码,随着版本的不断迭代,需要依然能够保持灵活。在写新项目的时候,对未来的发展要有预判,可以提前挖个坑在那里等着。

周六有一个哥们从京东赶回来请我吃了个饭,第二天大早上又匆匆赶过去,想想也是挺幸福和开心的。在我正在写文章的时候,又在不断的给我发信息给我推荐岗位,也是无以回报。还是之前的那些话,第一怕有钱,第二怕有名。但想想这一年都已经熬过来了,再熬一年吧。

简书最近出了点事,有哥们问我为啥不搬去掘金:不扰乱他人的心志,不动摇自己的决心。即将启程去外面看看,后面文章更新会稍慢。

所有分享大纲:Android进阶之旅 - 系统架构篇

视频讲解地址:2018-01-07 晚八点

猜你喜欢

转载自blog.csdn.net/z240336124/article/details/78865041