【金三银四】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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容