复习点
1、项目经历,业务,难点
2、Java基础,JVM,集合原理
3、Android基础,View体系,View绘制流程,事件分发,屏幕刷新,动画原理
4、常见三方库原理
5、Jetpack
6、Android Framework
7、算法
8、Kotlin
具体链接
1 算法部分
打遍天下二叉树
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Algorithm/打遍天下二叉树.md
labuladong的fucking-algorithm
https://github.com/labuladong/fucking-algorithm
2 Java基础
Java集合源码复习一遍
ArrayList源码解析
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/集合/ArrayList源码解析.md
LinkedList源码解析
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/集合/LinkedList源码解析.md
CopyOnWriteArrayList源码解析
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/集合/CopyOnWriteArrayList源码解析.md
HashMap源码解析
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/集合/HashMap源码解析.md
ConcurrentHashMap源码解析
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/集合/ConcurrentHashMap源码解析.md
TreeMap 和 LinkedHashMap
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/集合/TreeMap和LinkedHashMap.md
HashSet 和 TreeSet
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/集合/HashSet和TreeSet.md
Android中的Bundle,SparseArray和ArrayMap
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/集合/Android中的Bundle,SparseArray和ArrayMap.md
从源码角度彻底搞懂String,StringBuffer,StringBuilder_20180420 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/基础/
从源码角度彻底搞懂String,StringBuffer,StringBuilder_20180420.md
String
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/基础/String.md
泛型 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/基础/泛型.md
异常 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/基础/异常.md
反射 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/基础/反射.md
注解 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/基础/注解.md
反射性能开销原理及优化 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/基础/反射性能开销原理及优化.md
《深入理解Java虚拟机》
JVM内存数据区域 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/1.JVM内存数据区域.md
HotSpot虚拟机对象 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/2.HotSpot虚拟机对象.md
垃圾收集器与内存分配策略 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/3.垃圾收集器与内存分配策略.md
Java字节码(class文件)解读 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/4.Java字节码(class文件)解读.md
字节码指令简介 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/5.字节码指令简介.md
虚拟机类加载机制 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/6.虚拟机类加载机制.md
虚拟机字节码执行引擎 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/7.虚拟机字节码执行引擎.md
前端编译与优化 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/8.前端编译与优化.md
后端编译与优化 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/9.后端编译与优化.md
Java内存模型与线程 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/10.Java内存模型与线程.md
线程安全与锁优化 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/11.线程安全与锁优化.md
拉钩教育-《Android 工程师进阶34讲》
拉钩教育-《Java 并发编程 78 讲》
3 Android
死磕Android_View工作原理你需要知道的一切
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/系统源码解析/死磕Android_View工作原理你需要知道的一切.md
死磕Android_App_启动过程(含Activity启动过程)
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/系统源码解析/死磕Android_App_启动过程(含Activity启动过程).md
死磕Android_Service启动流程分析(一)
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/系统源码解析/死磕Android_Service启动流程分析(一).md
死磕Android_Service绑定流程分析(二)
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/系统源码解析/死磕Android_Service绑定流程分析(二).md
死磕Android_BroadcastReceiver_工作过程
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/系统源码解析/死磕Android_BroadcastReceiver_工作过程.md
Lifecycle_原理解析
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/系统源码解析/Lifecycle_原理解析.md
ViewModel_使用及原理解析
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/系统源码解析/ViewModel_使用及原理解析.md
Jetpack全家桶 https://juejin.cn/post/7013640663824597005
学习Android Jetpack? 实战和教程这里全都有!
https://juejin.cn/post/6844903889574051848
Lifecycle https://juejin.cn/post/6893870636733890574
LiveData https://juejin.cn/post/6903143273737814029
ViewModel https://juejin.cn/post/6915012483421831175
MVVM https://juejin.cn/post/6921321173661777933
DataBinding https://juejin.cn/post/6923859213403979789
Handler机制你需要知道的一切
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/系统源码解析/Handler机制你需要知道的一切.md
死磕Android_ContentProvider_启动
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/系统源码解析/死磕Android_ContentProvider_启动.md
LiveData_使用及原理解析
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/系统源码解析/LiveData_使用及原理解析.md
Window,Activity,View三者关系
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/系统源码解析/Window,Activity,View三者关系.md
Handler同步屏障
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/系统源码解析/Handler同步屏障.md
Choreographer原理及应用
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/系统源码解析/Choreographer原理及应用.md
Handler相关知识点大全
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/系统源码解析/Handler相关知识点大全.md
LeakCanary 原理探究
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/三方库原理/LeakCanary_原理探究.md
OkHttp3 原理探究
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/三方库原理/OkHttp3_原理探究.md
Retrofit 原理解析
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/三方库原理/Retrofit_原理解析.md
Glide主流程源码解析
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/三方库原理/Glide主流程源码解析.md
RxJava3原理解析
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/三方库原理/RxJava3原理解析.md
Android-skin-support 换肤原理详解 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/三方库原理/Android-skin-support换肤原理详解.md
屏幕适配
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/实战常见问题/屏幕适配.md
插件化
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/实战常见问题/插件化.md
热更新
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/实战常见问题/热更新.md
Gradle系列(一) Groovy 基础
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/Gradle/Gradle系列(一)Groovy基础.md
Gradle系列(二) Gradle执行顺序和task
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/Gradle/Gradle系列(二)_Gradle执行顺序和task.md
Gradle系列(三) Gradle配置构建和渠道包
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/Gradle/Gradle系列(三)_Gradle配置构建和渠道包.md
Gradle系列(四) Gradle插件
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/Gradle/Gradle系列(四)_Gradle插件.md
Gradle系列 插件练习-动态移除权限
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/Gradle/Gradle系列_插件练习-动态移除权限.md
手把手教大家用Transform API和ASM实现一个防快速点击案例 https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/Gradle/手把手教大家用Transform_API和ASM实现一个防快速点击案例.md
Android进程间通信: 深入浅出AIDL
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/多进程/AIDL详解.md
Android进程间通信: Messenger详解
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/多进程/Messenger详解.md
Android进程间通信: Binder详解
https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/多进程/Binder详解.md
硬核!Android 应用启动全流程深度剖析!(进程创建+消息机制+Activity组件管理+Application和Activity初始化+UI布局与绘制+RenderThread渲染+SurfaceFlinger合成)
https://mp.weixin.qq.com/s/b6-leHKQZkuxkjll-1109A
Choreographer原理及应用
https://blog.csdn.net/xfhy_/article/details/115436765?spm=1001.2014.3001.5502
终于懂了,屏幕刷新 https://juejin.cn/post/6863756420380196877
View工作原理 https://juejin.cn/post/6854573212374663182
编译基础 https://juejin.cn/post/6844904106545414157
Android插件化原理(一)Activity插件化
https://juejin.cn/post/6844903613865672718
ClassLoader http://liuwangshu.cn/tags/ClassLoader/
hencoder全部Kotlin部分 https://rengwuxian.com/tag/kotlin/
hencoder全部自定义View部分
https://rengwuxian.com/tag/custom-view/
协程原理 https://juejin.cn/post/6862548590092140558
flow https://juejin.cn/post/6914802148614242312
反思|官方也无力回天?Android SharedPreferences的设计与实现 https://juejin.cn/post/6884505736836022280
ActivityThread的理解
https://blog.csdn.net/hzwailll/article/details/85339714
了解AMS http://liuwangshu.cn/tags/ActivityManagerService/
Android Gradle 自定义Task 详解
https://blog.csdn.net/zhaoyanjun6/article/details/76408024
编译打包流程 https://juejin.cn/post/6844904106545414157
Android Gradle 看这一篇就够了
https://juejin.cn/post/6844903446814916621#comment
4. 技术面试真题
公司1:
包体积优化
Handler原理
如何退出app
synchronized和lock
鸿蒙了解过吗
Flutter了解过吗,Compose呢
跨进程通信,线程通信
组件化是怎么做的
做过的项目,主要负责什么
担任的角色
最难的是什么?怎么解决的
开发流程是怎么样的?有做设计文档吗?
职业规划,为什么做安卓?鸿蒙有了解吗?
平时怎么学习的?最近学了什么?给工作带来了哪些好处?
看过哪些技术书籍
平时有什么爱好
对你想要去的公司团队有什么要求?或者说你想去什么氛围的项目组?
公司2:
sleep和wait区别
mvp
组件化
Livedata,ViewModel原理
内存优化
启动优化
Leakcanary原理
换肤原理
怎么Hook AMS
公司3:
Volatile、synchronized、原子类的原理
数据库优化是怎么做的
性能优化
Kotlin伴生对象和init
斐波拉契序列
反转链表
公司4:
Fragment生命周期
屏幕刷新机制
binder理解
bindService校验: 权限,包名
https的原理
响应式编程
热修复:class和资源
invalidate 和 postInvalidate区别
Handler原理,sendMessageDelayed是怎么实现的,为什么不卡主线程,底层是如何通知进程这边恢复阻塞的
Java掌握到什么程度了,Kotlin呢?Android呢?
响应式编程
看过哪些书?推荐一本你觉得不错的书,为什么不错
Android最近这2年值得关注的框架
敏捷开发模式
你给你自己的水平打分,计划怎么完善和精进自己的技术栈
公司5:
app启动过程+Activity启动过程,Activity启动过程中的LaunchMode的原理
Handler
java 方法重载问题,泛型相关
卡顿优化,冷启动优化,线上监控方式
慢函数线上监控
公司6:
3个线程如何依次执行
设计一个图片加载库,Lrucache原理,LinkedHashMap实现
lifecycle,ViewModel原理
View事件分发
公司7:
gc roots
JVM垃圾回收算法,Android虚拟机垃圾回收算法
分代回收思想
Java类加载机制
线程池有几种,分别是什么特征,自定义线程池需要注意什么,核心线程数是多少
HashMap原理(红黑树会退成链表吗?什么情况下?),ConcurrentHashMap原理,Hashtable原理
StringBuilder和StringBuffer原理
反射原理及其优缺点
泛型拿来做什么的
synchronized用法及原理,1.6做了哪些优化,Mark word
常用的三方库原理,随便挑一个说
换肤原理
动画有哪几种,属性动画原理,vsync
View绘制流程
短时间内多次调用requestLayout,哪些View会重绘
冷启动优化
包体积优化
插件化原理,startActivity
MVC,MVP,MVVM
requestLayout流程
算法1:反转单词
算法2:环形链表求环入口节点,不准用快慢指针,O(1)空间复杂度,O(n)时间复杂度,可修改链表节点的指针和数据。不能在链表节点中新增属性
公司8:
说一下项目的架构,哪一块是你主要负责的?说一下是怎么设计的
Livedata原理
Handler原理
组件化传递大数据
单例里面的数据线程安全
内存优化,卡顿优化,冷启动优化
怎么检测已发生了内存泄露的对象?不知道那个对象是谁
协程和RxJava原理,区别
公司9:
View绘制流程
事件分发流程,外部拦截法,内部拦截法
Kotlin协程,协程原理,怎么开协程,怎么切线程
ViewPager内部View高度不一致,怎么解决
startActivity流程
启动优化,包体积优化
LiveData原理
Gradle 马甲包
换肤原理
协程状态机
let和also区别
MVVM