字节,快手,美团,支付宝,oppo,滴滴 android面经

这是去年10-12月各大公司面经,一直想发出来分享下。除了快手都发offer了,最后选择了字节

选择字节的原因有两点吧
1. 我是一个理想主义者,一直衷心于教育赛道,之前在网易也是做教育的,在字节也在大力教育部门,
顺便提下大力教育还在持续热招各种岗位哦。下图直接扫码内推,填写内推码(WUAGU6P)欢迎你来大力哦

2. 这个岗位在成都。哈哈

下面是我的面经

  • 字节跳动
    • 一面
      • 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>和<permission>的区别
          一个是系统的权限,一个是自定义的权限
    • 三面
      • 两道算法
        • 洗牌问题
        • 接雨水
      • 两道设计
        • 面向对象原则
        • 用代码描述你觉得最有设计感的项目
  • 快手
    • 一面
      • 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的区别
      • 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的序列化没答上来
      • okHttp
        • intercepted记录日志
        • request和response分别是哪个interceptor
      • 性能优化
        • 你是怎么分析ui卡顿的
        • ui卡顿的底层原理
      • 消息队列相关
        • message如何知道用哪个handler
      • view的绘制
        • measureSpec
          • measureSpec中的mode和size的对应关系
      • http
        • range请求头含义是什么
        • TLS1.2升级到TLS1.3,升级了什么
      • 系统如何判断ANR
      • 获取屏幕高度的两种方式
      • 事件
        • 悬浮窗拖动如何实现的
      • 泛型与反射
        • 说说你对泛型的理解
        • 反射能找到带参数的构造器么?
    • 二面
      • 有点忘了
      • webview如何加载的
      • i++在jvm执行的过程
      • dex里的class如何加载的
      • 动态代理



#面经##阿里巴巴##美团##滴滴##字节跳动##快手##Java#
全部评论
向dalao学习,这是看过最深的面经
点赞 回复 分享
发布于 2021-04-28 11:31

相关推荐

9 29 评论
分享
牛客网
牛客企业服务