OPPO暑期实习一面 + Keep暑期实习一,二,三面
OPPO一面(已offer)
- 自我介绍
- 项目介绍
- App中接入的开屏广告的性能问题
- Recyclerview的缓存复用
- 讲一下常用的布局,线性布局与相对布局的使用场景
- Android进程间通信方式
- 数据持久化技术
- SQLite与ROOM的区别
- Binder底层原理
- Glide缓存机制
- 用到的Material Design布局
- 三个线程,如何在最后一个线程任务执行结束后获取数据
- 讲一下IO,如何按行读取,会使用哪些类
- 反问
Keep一面(已offer)
- 自我介绍
- 学习安卓多久
- 什么是线程安全?怎样解决线程安全?
- 除了加锁还可以怎样保证线程安全(CAS)
- wait与sleep的区别
- 详细介绍wait,当前线程内可不可以自动被唤醒
- 线程池的核心参数,详细介绍这些参数
- 泛型檫除,详细介绍
- 对象的创建过程?jvm内存模型
- 滑动冲突的处理
- 是不是新创建的对象都分布在新生代?什么情况下不分布在新生代
- Activity生命周期,A->B生命周期回调顺序?为什么?
- 有没有过自定义view
- 建议多看源码,AMS
- 算法:环形链表的入口点
Keep二面
- 自我介绍
- 项目介绍
- ActivityLifeCycleCallbacks的使用场景
- 什么是软引用?软引用的使用场景
- 多进程导致单例模式失效的原因?怎样解决
- Recyclerview与Listview的区别?Recyclerview的横向滑动与竖向滑动的设计运用了什么设计模式?
- 如果让你为Recyclerview设计一个刷新的功能该怎么设计
- DCL单例模式为什么要两次判空
- 什么是内存泄漏
- 怎样解决handler引起的内存泄漏
- MVC,MVP,MVVM的区别
- 你觉得Viewmodel与LiveData发挥着什么样的作用
- 还会哪些Android技术
- Compose的原理
- Compose与Flutter的区别
- 反问
Keep三面
- 自我介绍
- 项目中遇到的难点
- 如果让你自己设计一个生命周期监听的机制,有哪些想法
- 平常怎么学Android
- 看过哪些源码
- 平常学技术的时间多不多
- 反问
- (三面主要是一些很开放的问题,没有问八股文或者其他明确的技术问题,不过这些开放性的问题也追问了蛮久)()