这是我参与更文挑战的第1天,活动详情查看: 更文挑战
记录面试过程中被问的问题 简历投递薪资范围 25-30 后面根据问题输出文章,希望能坚持下去。
此次面试准备:
- 书籍《Android 进阶解密》快刷2遍。
- 着重学习四大组件启动流程,并跟代码熟悉流程(8.0和10.0代码有区别)。
- View的绘制流程,结合问题(View.post 为什么能拿到宽高)看源码,事半功倍
- Handler、Looper、MessageQueue、Message、ThreadLocal、同步屏障、IdleHandler和主线程Handler 这一大套Handler知识点,必须掌握。
- 各种优化,启动优化、包体积优化等等性能优化。
- 锁、线程安全问题 Synchornized、volatile、线程池。
- Kotlin 协程原理。
- Kotlin 高阶函数。
- Jetpack 常用组件原理,LiveData、ViewModel。
- 常用开源库原理,Retrofit、Glide、OkHttp、Rxjava等等。
- 数据结构,HashMap、ArrayList等常用的
- LRU算法原理
- 设计模式
差不多了,还有很多只是需要学习,这次面试准备,着重看了wanandroid 中的每日一问模块 看小缘大神回答的很有收获,能学习很多知识点。加油加油!
A公司:
- ViewModelScope 什么时候关闭的
- LiveData和EventBus的优缺点
- Glide原理, Glide的BitmapPool的设计为了解决什么问题
- 按下列表item的button 同时上下滑动RecyclerView 事件是怎么处理的
- 启动优化
- 插件化,资源插件化的原理
- View.post() 为什么能拿到view的宽高
- Kotlin 的单例怎么写
- Kotlin协程怎么做并发
- synchornized 是怎么工作的
- HashMap 原理,怎么用HashMap做到线程安全
- OkHttp的链条流程
- 用到了哪些设计模式
- 做了哪些版本适配
- 数据结构
- Http协议
- Json
B公司:
- LiveData怎么避免粘性消息的
- HashMap 怎么获取hash值
- ArrayList和LinkedList区别
- 四种启动模式
- kotlin高阶函数
- kotlin扩展函数底层原理
- Kotlin inner 关键字
- 协程原理
- kotlin object实现的单例线程安全吗
- 怎么做适配 AutoSize原理
C公司:
- 混淆的原理
- 签名v1、v2、v3的区别
- 性能优化
- 优化图片加载
- 哪些数据结构能做到线程安全
- 视频格式
- 32/64位平台下char、short、int、long、指针等类型分别占多少字节
- 自己做一个即时聊天的功能需要怎么设计
D公司:
- Android应用启动流程
- 资源热修复、插件化
- class热修复
- LeakCanary原理
- EventBus原理
- HashMap
- Kotlin协程原理
- Intent和PendingIntent
- EventBus 2.0和3.0的区别
E公司:
- HashMap原理
- 马甲包怎么打
- 怎么获取View的宽高
- Glide的怎么做生命周期相关管理
- Glide的缓存结构
F公司:
- ViewModel原理
- LiveData原理
- DataBinding的注解
- 说说线程
- 死锁怎么产生
- 线程池的数据结构是什么
G公司:
- 说说activity的生命周期
- Service的启动流程
- 包体积优化
- Kotlin有什么优点
H公司:
- 说说voletile
- java中都有哪些锁
- 线程池中核心线程和非核心线程的区别
- 核心线程在什么情况下会被销毁
- 说说Looper
- 怎么判断当前线程是主线程
- 四种引用
- Activity A-B的生命周期
- SP apply和commit的区别
- 广播有哪几种
- Service注册方式
- OkHttp的源码看过吗
- 子view显示可以超过父view吗,怎么超过
- 用什么方式实现跨进程通信
- 用过ViewStub吗
I公司:
- MVP 和 MVVP 的区别
- 死锁
- 算法:25匹马
- 用数组实现队列
- 最近有没有解决疑难问题 什么思路
- 从磁盘加载大图显示
- 图片怎么压缩
- 565和8888的区别 底层原理
- Glide加载图片原理
- StackOverFlow 是什么异常 怎么产生的
J公司:
- 即构和声网有什么区别
- Retrofit 里能学到什么
- 简述handler
- ThradLocal怎么实现的
- Message做什么的
- 为什么要用ObtainMessage
- Idle 有没有遇到什么问题
- Activity启动流程
- AMS什么时候启动的
- ActivityThread干啥用的
- 为什么Zygote需要socket通信
- ActivityThread啥时候启动的 为什么要通过抛异常方式
- ASM和APT的区别
K公司:
- LiveData
- MVC MVVM
- 内存泄漏的原因和常见内存泄漏的解决方案
- RecyclerView加载多图速度优化方案
- Glide和Picasso的区别
- Kotlin使用期间有没有遇到坑