一些小米、字节面试题分享~~

476 阅读4分钟

小米

应用商店部

1.Java的基本数据类型
2.HashMap实现原理
3.多线程数据结构
4.手写JAVA单例模式
5.Kotlin单例的原理
6.内存泄漏的处理方案
7.单例内存泄漏处理
8.持有外部引用导致了内存泄漏的解决方案
9.弱引用
10.单例内存泄漏的根源,GCRoot
11.为什么单例持有对象不释放
12.多进程单例失效
13.进程和线程的区别
14.在多线程单例正常,多进程单例不正常
15.多进程
16.其他的GCRoot(内存泄漏)方式
17.handler内存泄漏
18.handler的message被什么持有
19.handler的postDelay实现
20.handler工作流程
21.handler适用场景
22.Android源码Activity中使用Handler
23.View中使用Handler
24.View中的Handler.post执行流程,Message运转
25.Kotlin的协程
26.Kotlin业务开发和页面绑定
27.Kotlin取消协程
28.Kotlin协程生命周期绑定
29.Kotlin自动取消协程
30.Kotlin对于协程对象处理
31.Jetpack ViewModel
32.ViewModel初始化方式
33.ViewModel初始化方式不同的区别
34.ViewModelProvider和ViewModelProviders
35.线程池
36.什么方式进行JS交互
37.JS调用android方法
38.ExoPlayer用过哪些相关功能
40.RTMP协议
41.三方框架的演变和追踪
42.Retrofit设计模式
43.Android反编译
44.Android为什么设计四大组件
45.Activity启动流程
46.启动模式CLEAR_TOP,表现形式
47.多进程可能会导致出问题的地方
48.多进程数据传输方式
49.SP多进程通信
50.SP同进程并发
51.锁
52.后台服务类似 Service,IntentService
53IntentService原理
54.git rebase的作用
55.手写二分查找

应用商店部

1.JetPack用到那些组件
2.LiveData源码的理解
3.LiveData在发送事件的过程中值被修改,会有什么结果
4.LiveData强制刷新相应事件如何执行
5.Retrofit原理
6.okHttp的拦截器原理
7.okHttp的拦截器内容
8.锁的升级过程
9.多线程相关
10.线程池的阻塞队列
11.volitile原理
12.volitile内存屏障
13.CPU如何保证缓存一致性
14.一个CPU的缓存发生了改变,如何通知其他CPU进行改变
15.硬件加速原理,用了什么硬件,加速了什么内容
16.View的绘制流程
17.Android 5.0以后 View绘制流程的改变内容
18.CAS
19.Unsafe的了解
20.对flutter的了解
21.View嵌套的优化
22.ConstraintLayout为什么性能更好,什么算法原理
23.内存优化
24.卡顿优化
25.加载一个布局,有什么思路让布局加载更快(减少嵌套层级是一种方案)
26.加载View的过程中有IO和反射操作,优化如何从这个方向进行优化
27.设计模式
28.ConcurrentHashMap原理

字节跳动

部门A

1.String的最大长度
2.==和equals
3.Java的引用类型
4.弱引用使用场景
5.ConcurrentHashMap实现原理
6.手写线程安全的单例模式
7.JAVA语言线程不安全
8.JVM角度为什么多线程不安全
9.List线程
10.cpu线程和java线程
11.Kotlin和JAVA区别比较大的地方
12.Kotlin扩展函数
13.data class 和 Gson
14.kotlin copy 与 Java clone 对比
15.kotlin object A 是什么样的单例模式
16.Kotlin协程原理
17.Kotlin挂起是什么
18.kotlin内联函数 inline
19.Kotlin其他优点
20.kotlin run和let的区别
21.Kotlin Flow
22.Kotlin SharedFlow
23.RecyclerView缓存机制
24.RecyclerView缓存对象
25.Android Focus焦点机制
26.Handler机制
27.Handler消息屏障
28.Hander死循环不引起ANR的原因
29.Message数据结构
30.广告标签加文案一共两行,代码处理
31.广告标签过多的处理逻辑
32.Jetpack组件在项目中做了什么
33.本地搜索FTS
34.IM撤回操作怎么做
35.gradle implementation和api
36.权限申请在项目中怎么做的
37.viewModel横竖屏切换不销毁
38.LiveData如何跟随事件变化
39.如何提升团队协作能力
40.二分查找

部门B

1.音视频播放的优化
2.优化播放失败率,播放失败时间
3.rtmp和m3u8的区别
4.rtmp和m3u8的结构
5.MVP到MVVM做了什么修改
6.MVVM的优势和劣势
7.MVP的优势和劣势
8.View 列表优化
9.RecyclerView原理
10.RecyclerView优化原理
11.Handler原理
12.Looper如何绑定线程
13.MessageQueue的Message数据结构
14.android手势事件分发机制
15.父布局如何拦截子布局事件
16.整个Android的View的结构
17.View的创建顺序
18.View.onMeasure原理
19.子View的onMeasure执行原理
20.onMeasure中如何处理wrap_content和march_parent
21.onMeasure时的数据结构
22.LinearLayout,RelativeLayout,ConstraintLayout优缺点
23.算法题: 给定一个数组,求最大的连续数组的和,并输出指针位置