前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2021 最新Android常见知识体系,HR:“这些全部精通薪资任你开!”

2021 最新Android常见知识体系,HR:“这些全部精通薪资任你开!”

原创
作者头像
Android技术干货分享
修改2023-09-24 17:15:17
1.2K0
修改2023-09-24 17:15:17
举报
文章被收录于专栏:Android技术分享

前言

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

平时看博客或者学知识,学到的东西比较零散,没有独立的知识模块概念,而且学了之后很容易忘。于是我建立了一个自己的知识体系,将平时学到的东西都归类然后放里面,需要的时候呢也方便复习。过了段时间,我觉得这样还是不够好,于是我最近花了点时间,整理了一下Android中的常见知识,更清晰地认识自己的知识边界到底在哪里,哪些东西还不足。

此知识体系呢只是一个参考,大家可以根据自己的实际情况进行增删,然后进行查漏补缺,提升自己~

一、计算机基础

1.计算机网络

计算机网络概述

  • 网络七层协议
  • TCP/IP四层模型
  • 底层协议
  • 底层设备

应用层

  • HTTP协议(⭐⭐⭐)
  • DHCP协议(⭐⭐⭐)
  • NAT

传输层(⭐⭐⭐)

  • TCP协议
  • UDP协议

网络层

  • IP协议
  • ICMP协议
2.操作系统(⭐⭐⭐)

操作系统基本功能

  • 进程管理
  • 作业管理/文件管理
  • 存储管理/设备管理

Linux系统

  • 内存管理
  • 进程管理
  • 文件系统
  • 常见命令操作

补充

  • 自旋锁/互斥锁/读写锁/条件变量/共享文件
  • 消息队列/管道/信号量
  • 操作系统的用户态与内核态
  • 上下文切换成本
  • 进程,线程与协程

二、Java基础(⭐⭐⭐)

1.集合原理
  • ArrayList
  • Vector
  • Stack
  • LinkedList
  • HashMap
  • Hashtable
  • TreeMap
  • LinkedHashMap
  • HashSet
  • TreeSet
  • CopyOnWriteArrayList
  • ConcurrentHashMap
  • LinkedBlockingQueue
  • SynchronousQueue
  • SparseArray
  • ArrayMap
2.其他
  • 面向对象
  • 设计模式
  • 反射
  • 泛型
  • 注解

三、Java并发

1.线程基础
  • 实现多线程
  • 启动线程
  • 停止线程
  • 线程的6种状态
  • 各种各样的锁
    • 悲观锁和乐观锁
    • 共享锁和独占锁
    • 公平锁和非公平锁
    • 可重入锁和非可重入锁
    • 可中断锁和非可中断锁
    • 自旋锁和非自旋锁
    • 偏斜锁/轻量级锁/重量级锁
    • JVM对synchronized锁的优化
  • wait/notify/sleep/join等重要方法
  • 守护线程,优先级等属性
  • 线程安全
  • Future获取运行结果
  • Fork/Join模式
  • CountDownLatch
  • CyclicBarrier
  • Semaphore
  • Condition
  • Phaser
  • 重排序
  • 原子性
  • 内存可见性
  • CAS原理
  • AQS框架
2.其他

并发容器

  • Vector/Hashtable
  • ConcurrentHashMap
  • CopyOnWriteArrayList
  • 阻塞队列
  • 非阻塞队列
  • ConcurrentSkipListMap

atomic包,6种原子类

  • 分类
  • 原子类与锁
  • 原子类与volatile

ThreadLocal

  • 使用场景
  • 原理

线程池

  • 优点
  • 参数
  • 分类
  • 执行任务流程
  • 拒绝策略
  • 正确关闭线程池
  • 线程池复用原理

四、JVM虚拟机

  • 内存区域
  • 内存模型
  • 内存分配回收策略
  • Java对象的创建、内存布局和访问定位
  • GC: 引用计数及可达性分析,垃圾回收算法,G1及ZGC
  • 类加载机制
  • 双亲委派模型
  • 编译器优化: 方法内联,逃逸分析
  • 虚拟机相关: HotSpot及JIT,Dalvik,ART及AOT
  • JVM执行方法
  • JVM实现反射
  • JVM实现泛型
  • JVM实现异常
  • JVM实现注解

五、数据结构与算法

1.数据结构
  • 队列
  • 数组
  • 链表
  • Hash表
  • 二叉树
  • 基础排序算法
  • 字符串操作
2.算法
  • 分治算法
  • 动态规划
  • 贪心算法
  • 分支限界法
3.刷题

六、Android基础

1.核心知识点

四大组件

  • Activity
  • Service
  • BroadcastReceiver
  • ContentProvider

布局和控件

  • RelativeLayout
  • FrameLayout
  • LinearLayout
  • ConstraintLayout
  • Button
  • TextView
  • RecyclerView
  • ......

自定义View/ViewGroup

  • onMeasure
  • onLayout
  • onDraw
  • onTouchEvent
  • dispatchTouchEvent
  • 自定义属性

动画和手势

  • View动画
  • 属性动画
  • layoutAnimation视图动画
  • 手势检测(GestureDetector)
  • 缩放手势检测(ScaleGestureDecetor)

网络

  • 请求网络
  • 解析数据

图片加载

  • 本地图片
  • 网络图片
  • 压缩图片
  • 多图列表
  • DiskLruCache

Handler

  • Looper
  • Message
  • MessageQueue
  • 内存泄漏
  • ThreadLocal

Android各版本新特性

  • Android5.0
  • Android6.0
  • Android7.0
  • Android8.0(O)
  • Android9.0(P)
  • Android10.0(Q)
  • Android11.0(R)

其他

  • adb常用命令
  • 文件和数据库
  • 异步线程池
  • Resources
2.开源库使用
  • Retrofit/OKhttp
  • RxJava
  • Glide
  • 注解框架
  • Jetpack
3.性能优化

快-流畅的体验

  • 布局优化
  • 绘制优化
  • 内存优化
  • 启动优化
  • 其他

稳-稳定

  • 避免内存泄露
  • 避免崩溃

省-省电/流量

  • 使用JobScheduler调度任务
  • 使用懒惰法则

小-安装包小

  • apk构成
  • 包体优化

七、Android进阶

1.核心知识点

多进程

  • Binder
  • AIDL
  • Messenger

Activity难点

  • onSaveInstanceState()和onRestoreInstanceState()
  • intent-filter匹配规则
  • 生命周期
  • 启动模式
  • Activity启动过程
  • App启动过程

Service难点

  • startService流程
  • bindService流程

BroadcastReceiver难点

  • 注册/发送/接收工作原理

ContentProvider难点

  • ContentProvider启动过程

其他

  • View绘制
  • 事件分发
  • 消息队列
  • AsyncTask原理
  • RemoteViews
  • Window和ViewRootImpl
2.开源库原理
  • OkHttp
  • Retrofit
  • RxJava
  • Glide
  • LeakCanary
  • GreenDao
  • ARouter
3.Gradle
  • 编译
  • 混淆
  • 签名
  • Groovy
  • Gradle构建流程
  • GradlePlugin
  • Gradle构建优化
  • App构建过程
  • 差异化打包
4.初级架构
  • 设计模式
  • MVC,MVP,MVVM
5.JNI
  • JNI基础
  • NDK基础
6.动态化

前置知识

  • Android打包流程
  • Java字节码
  • GradlePlugin
  • TransformAPI
  • ASM

热修复:nuwa&Tinker

  • 经典-64k问题
  • dex分包
  • MultiDex优化
  • findClass原理
  • QQ空间热补丁方案
  • Nuwa应用层实现
  • NuwaGradle

插件化:VirtualAPK

  • 加载类
  • 资源访问
  • 生命周期管理
7.编译插桩
  • AOP
  • ASM
8.Framework

系统服务

  • Zygote启动
  • Android系统启动
  • ServiceManager启动及工作原理

应用进程

  • 启动流程
  • 启用Binder机制
  • Application初始化流程
  • Context

UI体系

  • 显示原理
  • UI线程启动
  • 屏幕刷新机制
  • surface
  • vsync

进程通信

  • Binder
  • IPC通信流程
  • Binder对象跨进程传递
  • OneWay机制

线程通信

  • 消息队列
  • 消息传递机制
  • Handler消息延迟实现
  • IdleHandler原理
  • 消息屏障
  • ThreadLocal原理

其他

  • 跨进程传递大图片
  • 四大组件启动原理

八、领域专家

1.性能优化方向
  • 稳定性优化
  • 启动速度优化
  • 绘制优化
  • 内存优化
  • 包体积优化
  • 网络优化
  • IO优化
  • 存储优化
  • 耗电优化
2.基础架构方向
  • Android工程实践
  • Gradle自动化构建
  • 编译插桩技术
  • Android架构
  • Android热修复
  • Android插件化
  • Android核心源码
3.NDK、音视频
  • C
  • C++
  • JNI基础
  • 编译原理与语法基础
  • Linux基础
  • 热修复
  • Gif图实现
  • 音视频基础
  • ffmpeg
  • WebRTC
  • opengl
  • vulkan
  • opencv

九、其他Android相关

1.Kotlin(⭐⭐)

基础部分

  • 内置类型
  • 类型初步
  • 表达算式
  • 函数进阶
  • 类型进阶

高级部分

  • 泛型
  • 反射
  • 注解
  • 协程
关于程序员系统学习

我们都很渺小,在宇宙中甚至比不上一颗尘埃,可是人为何称之为人,就是因为人懂得思考,知道学习的重要性。并且随时愿意改变自己,重新出发。我们一生都在忙忙碌碌,为自己而活的时间太少太少,努力奔跑不仅仅是为了活着,更多的是实现我们自己的理想与报复。存在即为意义,我希望大家能跟我一样坚持,你不知道下一个黄金浪潮在哪里,但是只要你在里面,总会赶上的啊!下一个Android辉煌的时刻可能就在明天呢?

目前我们要做的就是选好自己细分领域深入研究,对基础原理性内容深入理解,尽快向高级水平靠近并达到。当然也要了解新技术,拥有开放的心态去学习一些新技术,不要一开始出来一个新技术就转入学习,这样会导致啥都会一点啥都不会,当然新技术是有一个发展过程的,不会立马流行和大量应用等它稍微成熟点。

这样你会少踩很多坑,也不要排斥它,完全不去理会和了解学习,正确的方式是简单了解这个技术产生是为了解决什么问题,有什么优缺点已经目前发展成熟度和应用范围,我们还是要多抓住技术的本质和基础,这样出现了新技术学起来也会很轻松,当然机会合适了再去学习它。 所以,找准自己的定位及细分领域。

多余的话就不讲了,接下来将分享面试的一个复习路线,如果你也在准备面试但是不知道怎么高效复习,可以参考一下我的复习路线,有任何问题也欢迎一起互相交流,加油吧!

首先是超级详细得不能再详细的Android开发学习思维导图

接下来就需要梳理知识,提升储备了!(Android移动架构师七大专题学习资源)

  • 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO
  • Android高级UI与FrameWork源码:高级UI晋升+Framework内核解析+Android组件内核+数据持久化
  • 360°全方面性能调优:设计思想与代码质量优化+程序性能优化+开发效率优化
  • 解读开源框架设计思想:热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack
  • NDK模块开发:NDK基础知识体系+底层图片处理+音视频开发
  • 微信小程序:小程序介绍+UI开发+API操作+微信对接
  • Hybrid 开发与Flutter:Html5项目实战+Flutter进阶

知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。

然后再是通过源码来系统性地学习

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

刷大厂面试题备战,增加大厂通过率

历时半年,整理了这份市面上最全面的安卓面试题解析大全。

1.可以通过目录索引直接翻看需要的知识点,查漏补缺。 2.五角星数表示面试问到的频率,代表重要推荐指数

以上内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、计算机基础
    • 1.计算机网络
      • 2.操作系统(⭐⭐⭐)
      • 二、Java基础(⭐⭐⭐)
        • 1.集合原理
          • 2.其他
          • 三、Java并发
            • 1.线程基础
              • 2.其他
              • 四、JVM虚拟机
              • 五、数据结构与算法
                • 1.数据结构
                  • 2.算法
                    • 3.刷题
                    • 六、Android基础
                      • 1.核心知识点
                        • 2.开源库使用
                          • 3.性能优化
                          • 七、Android进阶
                            • 1.核心知识点
                              • 2.开源库原理
                                • 3.Gradle
                                  • 4.初级架构
                                    • 5.JNI
                                      • 6.动态化
                                        • 7.编译插桩
                                          • 8.Framework
                                          • 八、领域专家
                                            • 1.性能优化方向
                                              • 2.基础架构方向
                                                • 3.NDK、音视频
                                                • 九、其他Android相关
                                                  • 1.Kotlin(⭐⭐)
                                                    • 关于程序员系统学习
                                                    相关产品与服务
                                                    领券
                                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档