前言
说不焦虑其实是假的,因为无论是现在还是最近几年,很早就有人察觉Android开发的野蛮生长时代已经过去。过去的优势是市场需要,这个技术少有人有,所以在抢占市场的时候,基本上满足需要就已经可以了。但是现在,各式各样的APP层出不穷,APP的质量成为新的竞争标准。这也意味着不管是系统设计还是性能优化等方面,市场都给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为主)
- 数据结构与算法部分
- 常用的开源库部分
- 计算机网络认识
最后
简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。
面试过程一定要有礼貌!即使你觉得面试官不尊重你,经常打断你的讲解,或者你觉得他不如你,问的问题缺乏专业水平,你也一定要尊重他,谁叫现在是他选择你,等你拿到offer后就是你选择他了。
另外,描述问题一定要慢!不要一下子讲一大堆,慢显得你沉稳、自信,而且你还有时间反应思路接下来怎么讲更好。现在开发过多依赖ide,所以会有个弊端,当我们在面试讲解很容易不知道某个方法怎么读,这是一个硬伤…所以一定要对常见的关键性的类名、方法名、关键字读准,有些面试官不耐烦会说“你到底说的是哪个?”这时我们会容易乱了阵脚。正确的发音+沉稳的描述+好听的嗓音决对是一个加分项!
最重要的是心态!心态!心态!重要事情说三遍!面试时间很短,在短时间内对方要摸清你的底子还是比较不现实的,所以,有时也是看眼缘,这还是个看脸的时代。
希望大家都能找到合适自己满意的工作!
如果需要PDF版本可以在GitHub中自行领取!
进阶学习视频
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
**
进阶学习视频
[外链图片转存中…(img-JWbwEzZL-1617874997945)]
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
[外链图片转存中…(img-ZsZouaoD-1617874997948)]