整日碎片化学习“凡不凡”?来看看优秀的Android开发都是如何学习的,破解碎片化学习的骗局!
前言
人生有好多事情,可以走捷径或者可以找人替代,唯有求知、成长无捷径及无法找人替代。
作为一个3-5年的Android工程师,我们经常会遇到这些瓶颈:
1.技术视野窄:长期在小型软件公司,外包公司工作,技术视野被限制的太厉害
2.薪资提升难:初中级Android岗位薪资上升空间有限,基本上你想拿15k以上,不会点源码层的东西是根本拿不到的
3.学习资源少:入门之后想要提升很难,靠自己接触的简单业务项目,去反复操练那些cv技术。博客和书本上的技术大多比较抽象并且零散,可以借鉴和指导,但是没办法复制成自己的
这个时候构建一个属于自己的知识体系,能够让我们学到的知识体系化。让自己清楚哪块是自己的知识盲区,哪块已经构建起根基;然后根据实际情况,有针对性的进行模块学习,让自己成为一个合格的Android工程师。
什么是“碎片化学习”
就像人们对于“学习”存在很多认识上的误区一样,对于什么是“碎片化学习”,也没有严谨、共识的定义。
根据我的观察,一般人会认为,“碎片化学习”是利用零散的“碎片化时间”获取信息,进行“学习”;另外一些人则认为,“碎片化学习”是将大的知识体系拆分为小的、更易于理解和接受的“碎片化知识”(如“微课”),从而使人们学习起来更容易的一种学习模式或教学设计。
相对于前者,后者常见于少量专业人群以及部分在线学习实践者。
但是,从个人实践的角度看,碎片化学习既包括利用碎片化时间获取信息,也包括循序渐进地积累“小块儿”的内容,进行知识建构。二者都是个人在信息时代学习的必备技能。
程序员碎片化学习的困境
5-15分钟的碎片化学习,似乎是当下人的无奈之举。整块时间对于我们来说是个奢侈品,白天要上班、上学,晚上要加班或忙于各种社交、娱乐活动,睡前还要趴在床上刷刷八卦、看看视频或者勾搭一下男神女神,很快这一天就没有了。
所以我们的学习时间基本就靠各种5-15分钟的碎片时间。比如等地铁、等上课、等开会的各种等待时间,或者坐车、走路、健身、吃饭、做家务等这些体力劳动但大脑空闲的时间。但是很显然,这些学习场景嘈杂、混乱、不可控,我们很难保持专注。
而且在短时间内,我们很难快速进入最佳的学习状态。你可以以回忆一下你的中学时代,刚上课的时候你的大脑是很难立即进入上课状态的,所以会教课的老师,都要在课前慢慢引导学生们进入状态。而碎片化学习,就是在大脑还没有准备好的时候,就硬塞给它一堆难以消化的东西。
这个世界变化太快,未知的东西太多,所以我们程序员慢慢有了对抗落后的焦虑。在碎片化的时间里了解到一个新语言、新框架,可以很大程度上缓解这种焦虑。于是人们就试图将这种碎片化学习,当做繁忙生活中的重要学习方式。
可是这就像挠痒痒一样,治表不治里,我们的焦虑确实被满足了,但除了知道点新的概念,多了点谈资,生活却似乎依然照旧。所以我们必须要明白,什么叫有效学习。
普通人与优秀人的区别
经常和一些技术大咖打交道,我发现这些大神都有自己的知识体系,对于某一领域有着专业的研究;而普通的人只有一些碎片化的知识,无法将自己的知识系统的连接起来,这样说可能有些难理解,这样的知识体系,像我们乐高积木搭起来的建筑物。
那么,现在有一个问题:用我们下面图片中的木质积木,可以搭建出上面的积木房子吗?
我猜我们的答案是一样的:不能。这也是为什么传统的木质积木无法风靡的关键原因——很难搭建出有稳固的、有创造性的东西,不耐玩。
那为什么乐高积木就能够搭建出种类繁多、形式各异的“建筑物”呢?
请大家看一下乐高积木的积木块:
发现它们和传统积木块的不同了吗?
对,它们上面有很多凸起的圆点点!这些圆点点非常关键,它们可以嵌入其他积木块预留的凹槽,把两个积木块连接起来。
也就是说,乐高积木块上有连接点,所以可以彼此连接,拼搭出各种具有稳定结构的“建筑物”!
把知识比作积木块,如果知识上生出连接点,就也可以彼此连接,构建出适用于特定领域和特定问题的知识体系。
构建知识结构体系,破解碎片化学习困境
优秀的人都是不断学习的人,但是学什么、怎么学呢,学什么是方向的问题,怎么学是学习方法方式的问题,两者都非常重要,如果方向选择不对,就会进入越努力越尴尬的地步;如果学习的方法方式不对,我们可能就会停留在某一高度,止步不前,我们应该聚焦某一领域,深度系统的思考,构建自己的知识体系,因为我相信一句话,你所接受的一切信息,构成了你的思维方式。
就拿我们移动开发人员来说,从初级程序员进阶到高级程序员,从初级架构师到资深架构师,应该如何构建自己的知识体系,成为移动架构师需要掌握哪些技能?
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汇总复习资料—Java》
《Android汇总复习资料—Android》
《Android汇总复习资料—Android扩展》
《Android汇总复习资料—Kotlin》
《Android汇总复习资料—Flutter》
《Android汇总复习资料—算法》
除了上面的学习路线,还可以额外的配合以下方式学习,效果翻倍~
①看视频进行系统学习
前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。
另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。
②读源码,看实战笔记,学习大神思路
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。
③面试前夕,刷题冲刺
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:
④2020大厂面试高频知识点
- 图片
- 网络和安全机制
- 数据库
- 插件化、模块化、组件化、热修复、增量更新、Gradle
- 架构设计和设计模式
- 性能优化
- Android Framework
- Android优秀三方库源码
以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。
整日碎片化学习“凡不凡”?来看看优秀的Android开发都是如何学习的,破解碎片化学习的骗局!相关推荐
- Android开发学习---使用Intelij idea 13.1 进行android 开发
Android开发学习---使用Intelij idea 13.1 进行android 开发 原文:Android开发学习---使用Intelij idea 13.1 进行android 开发 1.为 ...
- 整日碎片化学习“凡不凡”,android编程基础班
我猜我们的答案是一样的:不能.这也是为什么传统的木质积木无法风靡的关键原因--很难搭建出有稳固的.有创造性的东西,不耐玩. 那为什么乐高积木就能够搭建出种类繁多.形式各异的"建筑物" ...
- Android学习总结(1)——好的 Android 开发习惯
Android编码规范 java代码中不出现中文,最多注释中可以出现中文: 局部变量命名.静态成员变量命名:只能包含字母,单词首字母出第一个都为大写,其他字母都为小写: 常量命名:只能包含字母和 ,字 ...
- Android开发笔记(一百一十六)网络学习资源
知名网站 本系列的开发笔记,对Android开发来说只是沧海一瓢,还有更多的技术等待我们去汲取.下面列出几个常用的开发网站,供初学者上路: 首先当然是国内首屈一指的技术网站csdn啦,csdn提供了众 ...
- Android开发学习总结(一)——搭建最新版本的Android开发环境
最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是一直没有搭建开发环 境去学习,Android的更新速度比较快了,Android1 ...
- 年轻人,看你骨骼惊奇,我这有一份来自阿里的Android开发学习指南,不仅能让你月入5w,度过中年危机都不是问题!
摘要 很简单,我这有一份来自阿里程序员佛系月薪5w指南,看你骨骼惊奇,印堂光亮,一看就是将要大富大贵.走向人生巅峰之人,就不收你钱了,一个点赞就送给你怎么样? 缘起 为什么写下这篇文章? 疫情自爆发以 ...
- Android 开发学习笔记
Android 开发学习笔记 Lesson1 (2.28) android之父: Andy Rubin(安迪 鲁宾) Lesson2 (3.3) android 的优点: 开放.网络接入自由.丰富的硬 ...
- 《Android和PHP开发最佳实践》一1.3 如何学习Android和PHP
1.3 如何学习Android和PHP 前面我们已经讨论过"为何学"的问题,大家应该对Android加PHP这套应用开发解决方案有了大致的了解.接下来介绍"如何学&quo ...
- 学习Android开发只要这些东西,Android篇
前阵子,我和阿里的薪酬福利专家M同学聊了一下午,M同学做了9年薪酬,和我们吐槽了很多薪酬方面的现象,也道出了少有人关注的薪酬逻辑和常识. 这一次,我又找了一位阿里技术岗位的招聘专家T同学,从他的视角中 ...
最新文章
- 阿里巴巴达摩院ICLR 2020论文:从群体动态中认知个体
- 一份关于kaggle特征构建技巧和心得
- C#多维数组与嵌套数组
- CM: UPDATE_PAYLOAD_FROM_ADDINSCH
- C#刷剑指Offer | 二叉搜索树的后序遍历序列
- java dvr_java实现海康NVR/DVR设备工作状态获取
- TCP TIME_WAIT详解
- 转:如何在Ubuntu系统下安装使用LaTeX
- 【雅思大作文考官范文】——第十五篇:'high salaries' essay
- mysql grant priv_mysql怎么将grant priv的权限
- 面试官:为啥要axios 的二次封装呢 及其使用是干啥的
- 李克用置酒三垂冈赋——刘翰(清)
- 基于Javaweb的小项目(类似于qqzone)1——设计数据库
- 关于虚拟机及dockers
- 最近比较火的古风姓氏头像小程序源码
- 计算机专业考研还是不考研?这才是本质区别!
- 项目沟通管理——考点(个人笔记)
- Unity新建项目报错
- 婚礼常用背景音乐[推荐100首
- 给大家推荐一个在线编辑公式的网站
热门文章
- 解决单反出片发灰难题 教你让照片变得通透
- 太赛博朋克了!华为天才少年自制B站百大Up奖杯,网友:技术难度不高,但侮辱性极强...
- 惠普348g3拆机教程_惠普348 G4:换我吧!让你的工作效率提升39%
- Java面向对象笔记:【第一章 面向对象】
- clickhouse 同步mysql_ClickHouse单机部署以及从MySQL增量同步数据
- 文章---article
- DIY 攒机MINI ITX小机箱选购指南
- 四小时学习opencv+qt系列(第二天)
- Java学习篇六——循环结构之while语句
- seaJs学习笔记2 – seaJs组建库的使用