-
为什么Activity间传递对象需要序列化?
-
你知道 okhttp 是怎么复用连接的吗?
这是个网络优化的问题,同一个 ip 同一个端口能复用一个连接,后面问道了 http 2.0 的多路复用,我说一个 tcp 可以多个请求,原理呢?我说不知道。后面让我说了下 https 。
- 快排和递归(算法题)
总体来讲,一面还是答得不错的,或许是面试官觉得小瞧了我,接下来的四轮面试我仿佛遭到了严打
字节飞书客户端二面
- 讲一讲动态注册和静态注册
静态注册是通过包名和函数名去找方法,动态注册是通过注册方法表,其中还被问到了具体是调用哪个函数注册方法表。
- so 的加载流程是怎样的,生命周期是怎样的
这个要从 java 层去看源码分析,是从 ClassLoader 的 PathList 中去找到目标路径加载的,同时 so 是通过 mmap 加载映射到虚拟空间的。生命周期加载库和卸载库时分别调用 JNI_OnLoad 和 JNI_OnUnload() 方法。
- native 层怎么检测内存泄漏
我说按道理可以 hook 函数,开辟内存和释放内存的次数应该是一样的,如果不一样可以怀疑内存泄漏。面试官接着问有没有什么第三方工具或者库可以检测?我说我在公司其实也写的不多,不知道引擎组集成的是啥框架,主要擅长应用层开发。
-
请你简述一下Zygote的启动流程
-
请你分析一下init进程的作用
-
请你分析一下Zygote的源码
-
eakcanary 的原理,哪些对象可以用来做 gc-root
好,你说你主要擅长应用层开发,那 Java 层的内存泄漏怎么检测,我说我们用的 leakcanary,让我说说原理,说完原理又问我是不是所有对象泄漏 leakcanary 都能检测得到,他的引用链是怎么管理的?后面问到你刚说弱引用对象在 gc 的时候会被释放,那什么时候不会被释放?我这时懵逼了,其实就是有内存泄漏的时候不会被释放,我当时脑子短路了居然没反应过来。
字节飞书客户端三面
- Service的运行线程
(生命周期方法全部在主线程)
-
ServiceConnection里面的回调方法运行在哪个线程?
-
简述一下进程保活的机制
-
熟悉插件化吗?说一下实现一个插件化框架的思路
-
说一下Bander机制的弊端
-
手写一个简单的热修复框架
-
请你分析一下AMS和PMS是如何进行通信的?
-
手撕算法
字节飞书客户端四面
-
Jetpack的开发优势在哪?
-
LiveData和Databinding的源码分析
-
单相绑定与双向绑定
-
Recycleview回收池的设计思想
-
HandlerThread的源码分析
-
多个Handler往MessageQueue中添加数据,内部是如何保证线程是安全的呢?
-
压轴算法题
字节飞书客户端五面
-
Activity之间传递数据最大为什么是4M?
-
简述一下Looper的事务对调?
-
问个简单点的?那你说一下ViewGroup的绘制流程?
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2020-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。
还有 高级架构技术进阶脑图、Android开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
oid的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!