正文
Android行业主要问题是初级Android太多了,会写xml和Activity的程序员太多了,初中级程序员面临很大的竞争,现状也就偏于高级开发者。越来越多的初中级Android程序员找不到满意的工作,甚至根本找不到工作!所以很多人觉得Android要凉了,甚至不惜转行,从头学其它技术。
现在的Android招聘要求,已经不是多年之前的要求了。
中高级工程师不会系统学习Android开发?看看这份Android知识体系总结(BAT面试&高级进阶)
此篇文章是初中高级工程师学习文章,知识体系较为完整。有如下特点:
[1]知识结构全面
[2]跟随当下技术潮流实时更新
[3]可用于面试 & 学习
[4]知识分为文字部分和视频部分,任性选择
[5]正确的职业规划
[6]方便工作过程中遗忘知识点快速查询
这份知识体系大纲包括:
Android部分:
-
四大组件篇
Activity
BroadcastReceiver
ContentProvider
Service -
第五大组件篇
Fragment -
对话框 & 弹框 & 悬浮窗 & 通知篇
Dialog
PopWindow
DialogFragment
Notification -
Android UI控件篇
基础布局
基础控件
高级控件(ListView,RecyclerView,ViewPager,WebView…)
自定义控件(包含很多其它知识)
Android坐标系
Android的角度与弧度
View绘制机制
View事件分发
Android动画机制
Canvas类
Path类
贝塞尔曲线
…
原生控件源码分析 -
Android系统架构篇
系统架构
系统版本特点 & 区别 -
Android通信篇
线程间通信框架Handler
AsyncTask
HandlerThread
IntentService
进程间通信 -
Android网络编程篇
网络请求
Token & Session & Cookie三者联系与区别
数据解析[Json,XML]
… -
Android数据持久化篇
文件存储
key-value存储[SharePreference,MMKV(腾讯)]
数据库存储[SQL语句,SQLite]
序列化 -
Android 原生音视频图片开发[非JNI]
图片开发(Bitmap)
视频开发[GsyPlayer,JiaoZiPlayer…]
音频开发[MediaPlayer] -
Android特殊知识点【不知道如何分类的知识点】
gradle
蓝牙
定位
SDK开发与接入
Drawable
… -
Android必须掌握的轮子
异步通信[EventBus,RxJava]
图片加载[Glide,Picasso,Fresco]
内存优化[LeackCanary,BlockCanary]
依赖注入[ButterKnife,Dagger]
数据库轮子[LitePal,GreenDao…] -
项目架构篇
MVC & MVP & MVVM
组件化
JetPack -
Android高级进阶篇
UI绘制过程
一个app启动过程
Android 动画机制
View事件分发
热更新 & 插件化
Handler源码分析
… -
Android优化篇
内存优化
布局优化
UI卡顿优化
UI适配优化
apk安全优化 -
Android职业方向篇【这是笔者新加入的,对于Andorid开发者而言非常重要,要有自己的职业规划】
资深UI工程师[自定义控件,源码方向]
Android底层开发工程师[C++音视频/图像算法/智能家居]
Android资深架构师[造得一手牛逼的好轮子,熟悉Framework,Java高级知识等等]
全栈工程师(以Android为核心技术) -
Android工作工具篇
Git/SVN(代码版本控制)
调试工作
测试 -
Android工作必备技能篇
玩转Gradle
打包 & 多渠道打包
加固 & 混淆 -
Android跨平台开发篇
WebView & 第三方内核
Flutter -
Android项目学习篇
实战项目学习
Java部分
基础部分
- 操作系统
- 八大基本数据类型&引用类型
- JDK&JRE&JVM篇
- 面向过程&面向对象篇
- 数组
- NIO/BIO/AIO
- Java异常体系篇
- 集合篇
- 多线程篇
- 泛型篇
- Java注解篇
- 反射篇
- Socket
- Java设计模式篇
高级部分
- JVM
- AOP
- APT
- 多线程核心知识点
Kotlin部分:
基础部分
- 基本数据类型
- 数组
- 集合
- 函数
- 类 & 接口
- 扩展方法
- 空类型安全
- 智能类型转换
…
高级部分
- 泛型
- 反射
- 注解
- 协程
数据结构与算法部分
数据结构部分
- 时间复杂度 & 空间复杂度
- 数组
- 链表
- 堆
- 栈
- 队列
- 散列表
- 树
算法部分
- 排序(8大排序)
- 查找
- 递归 & 回溯算法
- 贪心算法
计算机网络部分
- 五层网络模型
- http[请求头,响应体,三次握手,四次挥手等]
- https
- DNS
- Socket & WebSocket
- 浏览器访问一个url的过程
- Android技术应用【Andorid中能运用的网络知识点】
Android面试部分
- Java部分
- Kotlin部分
- Android部分
- 移动UI框架部分(Flutter为主)
- 数据结构与算法部分
- 常用的开源库部分
- 计算机网络认识
总结
现在新技术层出不穷,如果每次出新的技术,我们都深入的研究的话,很容易分散精力。新的技术可能很久之后我们才会在工作中用得上,当学的新技术无法学以致用,很容易被我们遗忘,到最后真的需要使用的时候,又要从头来过(虽然上手会更快)。
我觉得身为技术人,针对新技术应该是持拥抱态度的,入了这一行你就应该知道这是一个活到老学到老的行业,所以面对新技术,不要抵触,拥抱变化就好了。
Flutter 明显是一种全新的技术,而对于这个新技术在发布之初,花一个月的时间学习它,成本确实过高。但是周末花一天时间体验一下它的开发流程,了解一下它的优缺点、能干什么或者不能干什么。这个时间,并不是我们不能接受的。
如果有时间,其实通读一遍 Flutter 的文档,是最全面的一次对 Flutter 的了解过程。但是如果我们只有 8 小时的时间,我希望能关注一些最值得关注的点。
附
(跨平台开发(Flutter)、java基础与原理,自定义view、NDK、架构设计、性能优化、完整商业项目开发等)
lutter 的了解过程。但是如果我们只有 8 小时的时间,我希望能关注一些最值得关注的点。
附
(跨平台开发(Flutter)、java基础与原理,自定义view、NDK、架构设计、性能优化、完整商业项目开发等)
[外链图片转存中…(img-MMNCT2ig-1622456962809)]