【金三银四】2022 Android面经实录

复习点

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

你可能感兴趣的:(【金三银四】2022 Android面经实录)