【建议收藏】2021年底最新安卓面经分析,最终入职得物!

面试经历
面了一些上海二线互联网公司,例如爱奇艺,京东,喜马拉雅,得物,B站,某安,美团等等,记录了部分面试真题。大部分可以自行搜到答案,有疑问的可以留言交流~
【爱奇艺一面】

1.handler里面的native pollonce 为什么不会anr
2.对称加密和非对称加密的区别
3.布局嵌套过深会导致什么问题
4.java为什么跨平台?c是跨平台吗
5.app打包过程
6.协程挂起和线程阻塞的区别
7.so文件加载流程
8.AIDL怎么实现
9.字节码是什么
【爱奇艺二面】
和一面间隔时间太久了,放弃
【货拉拉一面】
1.简述https的握手流程,私钥加密谁都可以破解,那么有什么意义
2.oom能否try catch
3.公钥和私钥的区别
4.客户端怎么安全保存私钥
5.怎么加载一张超大图
6.采集app启动时间原理
7.exception分类。oom属于哪种分类
8.弱网 无网优化
【货拉拉二面】
1.说下项目中怎么运用MVVM
2.viewModel的源码实现
3.设计一个图片加载框架(包含内存缓存和本地缓存),参考Glide回答就行了
4.简述hashMap put方法的流程,一些细节追问:什么时候链表转树?为啥要转成树?什么时候树再次转回链表
5.英语口语如何(我面的是国际化业务)
【货拉拉HR面】
办理了居住证积分吗?balabala
【京东一面】
1.简述LinkedHashMap源码实现
2.说下Handler流程
3.handler用于线程间通信,怎么保证线程安全
4.界面有个Button,手指放上去慢慢移到Button外的区域,描述事件分发的流程
5.说下View的绘制流程,包括渲染和绘制
6.算法 两个单链表合并成有序链表,说下思路
7.组件化的实现,WMRouter调用其他模块的对应方法怎么实现的
【京东二面】
完全忘了
【京东三面】
问项目细节,你主要负责的模块,怎么设计
算法 N宫格,从左上角A出发只能向右或者向下走,求所有不同路径的条数总和。手写伪代码(用递归就可以)
【京东四面】
1.平时的上下班时间点
2.有没有使用过咱们的app,有什么建议
3.前面的3次技术面有什么感受
4.职业规划
【京东HR面】
平时的上下班时间点 balabala
【某安一面】
1.多线程同步有哪些方式
2.sycnized和lock区别,分别用于什么场景
3.线程池原理
4.线程池拒绝策略怎么自定义
5.怎么实现线程加入线程池的优先级
6.volatile底层原理?是否线程安全
7.死锁怎么发生?怎么防止死锁
8.介绍下apm,怎么捕获crash和native crash?腾讯matrix怎么统计app启动时间,页面加载时间
9.gc回收算法有哪些?分别用于什么场景
10.jvm有哪些区域?栈的作用
11.算法 三数之和
【某安二面】
1.问项目 httpdns相关:为什么要httpdns?怎么处理握手问题,ip直连能否避免dns挟持?
2.问项目 首页弹窗优先级
3.做过哪些内存优化
4.怎么全局捕获app所有异常,并且保证app不崩溃,不卡死
5.如何获取app的所有线程信息
6.怎么查找anr
7.安卓有哪些进程间通信?为什么使用binder?mmap发生在哪个阶段?怎么找到目标进程
8.leakcanary怎么检测内存泄露的
9.算法 两个栈实现一个队列
【某安三面】
1.gradle生命周期,怎么自定义插件
2.统计编译耗时插件,运行在哪个阶段?
3.描述从编译到apk的过程,以及gradle有哪些task参与其中
4.如何实现字节码插桩
5.子线程更新ui会报什么异常?从哪里抛出来的
6.子线程怎么更新textview不会crash
7.activity window view显示出来,全流程源码解析,精确到类和核心方法
8.数据库用的什么库,熟悉sql语句吗
9.mmkv为什么比sp高效,存储的数据结构是什么样
10.mmap为什么比io高效,说下实现原理
11.sp存在哪些问题?
12.hashmap put流程源码解析,链表和树转换时机?扰动函数的作用?为什么hashcode & n-1?扩容时机?
13.gc roots有哪些
14.activity有个内部类handler,描述下引用关系链路,并说明为何gcroots能访问到activity
15.加载xml和动态创建view哪个高效?为什么加载xml效率低
16.如何减少布局嵌套?jetpack compose的原理
17.recycleview缓存实现?开发中怎么优化
18.算法 给定一个字符串,输出所有不同字符组合
【B站一面】
1.一句话描述协程
2.协程只在主线程使用,怎么实现挂起和切回的
3.协程的轻量级怎么体现的
4.ViewModel源码实现,它在Activity重启后为什么恢复数据?数据保存在哪里?5.和onsaveinstancestate有啥区别
6.LifeCycle源码实现
7.LiveData源码实现,先后setValue两次,都能收到吗?
8.简述View的刷新机制,屏幕刷新信号从哪里发出来的?
9.硬件加速是否了解
10.SurfaceView的工作原理是否有了解
11.组件化相关,WMRouer为什么可以这么方便实现组件之间通信,背后原理
【喜马拉雅一面】
1.有了解过直播吗?有哪些常见协议
2.说下自定义View的一般流程
3.多个线程异步执行任务,主线程需要等待它们都完成再继续,有哪些实现方式
4.说下handler的流程,异步消息是什么?Android中哪些场景会发送异步消息?5.我们在代码中可以手动发异步消息吗
6.弹幕怎么实现?比如直播中的流星雨特效,跑车这种怎么实现出来
7.说下你开发中做过的一个动画
8.了解过SurfaceView的原理吗
9.有没有接触过Socket编程,简单说下代码实现
10.加载一张超大图怎么实现
11.补间动画和属性动画各自的原理
12.内存优化有哪些手段
13.开放性题目 开发中怎么提升整个app的稳定性
【喜马拉雅二面】
1.动态代理是怎么实现的
2.你熟悉哪些设计模式
3.画一下动态代理的类图
4.说下插件化原理
5.说下热修复的基本原理?比如QQ空间的方案和Tinker
6.算法 判断两个单链表是否相交及找到第一个交点
【喜马拉雅HR面】
对公司感觉怎么样,之前有了解过吗
是否愿意承担一些管理角色
【得物一面】
  • 狂问Kotlin相关,比如委托的实现原理,协程原理,kotlin的好处,kotlin编译流程,常用的kotlin技巧
  • app的打包流程
  • View的渲染绘制流程
【【建议收藏】2021年底最新安卓面经分析,最终入职得物!】【得物二面】
1.inflate加载view过程
2.简述okhttp源码,请求怎么管理,它的线程池怎么实现
3.apt原理
4.viewmodel为什么可以恢复数据
5.livedata可以保存多个数据吗
6.aac架构有什么优势
7.mmkv了解吗
8.算法 单链表找到倒数第K个元素
9.算法 单链表找到中间的元素(2个题都用快慢指针就可以了)
10.组件化怎么做的?WMRouter编译期间做了什么
【得物HR面】
没问什么特别的
经验tips
  1. 必考题一定要掌握!
    【必问】Handler的工作流程,源码要记牢,细节要理解透,比如怎么唤醒主线程的,while为啥不会阻塞主线程
    【必问】View的绘制流程,包括渲染和View本身的绘制3部曲
    【必问】MVVM的含义,ViewModel+LivaData+LifeCycle的源码实现
    【必问】自定义View的一般实现流程
    【必问】内存泄漏怎么排查,OOM怎么排查
    【必问】你做过哪些性能优化
    【必问】Retrofit的实现,动态代理
    【必问】组件化相关,WmRouter的原理
    【高频】ANR怎么排查,有哪些原因
    【高频】APP打包流程
    【高频】kotlin常见知识点的原理,如协程,委托,扩展函数,编译流程
    【高频】Android有哪些跨进程通信,AIDL的代码实现
    【高频】怎么加载一张超大图
    【高频】OkHttp的线程池实现,Java线程池原理,拒绝策略怎么自定义
2.算法准备
有时间就刷剑指offer66道题目,没时间就掌握一般的套路,回答一些常见题目基本够了。
3.关于性能优化
你做过哪些性能优化?这个点也是经常被问到,我的建议 不要随意把别人博客的性能优化当成自己做过的,很多都是纯KPI项目,他们可能自己都没去实践。面试官一听就知道你在瞎说,挑一些相对靠谱的结合自己项目说下,然后拓展一下还未实现但是准备去做的。
写在最后
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。所以,出去面试时先看看自己复习到了哪个阶段就好。
下面开始进入正文,以下是我进阶学习所积累的历年爱奇艺,京东,喜马拉雅,得物,B站,某安,美团等公司2021年度的高频面试题,希望对你有帮助。
第一章 Android 高频面试之必考Java基础
1,面向对象和面向过程的区别 2,面向对象的特征有哪些 3,解释下Java的编译与解释并存的现象 4,简单介绍下JVM的内存模型 5,简单介绍下Java的类加载器 6,谈一下Java的垃圾回收,以及常用的垃圾回收算法。 7,成员变量和局部变量的区别 8,Java 中的方法重写(Overriding)和方法重载(Overload)的含义 9,简单介绍下传递和引用传递 10,为什么重写 equals 时必须重写 hashCode 方法
【建议收藏】2021年底最新安卓面经分析,最终入职得物!
文章图片

11,接口和抽象类的区别和相同点是什么 12,简述下HashMap 13, CurrentHashMap 14,介绍下什么是乐观锁、悲观锁 15,谈谈对Java线程的理解 16, Synchronized、volatile、Lock并发 17,锁 18,谈谈你对Java 反射的理解 19, 注解 20,单例
【建议收藏】2021年底最新安卓面经分析,最终入职得物!
文章图片

第二章 Android 面试之必问Android基础
1,Activity:生命周期、启动模式、启动流程
2,Fragment:生命周期、与Activity传递数据 3, Service:启动方式、生命周期、Service不被杀死 4, BroadcastReceiver 5, ContentProvider
【建议收藏】2021年底最新安卓面经分析,最终入职得物!
文章图片

6,Android View知识点:测量流程、事件分发、MotionEvent、Draw 绘制流程等等 7,Android进程:进程生命周期、多进程、多进程通信方式 8,序列化 9,Window 10,消息机制:Handler 机制、工作原理 11, RecyclerView优化:卡顿场景、其他优化策略
【建议收藏】2021年底最新安卓面经分析,最终入职得物!
文章图片

第三章 Android 面试之必问高级知识点
1,编译模式:AOT优点、垃圾回收 2,类加载器:类加载器分类、双亲委托模式、Android的类加载器 3,Android Hook 4,代码混淆:Proguard、混淆规则、混淆模版 5,NDK:JNI基础、NDK开发基本流程、CMake 构建 NDK 6,动态加载:插件化、热修复
【建议收藏】2021年底最新安卓面经分析,最终入职得物!
文章图片

第四章 Android 面试之必问性能优化
1,启动优化:冷启动/热启动和温启动的优化、代码方面的优化 2,UI渲染优化:CPU/GPU、过度绘制、解决自定义View的OverDraw、Hierarchy Viewer 3,内存优化:内存管理、内存泄漏、大图内存优化、线上监控 4,网络优化 5,耗电优化:优化方向、耗电监控、如何监控耗电 6,安装包优化:常用的优化策略、资源压缩、资源动态加载
【建议收藏】2021年底最新安卓面经分析,最终入职得物!
文章图片

第五章 Android 面试之开源库分析
1,HTTP与缓存理论:HTTP缓存策略、强制缓存、对比缓存 2,OKHttp:OKHttp请求流程、OKHttpClient、同步请求、异步请求、CacheInterceptor网络请求缓存处理 3,Retrofit 4,Glide 6,EventBus
【建议收藏】2021年底最新安卓面经分析,最终入职得物!
文章图片

第六章 算法面试题汇总
6.1 排 6.2 二叉树 6.3 链表 6.4 栈 / 队列 6.5 二分搜索 6.6 哈希表 6.7 堆 / 优先队列 6.8 二叉搜索树 6.9 数组 / 双指针 6.10 贪心 6.11 字符串处理 6.12 动态规划 6.13 矩阵 6.14 二进制 / 位运算 6.15 其他:两个大文件中找出共同记录、ip地址与int类型的转换、整数反转、LRU缓存策略
【建议收藏】2021年底最新安卓面经分析,最终入职得物!
文章图片

需要完整版《Android2021年度的高频面试真题》的朋友可以点击这里免费领取!

    推荐阅读