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