【金三银四】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

关注我获取更多知识或者投稿

4540c6b31604b3f4de7729472746bf34.png

24401a49e616bf8ba4bcb6902d3d8c35.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值