死磕原理!Android高级架构进阶之数据传输与序列化,醍醐灌顶!

前言

马爸爸总结了一句话:跳槽,要么是钱不到位,要么是受了委屈。

我给自己这次的跳槽经历做了一个分析,希望能对那些想换工作的朋友有所帮助。

许多朋友想换工作,但是对“换工作”的理解可能仅限于写简历、投简历、面试。在跳槽之前,我也是这么想的。

当时,工作并不顺利,我的专业技能并没有很好的发挥,公司也给不了什么发展前景,就有了跳槽的打算。

我看到一家行业内还不错的上市公司在招聘这个岗位,于是我发了简历。面试后我感觉很好,但我拒绝了,因为工资没有达到预期。

经过仔细思考,我发现我准备得太匆忙了,或者根本没有准备好。粗糙地写了一份简历,面试前也没有充分的准备,就去了那里。在面试中,项目的一些细节无法得到回答,许多知识点也没有很好的回答,这可能让面试官感觉处于普通水平。

在接下来的几个月里,我开始查阅各种跳槽和面试相关的资料,同时按计划组织重点、整理学习路径,逐步复习。

Java相关

  1. 容器(HashMap、HashSet、LinkedList、ArrayList、数组等)

  2. 内存模型

  3. 垃圾回收算法(JVM)

4、垃圾回收机制和调用 System.gc()的区别?

  1. 类加载过程(需要多看看,重在理解,对于热修复和插件化比较重要)

  2. 反射

  3. 多线程和线程池

  4. 设计模式(六大基本原则、项目中常用的设计模式、手写单例等)

  5. Java 四大引用

  6. Java 的泛型

  7. final、finally、finalize 的区别

  8. 接口、抽象类的区别
    死磕原理!Android高级架构进阶之数据传输与序列化,醍醐灌顶!

Android 相关

  1. 自定义 View

  2. 事件拦截分发

  3. 解决过的一些性能问题,在项目中的实际运用

  4. 性能优化工具

  5. 性能优化 (讲讲你自己项目中做过的性能优化)

  6. Http[s]请求慢的解决办法(DNS、携带数据、直接访问 IP)

  7. 缓存自己如何实现(LRUCache 原理)

  8. 图形图像相关:OpenGL ES 管线流程、EGL 的认识、Shader 相关

  9. SurfaceView、TextureView、GLSurfaceView 区别及使用场景

  10. 动画、差值器、估值器(Android中的View动画和属性动画 - 简书、Android 动画 介绍与使用)

  11. MVC、MVP、MVVM

  12. Handler、ThreadLocal、AsyncTask、IntentService 原理及应用

  13. Gradle(Groovy 语法、Gradle 插件开发基础)

  14. 热修复、插件化

  15. 组件化架构思路

  16. 系统打包流程

  17. Android 有哪些存储数据的方式。

  18. SharedPrefrence 源码和问题点;

  19. sqlite 相关

  20. 如何判断一个 APP 在前台还是后台?

  21. AMS 、PMS

  22. Activity 启动流程,App 启动流程

  23. Binder 机制(IPC、AIDL 的使用)

  24. 为什么使用 Parcelable,好处是什么?

  25. Android 图像显示相关流程,Vsync 信号等
    死磕原理!Android高级架构进阶之数据传输与序列化,醍醐灌顶!

算法与数据结构

  1. 时间复杂度 / 空间复杂度

  2. 常用的排序算法有哪些?

  3. 字符串反转

  4. 链表反转(头插法)

  5. 如何查找第一个只出现一次的字符(Hash查找)

  6. 如何查找两个子视图的共同父视图?

  7. 无序数组中的中位数(快排思想)

  8. 如何给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

  9. 二叉树前序、中序、后序遍历

  10. 最大 K 问题

  11. 广度、深度优先搜索算法

  12. String 转 int。核心算法就三行代码,不过临界条件很多,除了判空,还需要注意负数、Integer 的最大最小值边界等;

  13. 如何判断一个单链表有环?

  14. 100 亿个单词,找出出现频率最高的单词。要求几种方案;

  15. 链表每 k 位逆序;

  16. 镜像二叉树;

  17. 找出一个无序数组中出现超过一半次数的数字;

  18. 计算二叉树的最大深度,要求非递归算法。

  19. String 方式计算加法。

网络

1.网络框架对比和源码分析

  1. 网络七层协议有哪些?

  2. Http 和 Https 的区别?Https为什么更加安全?

  3. HTTPS的连接建立流程

  4. 解释一下 三次握手 和 四次挥手

  5. TCP 和 UDP的区别

  6. Cookie和Session

  7. DNS是什么?

  8. DNS解析过程

10.HTTP报文结构

11.HTTP与HTTPS的区别以及如何实现安全性

12.如何验证证书的合法性?

13.https中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解?

14.client如何确定自己发送的消息被server收到?

15.谈谈你对WebSocket的理解

16.WebSocket与socket的区别

17.谈谈你对安卓签名的理解。

18.请解释安卓为啥要加签名机制?

19.视频加密传输

20.App 是如何沙箱化,为什么要这么做?

21.权限管理系统(底层的权限是如何进行 grant 的)?

死磕原理!Android高级架构进阶之数据传输与序列化,醍醐灌顶!

源码理解

  1. Glide :加载、缓存、LRU 算法 (如何自己设计一个大图加载框架) (LRUCache 原理)

  2. EventBus

  3. LeakCanary

  4. ARouter

  5. 插件化(不同插件化机制原理与流派,优缺点。局限性)

  6. 热修复

  7. RXJava (RxJava 的线程切换原理)

  8. Retrofit (Retrofit 在 OkHttp 上做了哪些封装?动态代理和静态代理的区别,是怎么实现的)

  9. OkHttp
    死磕原理!Android高级架构进阶之数据传输与序列化,醍醐灌顶!

Kotlin 相关

1.从原理分析Kotlin的延迟初始化: lateinit var和by lazy

2.使用Kotlin Reified 让泛型更简单安全

3.Kotlin里的Extension Functions实现原理分析

4.Kotlin系列之顶层函数和属性

5.Kotlin 兼容 Java 遇到的最大的 “坑”

6.Kotlin 的协程用力瞥一眼

7.Kotlin 协程「挂起」的本质

8.到底什么是「非阻塞式」挂起?协程真的更轻量级吗?

9.资源混淆是如何影响到Kotlin协程的

10.Kotlin Coroutines(协程) 完全解析

11.破解 Kotlin 协程
死磕原理!Android高级架构进阶之数据传输与序列化,醍醐灌顶!

####Flutter相关

  1. Dart 当中的 「…」表示什么意思?

  2. Dart 的作用域

  3. Dart 是不是单线程模型?是如何运行的?

  4. Dart 是如何实现多任务并行的?

  5. 说一下Dart异步编程中的 Future关键字?

  6. 说一下Dart异步编程中的 Stream数据流?

  7. Stream 有哪两种订阅模式?分别是怎么调用的?

  8. await for 如何使用?

  9. 说一下 mixin机制?

  10. 请简单介绍下Flutter框架,以及它的优缺点?

  11. 介绍下Flutter的理念架构

  12. 介绍下FFlutter的FrameWork层和Engine层,以及它们的作用

  13. 介绍下Widget、State、Context 概念 - Widget

14.简述Widget的StatelessWidget和StatefulWidget两种状态组件类

15.StatefulWidget 的生命周期

16.简述Widgets、RenderObjects 和 Elements的关系

17.什么是状态管理,你了解哪些状态管理框架?

18.简述Flutter的绘制流程

19.简述Flutter的线程管理模型

20.Flutter 是如何与原生Android、iOS进行通信的?

21.简述Flutter 的热重载

学习分享

在当下这个信息共享的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了

很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘

如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。

2021最新上万页的大厂面试真题

死磕原理!Android高级架构进阶之数据传输与序列化,醍醐灌顶!

七大模块学习资料:如NDK模块开发、Android框架体系架构…

死磕原理!Android高级架构进阶之数据传输与序列化,醍醐灌顶!

只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。

这份体系学习笔记,适应人群:
**第一,**学习知识比较碎片化,没有合理的学习路线与进阶方向。
**第二,**开发几年,不知道如何进阶更进一步,比较迷茫。
第三,到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。如果你有需要,我这里恰好有为什么,不来领取!说不定能改变你现在的状态呢!
由于文章内容比较多,篇幅不允许,部分未展示内容以截图方式展示 。如有需要获取完整的资料文档的朋友点击我的GitHub免费获取。

有需要,我这里恰好有为什么,不来领取!说不定能改变你现在的状态呢!

由于文章内容比较多,篇幅不允许,部分未展示内容以截图方式展示 。如有需要获取完整的资料文档的朋友点击我的GitHub免费获取。

上一篇:Dart基础——Dart常用语法


下一篇:Dart基础——Dart常用语法