构建自己的Android知识体系

  • 底层设备
1.1.2 应用层
  • HTTP协议(⭐⭐⭐)

  • DHCP协议(⭐⭐⭐)

  • NAT

1.1.3 传输层(⭐⭐⭐)
  • TCP协议

  • UDP协议

1.1.4 网络层
  • IP协议

  • ICMP协议

1.1.5 数据链路层

1.2 操作系统(⭐⭐⭐)

1.2.1 操作系统基本功能
  • 进程管理

  • 作业管理/文件管理

  • 存储管理/设备管理

1.2.2 Linux系统
  • 内存管理

  • 进程管理

  • 文件系统

  • 常见命令操作

1.2.3 补充
  • 自旋锁/互斥锁/读写锁/条件变量/共享文件

  • 消息队列/管道/信号量

  • 操作系统的用户态与内核态

  • 上下文切换成本

  • 进程,线程与协程

1.3 数据库(⭐)

2. Java基础(⭐⭐⭐)


2.1 面向对象

2.2 设计模式

2.3 集合原理

2.3.1 ArrayList
2.3.2 Vector
2.3.3 Stack
2.3.4 LinkedList
2.3.5 HashMap
2.3.6 Hashtable
2.3.7 TreeMap
2.3.8 LinkedHashMap
2.3.9 HashSet
2.3.10 TreeSet
2.3.11 CopyOnWriteArrayList
2.3.12 ConcurrentHashMap
2.3.13 LinkedBlockingQueue
2.3.14 SynchronousQueue
2.3.15 SparseArray
2.3.16 ArrayMap

2.4 反射

2.5 泛型

2.6 注解

2.7 其他

3. Java并发


3.1 线程基础

3.1.1 实现多线程
3.1.2 启动线程
3.1.3 停止线程
  • interrupt()正确停止线程的方法,不强制停止,而是通知协作.
3.1.4 线程的6种状态
  • New新创建

  • Runnable可运行

  • Blocked被阻塞

  • Waiting等待

  • TimedWaiting计时等待

  • Terminated被终止

3.1.5 wait/notify/sleep/join等重要方法
  • wait阻塞

  • notify释放

  • sleep睡眠

  • join线程没执行完之前,会一直阻塞在join方法处

3.1.6 守护线程,优先级等属性
3.1.7 线程安全

3.2 线程安全

3.2.1 各种各样的锁
  • 悲观锁和乐观锁

  • 共享锁和独占锁

  • 公平锁和非公平锁

  • 可重入锁和非可重入锁

  • 可中断锁和非可中断锁

  • 自旋锁和非自旋锁

  • 偏斜锁/轻量级锁/重量级锁

  • JVM对synchronized锁的优化

3.2.2 并发容器
  • Vector/Hashtable

  • ConcurrentHashMap

  • CopyOnWriteArrayList

  • 阻塞队列

  • 非阻塞队列

  • ConcurrentSkipListMap

3.2.3 atomic包,6种原子类
  • 分类

  • 原子类与锁

  • 原子类与volatile

3.2.4 ThreadLocal
  • 使用场景

  • 原理

3.3 管理线程,提高效率

3.3.1 线程池
  • 优点

  • 参数

  • 分类

  • 执行任务流程

  • 拒绝策略

  • 正确关闭线程池

  • 线程池复用原理

3.3.2 Future获取运行结果
3.3.3 Fork/Join模式

3.4 线程配合

3.4.1 CountDownLatch
3.4.2 CyclicBarrier
3.4.3 Semaphore
3.4.4 Condition
3.4.5 Phaser

3.5 底层原理

3.5.1 Java内存模型
  • 重排序

  • 原子性

  • 内存可见性

3.5.2 CAS原理
3.5.3 AQS框架
  • 存在意义

  • 内部关键原理

4. JVM虚拟机


4.1 内存区域

4.2 内存模型

4.3 内存分配回收策略

4.4 Java对象的创建、内存布局和访问定位

4.5 GC

4.5.1 引用计数及可达性分析
4.5.2 垃圾回收算法
4.5.3 G1及ZGC

4.6 类加载机制

4.7 双亲委派模型

4.8 编译器优化

4.8.1 方法内联
4.8.2 逃逸分析

4.9 虚拟机相关

4.9.1 HotSpot及JIT
4.9.2 Dalvik
4.9.3 ART及AOT

4.10 JVM执行方法

4.11 JVM实现反射

4.12 JVM实现泛型

4.13 JVM实现异常

4.14 JVM实现注解

5. 数据结构与算法


5.1 数据结构

5.1.1 栈
5.1.2 队列
5.1.3 数组
5.1.4 链表
5.1.5 Hash表
5.1.6 二叉树
5.1.7 基础排序算法
5.1.8 字符串操作

5.2 算法

5.2.1 分治算法
5.2.2 动态规划
5.2.3 贪心算法
5.2.4 分支限界法

5.3 刷题

5.3.1 CS-Notes剑指Offer题解
5.3.2 CS-NotesLeetCode题解
5.3.3 JsonChao高频题集

6. Android基础


6.1 核心知识点

6.1.1 四大组件
  • Activity

  • Service

  • BroadcastReceiver

  • ContentProvider

6.1.2 布局和控件
  • RelativeLayout

  • FrameLayout

  • LinearLayout

  • ConstraintLayout

  • Button

  • TextView

  • RecyclerView

6.1.3 自定义View/ViewGroup
  • onMeasure

  • onLayout

  • onDraw

  • onTouchEvent

  • dispatchTouchEvent

  • 自定义属性

6.1.4 动画和手势
  • View动画

  • 属性动画

  • layoutAnimation视图动画

  • 手势检测(GestureDetector)

  • 缩放手势检测(ScaleGestureDecetor)

6.1.5 网络
  • 请求网络

  • 解析数据

6.1.6 图片加载
  • 本地图片

  • 网络图片

  • 压缩图片

  • 多图列表

  • DiskLruCache

6.1.7 文件和数据库
6.1.8 Handler
  • Looper

  • Message

  • MessageQueue

  • 内存泄漏

  • ThreadLocal

6.1.9 异步线程池
6.1.10 Resources
6.1.11 Android各版本新特性
  • Android5.0

  • Android6.0

  • Android7.0

  • Android8.0(O)

  • Android9.0§

  • Android10.0(Q)

  • Android11.0®

6.1.12 adb常用命令

6.2 开源库使用

6.2.1 Retrofit/OKhttp
6.2.2 RxJava
6.2.3 Glide
6.2.4 注解框架
6.2.5 Jetpack

6.3 代码管理

6.3.1 Git
6.3.2 Codereview
6.3.3 代码风格
6.3.4 单元测试

6.4 性能优化

6.4.1 快-流畅的体验
  • 布局优化

  • 绘制优化

  • 内存优化

  • 启动优化

  • 其他

6.4.2 稳-稳定
  • 避免内存泄露

  • 避免崩溃

6.4.3 省-省电/流量
  • 使用JobScheduler调度任务

  • 使用懒惰法则

6.4.4 小-安装包小
  • apk构成

  • 包体优化

7. Android进阶


7.1 核心知识点

7.1.1 多进程
  • Binder

  • AIDL

  • Messenger

7.1.2 View绘制
7.1.3 事件分发
7.1.4 消息队列
7.1.5 Activity难点
  • onSaveInstanceState()和onRestoreInstanceState()

  • intent-filter匹配规则

  • 生命周期

  • 启动模式

  • Activity启动过程

  • App启动过程

7.1.6 Service难点
  • startService流程

  • bindService流程

7.1.7 BroadcastReceiver难点
  • 注册/发送/接收工作原理
7.1.8 ContentProvider难点
  • ContentProvider启动过程
7.1.9 AsyncTask原理
7.1.10 RemoteViews
7.1.11 Window和ViewRootImpl
7.1.12 刁钻问题汇总
  • 子线程更新UI

  • Android中为什么主线程不会因为Looper.loop()里的死循环卡死?

7.2 开源库原理

7.2.1 OkHttp
7.2.2 Retrofit
7.2.3 RxJava
7.2.4 Glide
7.2.5 LeakCanary
7.2.6 GreenDao
7.2.7 ARouter

7.3 Gradle

7.3.1 前置知识
  • 编译

  • 混淆

  • 签名

7.3.2 Groovy
7.3.3 Gradle构建流程
7.3.4 GradlePlugin
7.3.5 Gradle构建优化
7.3.6 App构建过程
7.3.7 差异化打包

7.4 初级架构

7.4.1 设计模式
7.4.2 MVC,MVP,MVVM

7.5 JNI

7.5.1 JNI基础
7.5.2 NDK基础

7.6 安全

7.6.1 dalvik沙盒机制
7.6.2 逆向工具:dex2jar,jadx,jd-gui
7.6.3 smail&apktool

7.7 动态化

7.7.1 前置知识
  • Android打包流程

  • Java字节码

  • GradlePlugin

  • TransformAPI

  • ASM

7.7.2 热修复:nuwa&Tinker
  • 经典-64k问题

  • dex分包

  • MultiDex优化

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

下面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题全套解析,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,下面只是以图片的形式给大家展示一部分。

image

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

image

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
7.3.5 Gradle构建优化

7.3.6 App构建过程
7.3.7 差异化打包

7.4 初级架构

7.4.1 设计模式
7.4.2 MVC,MVP,MVVM

7.5 JNI

7.5.1 JNI基础
7.5.2 NDK基础

7.6 安全

7.6.1 dalvik沙盒机制
7.6.2 逆向工具:dex2jar,jadx,jd-gui
7.6.3 smail&apktool

7.7 动态化

7.7.1 前置知识
  • Android打包流程

  • Java字节码

  • GradlePlugin

  • TransformAPI

  • ASM

7.7.2 热修复:nuwa&Tinker
  • 经典-64k问题

  • dex分包

  • MultiDex优化

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

下面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题全套解析,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,下面只是以图片的形式给大家展示一部分。

[外链图片转存中…(img-z3Awcu35-1715332286328)]

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

[外链图片转存中…(img-fVyA0drl-1715332286329)]

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值