android开发怎么学(优秀的Android开发都是如何学习)

  前言

  人生有好多事情,可以走捷径或者可以找人替代,唯有求知、成长无捷径及无法找人替代。

  作为一个3-5年的Android工程师,我们经常会遇到这些瓶颈:

  1.技术视野窄:长期在小型软件公司,外包公司工作,技术视野被限制的太厉害

  2.薪资提升难:初中级Android岗位薪资上升空间有限,基本上你想拿15k以上,不会点源码层的东西是根本拿不到的

  3.学习资源少:入门之后想要提升很难,靠自己接触的简单业务项目,去反复操练那些cv技术。博客和书本上的技术大多比较抽象并且零散,可以借鉴和指导,但是没办法复制成自己的

  这个时候构建一个属于自己的知识体系,能够让我们学到的知识体系化。让自己清楚哪块是自己的知识盲区,哪块已经构建起根基;然后根据实际情况,有针对性的进行模块学习,让自己成为一个合格的Android工程师。

  什么是“碎片化学习”

  就像人们对于“学习”存在很多认识上的误区一样,对于什么是“碎片化学习”,也没有严谨、共识的定义。

  根据我的观察,一般人会认为,“碎片化学习”是利用零散的“碎片化时间”获取信息,进行“学习”;另外一些人则认为,“碎片化学习”是将大的知识体系拆分为小的、更易于理解和接受的“碎片化知识”(如“微课”),从而使人们学习起来更容易的一种学习模式或教学设计。

  相对于前者,后者常见于少量专业人群以及部分在线学习实践者。

  但是,从个人实践的角度看,碎片化学习既包括利用碎片化时间获取信息,也包括循序渐进地积累“小块儿”的内容,进行知识建构。二者都是个人在信息时代学习的必备技能。

  程序员碎片化学习的困境

  5-15分钟的碎片化学习,似乎是当下人的无奈之举。整块时间对于我们来说是个奢侈品,白天要上班、上学,晚上要加班或忙于各种社交、娱乐活动,睡前还要趴在床上刷刷八卦、看看视频或者勾搭一下男神女神,很快这一天就没有了。

  所以我们的学习时间基本就靠各种5-15分钟的碎片时间。比如等地铁、等上课、等开会的各种等待时间,或者坐车、走路、健身、吃饭、做家务等这些体力劳动但大脑空闲的时间。但是很显然,这些学习场景嘈杂、混乱、不可控,我们很难保持专注。

  而且在短时间内,我们很难快速进入最佳的学习状态。你可以以回忆一下你的中学时代,刚上课的时候你的大脑是很难立即进入上课状态的,所以会教课的老师,都要在课前慢慢引导学生们进入状态。而碎片化学习,就是在大脑还没有准备好的时候,就硬塞给它一堆难以消化的东西。

  这个世界变化太快,未知的东西太多,所以我们程序员慢慢有了对抗落后的焦虑。在碎片化的时间里了解到一个新语言、新框架,可以很大程度上缓解这种焦虑。于是人们就试图将这种碎片化学习,当做繁忙生活中的重要学习方式。

  可是这就像挠痒痒一样,治表不治里,我们的焦虑确实被满足了,但除了知道点新的概念,多了点谈资,生活却似乎依然照旧。所以我们必须要明白,什么叫有效学习。

  普通人与优秀人的区别

  经常和一些技术大咖打交道,我发现这些大神都有自己的知识体系,对于某一领域有着专业的研究;而普通的人只有一些碎片化的知识,无法将自己的知识系统的连接起来,这样说可能有些难理解,这样的知识体系,像我们乐高积木搭起来的建筑物。

android开发怎么学(优秀的Android开发都是如何学习)

  那么,现在有一个问题:用我们下面图片中的木质积木,可以搭建出上面的积木房子吗?

android开发怎么学(优秀的Android开发都是如何学习)

  我猜我们的答案是一样的:不能。这也是为什么传统的木质积木无法风靡的关键原因——很难搭建出有稳固的、有创造性的东西,不耐玩。

  那为什么乐高积木就能够搭建出种类繁多、形式各异的“建筑物”呢?

  请大家看一下乐高积木的积木块:

android开发怎么学(优秀的Android开发都是如何学习)

  发现它们和传统积木块的不同了吗?

  对,它们上面有很多凸起的圆点点!这些圆点点非常关键,它们可以嵌入其他积木块预留的凹槽,把两个积木块连接起来。

  也就是说,乐高积木块上有连接点,所以可以彼此连接,拼搭出各种具有稳定结构的“建筑物”!

  把知识比作积木块,如果知识上生出连接点,就也可以彼此连接,构建出适用于特定领域和特定问题的知识体系。

  构建知识结构体系,破解碎片化学习困境

  优秀的人都是不断学习的人,但是学什么、怎么学呢,学什么是方向的问题,怎么学是学习方法方式的问题,两者都非常重要,如果方向选择不对,就会进入越努力越尴尬的地步;如果学习的方法方式不对,我们可能就会停留在某一高度,止步不前,我们应该聚焦某一领域,深度系统的思考,构建自己的知识体系,因为我相信一句话,你所接受的一切信息,构成了你的思维方式。

  就拿我们移动开发人员来说,从初级程序员进阶到高级程序员,从初级架构师到资深架构师,应该如何构建自己的知识体系,成为移动架构师需要掌握哪些技能?

  2021最新Android高级知识体系

  不少Android开发的小伙伴在工作几年后,会觉得很迷惘,到底自己的开发能力处于什么水平,该如何努力成为对标大厂的高级开发,或者成为架构师。这里结合自身工作经验及参照大厂招聘高级工程师的要求,整理了一份学习路线,路线的内容有中高级,也有难度大的,但是学会后终身受用,拿下大厂高级岗、甚至资深岗,或在小厂当Leader应该不在话下。

  Java高级:

  •   反射
  •   注解
  •   泛型
  •   多线程:线程、线程池、Synchronized、volatile、ReentrantLock
  •   JVM:类加载、内存模型、垃圾回收机制、强弱虚引用
  •   集合容器:Collection、Map

  Android多线程:

  •   Handler:Handler、Looper、Message
  •   ThreadLocal
  •   AsyncTask

  网络:

  •   HTTP、HTTPS
  •   TCP UDP
  •   TCP/IP
  •   SOCKET
  •   网络请求过程:三次握手、四次挥手、证书、断点续传

  视图:

  •   Surface
  •   View:自定义View(measure、layout、draw)
  •   Window:PhoneWindow、DecorView、ViewRoot
  •   事件分发机制:滑动冲突、dispatch
  •   动画:帧动画、View动画、属性动画
  •   ListView工作原理
  •   RecycleView工作原理、与ListView比较
  •   Webview:js通信,加载优化

  图片:

  •   BitMap:加载效率、缓存策略、内存计算
  •   Drawable
  •   加载大图

  四大组件:

  •   Acitivity难点:四大launch模式、启动流程、加载布局流程
  •   Service难点:启动方式、启动流程、应用场景
  •   ContentProvider难点:生命周期、启动流程、原理
  •   Broadcast难点:生命周期、注册方式、启动流程

  性能优化:

  •   启动优化
  •   UI优化
  •   内存优化
  •   卡顿优化
  •   网络优化
  •   数据库优化
  •   包体积优化
  •   ANR

  三方库:

  •   图片加载:Gride、Fresco、Picasso、Android-UIL
  •   网络通信:Retrofit、Okhttp、Volley
  •   异步处理:RxJava、RxAndroid、RxBinding、EventBus

  与时俱进:

  •   跨平台:Flutter、ReactNative、Weex
  •   模块化
  •   Hook技术
  •   插件化:DroidPlugin、VirtualAPK、Small、RePlugin
  •   组件化:ARouter、CC
  •   热更新:Tinker、AndFix、Robust
  •   动态化

  Kotlin:

  •   扩展函数
  •   构造函数
  •   协程

  框架:

  •   Jetpack:ViewModel、LiveData、Lifecycles、Navigation、Room、Paging、WorkManager、DataBinding
  •   MVC
  •   MVP
  •   MVVM
  •   设计模式:六大原则、常见设计模式

  Android系统:

  •   系统启动流程
  •   应用启动流程
  •   进程间通信:IPC机制、Binder原理、AIDL
  •   构建:Grale、APT编译注解处理器
  •   apk打包:打包流程、v1和v2签名、分包multidex、加固
  •   Dalvik与ART
  •   SystemServer:ActivityMagangerService、PackageManagerService、WindowManagerService
  •   Dalvik与ART
  •   JNI:JNI基础、NDK

  音视频:

  •   音视频基础
  •   ffmpeg
  •   WebRTC
  •   OpenGL
  •   Vulkan
  •   OpenCV

  结语

  人生关键的路还是要靠自己走,求知这件事情,没有什么终端捷径可走。只有自己深入思考,不断总结反思,一步一步构建自己的知识体系,才是最快的方法。

  然而Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

  很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我针对Android程序员,我这边给大家整理了一套学习宝典!

  Android学习路线图

  首先,对于没有学习方向,知识不体系的人,我把我工作几年整理的学习路线分享给大家,做一个借鉴作用,还不知道怎么学习的人可以直接照着我这个学习路线一个个的去学习,知识不体系的人可以参考下我整理路线的方式,总之希望能够帮到你们!

android开发怎么学(优秀的Android开发都是如何学习)

如若转载,请注明出处:纯敬科技https://www.purexm.com/article/656.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注