开头
从事Android开发工作多年,走过的弯和坎,经历的心酸难与外人道也。
我个人感触最深的就是:选择大于努力。选择正确的方向,你才能够走的更远,更坚定。
以前雷总说过,“在风口猪都能飞起来”。所以现在鸿蒙系统火了,很多开发者就想转去做鸿蒙。
我们一直追逐风口,一直错过。几乎每换一个项目,程序员就要掌握新的技术:《NET单元测试艺术》《妙趣横生的算法(C语言实现)》《Android应用开发揭秘》……
关于Android开发的书籍越看越多,好像学习了很多,但薪资和能力成长却十分有限。同行甚至有3年工作经验年薪已经40万,自己却还不知道什么时候偷偷被拉开了差距。
其实我们很多人在开发过程中只是浮在表面,写出去的简历也不堪入目。比如我们开发中,大家应该知道也懂得性能优化的重要性,可工作中由于对整个知识掌握不够,所以会在性能优化上没有自己的理解。
我们接着来聊聊如何进阶学习
首先要说的是,技术的学习是个日积月累,由量变到质变的过程,没有任何的办法能够让你在短时间内成为大牛,所谓的一步登天,是留给那些传说中的天才的,但天才毕竟只是极少的一部分人。
大部分大牛还是靠着持之以恒的毅力,冠以正确的学习方法,通过不断努力,不断学习,花费了大量的精力才达到了他们现在的成就。
所以,当你通读完官方文档的时候,你实际上只是迈出了一小步,要成为真正的大牛,还需要在之后的学习中不断努力。
那我们如何来进行下一步的学习呢?
那就得说到项目实战了
我们学习一门技术的最终目的就是将其运用到实际项目中,一门技术不管多厉害,如果没有办法运用到实际项目中,那它的意义跟价值就非常有限了。
而且人脑不比计算机,是会遗忘的,如果不通过大量的项目实战,很多知识点你很快便会忘记,至少我是这样的(谁能告诉我,记忆力不好怎么才能被拯救!!)。
所以读完官方文档后,我们是一定要通过大量的项目实战来不断巩固我们的知识点的,此时的你很多知识点其实是不能完全理解的,只有通过项目的历练,在踩坑中分析,在解决问题中成长,才能从本质上理解一些技术的概念。
有经验的开发人员应该多多少少有这样的经历,就是有些概念一开始并不是很理解,但是在一次次的项目过程中,你会发现竟然不知不觉地明白了其中的原理,是的,就是这种感觉!
对于项目实战,我其实没有太多的技巧,还是一句话,就是干,但是这个过程中你一定要去多思考,为什么这么写,为什么这么做,学着去了解原理,去关注本质。
再来聊聊读技术文章
在这样一个信息大爆炸的时代,要从网上找到某一门技术的干货文章是非常容易的一件事,各类的技术平台(csdn,cnblogs,oschina,安卓巴士,segmentfault等等等),各类的微信平台公众号,都是很好的获取干货信息的途径。
虽说官方文档很神奇,但是还是有很多知识点我们可能还没发现,因为他们往往隐藏在更深的API文档之中,而大量的API也导致我们很难将所有的API文档都通读,更多的还是将其作为一个查阅工具来使用。
在我的观念里,不主动去关注各种技术平台获取技术信息的程序员不是一名合格的程序员,
所以每天早晨我都会花至少一个小时在关注的各类技术平台上获取有用的信息
- 一方面查找相关技术的干货文章,通过对这些文章的阅读对自己的知识点进行巩固和查漏补缺,毕竟技术的学习不仅仅是文档上那些最原始的技术点,还包含各种架构的设计、工具的使用、功能的实现及解决方案的应用等,通过这些平台上的各种文章,可以让自己的知识体系更加地完善。
- 另一方面,作为一名开发人员,我们需要通过这些平台了解最新的技术动态,关注技术的发展趋势,毕竟现在技术的更新速度非常之快,技术生态圈的转换随时会导致某项技术的淘汰(作为一个俗人,我是来赚钱的,所以根据技术趋势做好技术储备对我来说是必不可少的)
话说回来,程序员真是一群爱分享的小伙伴,所以现在的技术文章真的是太多太多了,多到眼花缭乱。
我们不得不根据自己的情况来进行适当的筛选和阅读,来提高学习效率。
就我来说,我根据自己的理解将技术类文章分为了四类:
- 知识点讲解类:一般针对某个技术的特定知识点进行介绍。
- 功能实现\解决方案类:针对性比较强,一般都是某个特定功能或是特定场景下的功能实现或是方案应用包括Bug的解决方案等,文章一般会带有一定的思路分析,以及具体代码实现。
- 源码\框架原理分析类:针对各个技术点或是框架进行源码拆解、分析和讲解。
- 学习方法/经验总结类:主要是介绍一些学习方法,以及对项目开发中遇到的问题进行总结分析。
对于知识讲解类的文章,如果你已经学会了阅读官方文档,那很容易就能够判断它是否只是文档的搬运工,如果是文档的搬运工,我会快速略过,重点关注作者是否加入了自己的分析和观点。如果是作者原创的,那我会仔细阅读一遍,看看自己对于某个知识点的理解是否有偏差,是否有遗漏。
功能实现\解决方案这类的文章,场景众多,我重点关注的是它的实现和分析思路,以便在类似的场景中进行举一反三,对于一些常用功能或方案,我会仔细阅读和研究他们的代码,剩下的则主要进行标记和收藏,在大脑中留个印象,建立个索引,在需要的时候再去进行查阅,像我这样的渣记忆,不常用场景的实现一段时间后就只记得标题了。
源码\框架原理分析类的文章我会反复阅读,同时结合源码做验证,并且定期做一下复习或是总结,在大脑里不断加深印象,因为对于原理的理解能够帮助我在遇到项目难题时更快更好地找出最佳的解决方案。
学习方法/经验总结类的文章,数量上相比其他类型的文章并不会太多,一般我会很仔细的阅读,正所谓前人栽树后人乘凉,学习他们的经验可以让我们少走不少弯路,当然这类文章主观意识会比较强,需要我们自己来进行辨别哪些是真的有用。
有人可能要问了,每天花一小时阅读技术文章,文章读得会很凌乱吧。。。
确实是这样的问题,我们大脑的容量毕竟有限的,就像我们的LRUCache缓存策略,最常用信息的总是会保留在大脑中,但是时间太久了不关注的内容很快就会丢弃遗忘(传说世界上有那么一群“超忆症”患者,没有遗忘的能力。能把自己亲身经历的事情,记得一清二楚,能具体到任何一个细节,好羡慕有木有!)。
对于遗忘的问题,我们能做的就是做好收藏工作,但是技术平台太多,将文章收藏在各个平台中当需要查找的时候会发现记不清收藏在哪个平台了,这时一个平台一个平台的搜寻效率肯定是低下的。
所以我们可以使用云笔记或者github,将那些你觉得优秀的需要收藏的文章整理到一个地点去,按照自己对文章的分类,建立不同的链接索引,给每个索引的标题起个你认为重要的关键词,在每次添加新的文章的时候可都回顾下收藏的索引,这样在你想要查找某篇文章时便能用最快的方式查找到。
我会读文档了,又阅读了这么多技术博客,是不是就不用其他方式再学习了?
答案肯定是不可以!!!
虽然博客的干货文章非常的多,但是大部分情况下知识体系都是相对比较零散的,相比书籍,它没有那么系统化,相比视频教程,它又没有那么的直观,所以抛开文档跟博客的学习,我们还需要根据自己的情况额外地进行书籍或是视频教程的学习。
有人觉得自己总是静不下心来看书,我的方法是,阅读某本书的时候给自己定一个小目标,比如每天阅读该书至少20页内容,这样每天学习的内容不会太多,不容易让人变得焦躁,当然,你可以根据自己的情况制定每天的阅读量,如果按照20页每天的阅读量来算,一本500页的书,不到一个月就读完了。
有人觉得看视频教程时间太久,实际上也确实如此,有的博客十多分钟能够读完的内容,放到视频中去讲常常需要1个小时,但是视频教程的优势就是你可以看到实时的操作跟讲解画面,一些概念更直观,更容易让人理解。
当然如果你播放的是本地视频,可以使用诸如potPlayer这样的支持加速播放视频,同时视频声音又不会改变的播放器来加速视频的观看。
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上我搜集整理的2019-2021BATJ 面试真题解析,我把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节。
节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
一键领取:【Android超硬核面试资料】
《960全网最全Android开发笔记》
《379页Android开发面试宝典》
历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。
如何使用它?
1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数
《507页Android开发相关源码解析》
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
腾讯、字节跳动、阿里、百度等BAT大厂 2019-2021面试真题解析
存中…(img-125CkBED-1618473624130)]
腾讯、字节跳动、阿里、百度等BAT大厂 2019-2021面试真题解析
[外链图片转存中…(img-MTkbL3tJ-1618473624133)]
资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图,大家可以点击这里自行获取。