这是去年10-12月各大公司面经,一直想发出来分享下。除了快手都发offer了,最后选择了字节
选择字节的原因有两点吧
- 我是一个理想主义者,一直衷心于教育赛道,之前在网易也是做教育的,在字节也在大力教育部门。
- 这个岗位在成都。哈哈
下面是我的面经
字节跳动
一面
MVC,MMVM,MVP
MMVM如何解决MVP中存在的问题
内存泄漏
内存泄漏的几种情况
LeakCancary分析内存泄漏的原理
手写单例模式,并分析
算法
找到两个数组中的两个元素的和等于某个值
二面
activity
onSaveInstance
service
StartService和BindService的生命周期
求浮点数的平方根
Binder的原理
设计模式
工厂模式
抽象工厂模式和普通工厂模式
建造者模式
启动模式有几种
共享内存原理
java能实现共享内存么
kotlin协程的四个dispatcher及区别
三面
window,decorview,ViewRootImpl的关系
面试官 想让你回答如何window和windowManager如何联系的。viewRootImpl是联系window和decorview的纽带
进程间的通信方式
AIDL的用法
用法和原理
事件分发
onIntercept在哪用
事件分发底层的产生
RecycleView的用法
里面的各种Manager作用
wake lock:使屏幕常亮
Activity是如何被限制到状态栏和导航栏之下的
canvas
canvas的save和restore的作用
canvas的density有什么作用
vsync
vsync是如何生成的
android中异步一般怎么实现
android中内存泄漏发生的情况
如何去获取view的宽高
悬浮窗
如何实现一个悬浮窗
一个悬浮窗悬浮在顶层,覆盖了底层的app的启动图标,如果让事件启动图标接收到click事件
Android M之前与之后的权限变化
ContentProvider
使用
如何找到该contentProvider的
RxJava中map和flatmap的区别
view的绘制
viewgroup是如何刷新的
onMeasure,onlayout,onDraw分别起什么作用
onLayout的时候可以layout自己么?
AndroidManifest
<uses-permission>{=html}和<permission>{=html}的区别
一个是系统的权限,一个是自定义的权限
三面
两道算法
洗牌问题
接雨水
两道设计
面向对象原则
用代码描述你觉得最有设计感的项目
快手
一面
viewBinding的原理
Recycleview滑动怎么优化
缓存设计
一级缓存和二级缓存的区别
LayoutManager原理
绘制
onMeasure描述一下
onDraw描述一下
invalidate一定会调用onDraw么
事件分发
事件是由谁分发的
fragment
销毁与恢复
与Activity的通信
Activity
Activity的生命周期
销毁与恢复
国际化插件
hashmap
2^n的原因(有多个原因)
扩容
22反转链表
二面
协程原理
rxjava原理
leakcanary
如何分析引用链
线程池
给你一堆数据,如何画曲线?
事件分发
责任链模式
汽车加油问题
三面
有序无序时删除链表的重复节点
都删除
保留一个
如何实现快手和抖音的整屏滑动效果
如何让运营能看懂社区文章
项目中的难点(问得很细)比如有没有遇到什呢难点呀
美团
一面不能讲4.4.0大改版
一面
线程池原理,几个参数
线程池里面的阻塞队列是什么类型
设计模式
状态模式和策略模式的区别
sleep和wait的区别
android序列化
Parcelable与Serializable
Handler
Hashmap
深拷贝与浅拷贝
如何实现深拷贝
sync和Reenterlock
遇到异常的区别
可重入锁和不可重入锁
funA,funB,funC,funD
postInvalidate和Invalidate的区别
requestLayout
两个有序链表合并
anr 分类及原理
二面
基本都是问的项目
三面
基本问的项目
支付宝
一面
项目
viewmodel原理
用了哪些jetpack的东西
livedata为何具有生命周期感知能力
二面
三面
shareperference如何保证线程安全,
为什么不是进程安全的
如何实现进程安全的
viewmodel是如何解决内存泄漏问题的?能解决么
mmkv共享内存和binder的区别
magic ocr项目
有做过多线程开发么
room如何实现orm的
kotlin和java产物一样么有
各种图片格式的区别
如何保证内存与文件的同步
开一个线程commit,commit不用加锁么?
bitmap
怎么确定bitmap被复用了
一张图片占用的内存大小
四面
动态加载一个recycleview item的方式
动态下发国际化
阿里(简历被捞了 淘宝特价版)
项目
进程通信方式了解哪些
binder原理
服务端了解么
View的显示原理?
Https原理
说下中间人攻击
Flutter了解么
前端了解么?
国际化文案的困难
leakcanary原理
Oppo(Camera应用开发)
问了太多关于底层渲染的东西
一面
surfaceView为撒更快
surfaceview和textureview的区别
surfaceView和普通View的区别
sendBroadCast会阻塞么?
多对多项目的设计
这个不好讲项目的难点
内存的分类
android的广播
你对android相机系统怎么理解?
内存泄漏分析
二面
基本问的项目,然后聊了聊
快手(被捞了,消费事业部)
一面
recycleView的多级缓存
cacheView如何去确定该用哪个viewHolder
每层缓存的容量是多少
view绘制流程
Relativelayout如何会测量几次子view,为什么?
测量两次,因为横竖方向均有约束,比如A根据B来定位横向,B根据A来定位纵向。
view的过渡绘制
多个嵌套view,给某个view设置background,会有过渡绘制么
jni
c++层如何调用java层的函数
rxjava
observeon和subscribeon的区别
单例模式
latinvar和by lazy的区别
删除倒数第k个链表
二面
application的context和Activity的context的区别
.9图
应用场景
拉伸的场景
Activity的生命周期
销毁,恢复的生命周期
HashMap
扩容
内存泄漏的理解
handler持有引用链,考察gcRoot
RecyclerView的理解
动画
几种动画
属性动画和view动画的区别
属性动画的优势
ArrayMap与SparseArray
原理
优势在什么地方
Fragment
arguments为什么不被销毁
volidate的考察
Intent
intent里面可以传递哪些数据对象
getIntent得到的和setIntent是否是同一个实例
intent会被序列化,序列化的对象和反序列化的对象肯定不是同一个
算法
生产者消费者
两个线程轮流i++
合并两个有序链表
递归
循环
滴滴
一面
序列化
java序列化原理
只知道android pracleable的原理,java的序列化没答上来