兄弟们,这年头,咱移动客户端工程师还有前途吗,flutter 图片压缩上传
数据结构
栈和队列
数组和链表,自定义一个动态数组
Hash 表,及 Hash 冲突的解决
二叉树
B+ B-树
基础排序算法:重点 快排、归并排序、堆排序(大根堆、小根堆)
快排的优化
二分查找与变种二分查找
哈夫曼树、红黑树
字符串操作,字符串查找,KMP 算法
图的 BFS、DFS、prim、Dijkstra 算法(高阶技能)
经典问题:海量数据的处理 (10 亿个数中找出最大的 10000 个数 TOP K 问题)
[](
)算法
分治算法
动态规划
贪心算法
分支限界法
[](
)Android 基础
Android Activity 生命周期
Application 生命周期
Android Service、IntentService,Service 和组件间通信
Activity 的 onNewIntent
Fragment 的懒加载实现,参数传递与保存
ContentProvider 实例详解
BroadcastReceiver 使用总结
Android 消息机制
Binder 机制,共享内存实现原理
Android 事件分发机制
Android 多线程的实现:Thread、HandlerThread、AsyncTask、IntentService、RxJava
ActivityThread 工作原理
嵌套滑动实现原理
RecyclerView 与 ListView(缓存原理,区别联系,优缺点)
View 的绘制原理,自定义 View,自定义 ViewGroup
View、SurfaceView 与 TextureView
主线程 Looper.loop 为什么不会造成死循环
ViewPager 的缓存实现
requestLayout,invalidate,postInvalidate 区别与联系
AndroidP 新特性
Android 两种虚拟机
ADB 常用命令
Asset 目录与 res 目录的区别
Android SQLite 的使用入门
[](
)Android 开发高级
[](
)Android 技术难点
AIDL、Binder、多进程、View 的绘制流程、事件分发、消息队列等。
这类知识对于定位自己为高级 Android 工程师的人来说是必须掌握的,同时他也是能鉴别高级和初中级工程师的一块试金石,其中 binder 是 Android 系统进程间通信最重要的手段之一,现阶段 app 的发展离不开多进程的运用,经常会启动例如定位、推送等需要在后台开启动的进程来来保证主进程的内存运行;所以合理的使用多进程也是十分必要的;view 的绘制是我们自定义控件的理论基础,只有掌握了 view 是如何绘制的才能个性化的自定义控件;事件分发一直是 Android 开发的难点之一,也是必须掌握的;关于 handler 机制也是 android 的一块难点,因为包括 Asynctask、系统启动、Intentservice 等底层都是通过 handler 来实现的,所以掌握后 handler 机制不仅能提高你的实战开发能力,更能让你系统的了解整个 android 系统运作的情况。
[](
)Android 框架层源码掌握
Android 包管理机制,核心 PackageManagerService
Window 管理,核心 WindowManagerService
Android Activity 启动和管理,核心 ActivityManagerService
根 Activity 工作流程
Context 关联类
各种原理,经典第三方库源码系列
自定义 LayoutManager,RecyclerView 中如何自定义 LayoutManager
VLayout 实现原理,即如何自定义 LayoutManager
Glide 加载原理,缓存方案,LRU 算法
Retrofit 的实现与原理
OKHttp3 的使用,网络请求中的 Intercept
EventBus 实现原理
ButterKnife 实现原理
RxJava 实现原理
Dagger 依赖注入
热修复实现原理,解决方案
组件化原理和解决方案
[](
)Android 进程通信以及多进程开发
Android 多进程和 Application 关系
经典解决方案:多进程通信解决方案:Andromeda
Android 动画机制
Android 绘图原理
Android 页面恢复
Android 的页面恢复采用以下两个方法:
onSaveInstanceState(Bundle outState)
onRestoreInstanceState(Bundle savedInstanceState)
onSaveInstanceState :当 Activity 容易被系统销毁时,会触发该方法。具体的说:
用户点击 Home 键
用户点击 Home 键,切换到其他应用程序
有电话来了等附加操作
[](
)混合开发及 Android WebView 应用
混合开发涉及到的知识点主要包括:
APP 调用 WebView 加载 url
掌握 WebView 的封装,了解所有的 WebSettings 配置,掌握 WebViewClient、* WebChromeClient
掌握 WebView 和 Native 双向通信机制,会自己封装双向通信中间件
对 WebView 的封装可参考:GitHub: AgentWeb
对通信中间件原理理解:GitHub:webprogress
[](
)Gradle,自动化构建,持续集成相关
Android 系统
Android Studio 编译过程
其中使用到的编译工具:
aapt、aidl、Java Compiler、dex、 zipalign
主要步骤描述:
通过 aapt 打包 res 资源文件,生成 R.java、resources.arsc 和 res 文件(二进制 & 非二进制如 res/raw 和 pic 保持原样)
处理.aidl 文件,生成对应的 Java 接口文件
通过 Java Compiler 编译 R.java、Java 接口文件、Java 源文件,生成.class 文件
通过 dex 命令,将.class 文件和第三方库中的.class 文件处理生成 classes.dex
通过 apkbuilder 工具,将 aapt 生成的 resources.arsc 和 res 文件、assets 文件和 classes.dex 一起打包生成 apk
通过 Jarsigner 工具,对上面的 apk 进行 debug 或 release 签名
通过 zipalign 工具,将签名后的 apk 进行对齐处理。
[](
)App 启动加载过程
Android 虚拟机 Android App 运行的沙箱原则
[](
)Android 架构
在 Android 源码中最重要的三个类:ActivityManagerService/PackageManagerService/View,推荐大家周末的时候可以去阅读下这部分的源码,阅读源码能提高我们今后设计架构自己代码的能力,同时也能从底层了解整个 android 系统的运行原理,其他一些比如主线程的消息循环、主线程如何和 AMS 如何跨进程交互、SystemServer 进程中的各种 Service 的工作方式、AsyncTask 的工作原理等。这些知识也是作为一个 Android 高级开发工程师必须掌握的,不能整天沉溺于 ui 和四大组件的交互,要站在更高的角度去考虑 Android 的有些问题。
MVC 模式
MVP 模式
MVVM 模式
CLEAN 模式
组件化开发
跨平台开发:Flutter、ReactNative(RN 未来要黄,了解一下就好)
[](
)移动开发外围
服务器开发相关
SpringBoot 技术
Restful API 开发
网络协议理解:TCP/IP、HTTP/HTTPS、OSI 七层协议
评论