面试经历
面了一些上海二线互联网公司,例如爱奇艺,京东,喜马拉雅,得物,B站,某安,美团等等,记录了部分面试真题。大部分可以自行搜到答案,有疑问的可以留言交流~
【爱奇艺】一面
1.handler里面的nativepollonce 为什么不会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调用其他模块的对应方法怎么实现的
【京东二面】
完全忘了
【京东三面】
1.问项目细节,你主要负责的模块,怎么设计
2.算法 N宫格,从左上角A出发只能向右或者向下走,求所有不同路径的条数总和。手写伪代码(用递归就可以)
【京东四面】
1.平时的上下班时间点
2.有没有使用过咱们的app,有什么建议
3.前面的3次技术面有什么感受
4.职业规划
【京东HR面】
1.平时的上下班时间点 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.gcroots有哪些
14.activity有个内部类handler,描述下引用关系链路,并说明为何gcroots能访问到activity
15.加载xml和动态创建view哪个高效?为什么加载xml效率低
16.如何减少布局嵌套?jetpack compose的原理
17.recycleview缓存实现?开发中怎么优化
18.算法 给定一个字符串,输出所有不同字符组合
【B站一面】
1.一句话描述协程
2.协程只在主线程使用,怎么实现挂起和切回的
3.协程的轻量级怎么体现的
4.ViewModel源码实现,它在Activity重启后为什么恢复数据?数据保存在哪里?和onsaveinstancestate有啥区别
5.LifeCycle源码实现
6.LiveData源码实现,先后setValue两次,都能收到吗?
7.简述View的刷新机制,屏幕刷新信号从哪里发出来的?
8.硬件加速是否了解
9.SurfaceView的工作原理是否有了解
10.组件化相关,WMRouer为什么可以这么方便实现组件之间通信,背后原理
【喜马拉雅一面】
1.有了解过直播吗?有哪些常见协议
2.说下自定义View的一般流程
3.多个线程异步执行任务,主线程需要等待它们都完成再继续,有哪些实现方式
4.说下handler的流程,异步消息是什么?Android中哪些场景会发送异步消息?我们在代码中可以手动发异步消息吗
5.弹幕怎么实现?比如直播中的流星雨特效,跑车这种怎么实现出来
6.说下你开发中做过的一个动画
7.了解过SurfaceView的原理吗
8.有没有接触过Socket编程,简单说下代码实现
9.加载一张超大图怎么实现
10.补间动画和属性动画各自的原理
11.内存优化有哪些手段
12.开放性题目 开发中怎么提升整个app的稳定性
【喜马拉雅二面】
1.动态代理是怎么实现的
2.你熟悉哪些设计模式
3.画一下动态代理的类图
4.说下插件化原理
5.说下热修复的基本原理?比如QQ空间的方案和Tinker
6.算法 判断两个单链表是否相交及找到第一个交点
【喜马拉雅HR面】
1.对公司感觉怎么样,之前有了解过吗
2.是否愿意承担一些管理角色
【得物一面】
1.狂问Kotlin相关,比如委托的实现原理,协程原理,kotlin的好处,kotlin编译流程,常用的kotlin技巧
2.app的打包流程
3.View的渲染绘制流程
【得物二面】
1.inflate加载view过程
2.简述okhttp源码,请求怎么管理,它的线程池怎么实现
3.apt原理
4.viewmodel为什么可以恢复数据
5.livedata可以保存多个数据吗
6.aac架构有什么优势
7.mmkv了解吗
8.算法 单链表找到倒数第K个元素
9.算法 单链表找到中间的元素(2个题都用快慢指针就可以了)
10.组件化怎么做的?WMRouter编译期间做了什么
【得物HR面】
1.没问什么特别的
经验tips
- 必考题一定要掌握!
【必问】Handler的工作流程,源码要记牢,细节要理解透,比如怎么唤醒主线程的,while为啥不会阻塞主线程
【必问】View的绘制流程,包括渲染和View本身的绘制3部曲
【必问】MVVM的含义,ViewModel+LivaData+LifeCycle的源码实现
【必问】自定义View的一般实现流程
【必问】内存泄漏怎么排查,OOM怎么排查
【必问】你做过哪些性能优化,参考这个https://blog.yorek.xyz/android/paid/master/
【必问】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项目,他们可能自己都没去实践。面试官一听就知道你在瞎说,挑一些相对靠谱的结合自己项目说下,然后拓展一下还未实现但是准备去做的。
网友评论