面试经验
面了一些上海二线互联网公司,例如爱奇艺,京东,喜马拉雅,得物,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 的渲染绘制流程
【得物二面】
1.inflate 加载 view 过程
2. 简述 okhttp 源码,申请怎么治理,它的线程池怎么实现
3.apt 原理
4.viewmodel 为什么能够复原数据
5.livedata 能够保留多个数据吗
6.aac 架构有什么劣势
7.mmkv 理解吗
8. 算法 单链表找到倒数第 K 个元素
9. 算法 单链表找到两头的元素(2 个题都用快慢指针就能够了)
10. 组件化怎么做的?WMRouter 编译期间做了什么
【得物 HR 面 】
没问什么特地的
教训 tips
- 必考题肯定要把握!
【必问】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 办法
11,接口和抽象类的区别和相同点是什么 12,简述下 HashMap 13,CurrentHashMap 14,介绍下什么是乐观锁、乐观锁 15,谈谈对 Java 线程的了解 16,Synchronized、volatile、Lock 并发 17,锁 18,谈谈你对 Java 反射的了解 19,注解 20,单例
第二章 Android 面试之必问 Android 根底
1,Activity:生命周期、启动模式、启动流程
2,Fragment:生命周期、与 Activity 传递数据 3, Service:启动形式、生命周期、Service 不被杀死 4,BroadcastReceiver 5,ContentProvider
6,Android View 知识点:测量流程、事件散发、MotionEvent、Draw 绘制流程等等 7,Android 过程:过程生命周期、多过程、多过程通信形式 8,序列化 9,Window 10,音讯机制:Handler 机制、工作原理 11,RecyclerView 优化:卡顿场景、其余优化策略
第三章 Android 面试之必问高级知识点
1,编译模式:AOT 长处、垃圾回收 2,类加载器:类加载器分类、双亲委托模式、Android 的类加载器 3,Android Hook 4,代码混同:Proguard、混同规定、混同模版 5,NDK:JNI 根底、NDK 开发根本流程、CMake 构建 NDK 6,动静加载:插件化、热修复
第四章 Android 面试之必问性能优化
1,启动优化:冷启动 / 热启动和温启动的优化、代码方面的优化 2,UI 渲染优化:CPU/GPU、适度绘制、解决自定义 View 的 OverDraw、Hierarchy Viewer 3,内存优化:内存治理、内存透露、大图内存优化、线上监控 4,网络优化 5,耗电优化:优化方向、耗电监控、如何监控耗电 6,安装包优化:罕用的优化策略、资源压缩、资源动静加载
第五章 Android 面试之开源库剖析
1,HTTP 与缓存实践:HTTP 缓存策略、强制缓存、比照缓存 2,OKHttp:OKHttp 申请流程、OKHttpClient、同步申请、异步申请、CacheInterceptor 网络申请缓存解决 3,Retrofit 4,Glide 6,EventBus
第六章 算法面试题汇总
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 缓存策略
须要完整版《Android2021 年度的高频面试真题》的敌人能够点击这里收费支付!