1. 第一份
- 算法:链表的逆置
算法思路不正确 - Java线程池
照着源码讲了一遍
追问:LinkedBlockingQueue有什么作用?
讲的不清楚
追问:线程同步有什么办法?
只回答了锁
追问:锁有哪些?可用于什么场景?
synchronized、lock、可重用锁、CAS
基本原理回答正确,但不清楚具体场景 - ThreadLocal作用
不清楚 - Handler使用的时候需要注意什么问题?
内存泄露
内部类、弱引用,静态内部类
onDestroy移除消息
追问:Handler都能干什么事?
卡顿丢帧检测 - Java里面的几种引用区别?使用场景
原理回答正确,使用场景理解不够深入 - 卡顿检测和优化
检测方法:BlockCanary、TraceView、屏幕刷新机制
造成卡顿的原因回答正确
优化:扁平化布局、过渡绘制、刷新次数区域控制
主线程耗时操作、SP初始化、不要放大对象,不要频繁提交,减少IO操作
自定义View的onDraw方法 - SP内部数据结构
XML文件,map kv形式
追问:线程安全吗?
回答正确
追问:进程安全吗?
不安全
追问:怎么保证进程安全?
包一层ContentProvider
追问:用SQLite可以吗?为什么
应该可以 - 进程间通信的办法
AIDL,Binder,除了Binder不知道其他的 - LruCache
基本原理回答正确
追问:get/put方法设计的时候需要注意什么问题?
LinkedHashMap不安全,加同步锁 - HTTPS
基本流程正确,但不完善,不知道如何优化 - Kotlin遇到的坑?
没遇到什么坑,只觉得有好处
追问:有什么好处
简洁、语法糖
追问:object和compaion object区别
回答的比较片面
追问:object实现单例的原理
回答错误
2. 第二份
- 2sum算法
给出了双重循环的办法,但算法不完善
追问:是否有更快的办法?
没想法 - I am a student变成student a am I
没想法 - Java的HashMap的哈希冲突
回答正确
追问:HashMap和HashTable,ConcurrentHashMap
回答正确,对比详细 - LinkedBlockQueue的作用
基本原理回答正常,使用场景基本正确 - ThreadLocal作用,使用时需要注意什么问题?
基本原理回答正确
注意的问题:内存泄露相关,具体说的不太清楚 - 几种引用形式的区别
内存控制上的区别回答正确、详细
追问:具体使用场景
能答出Weak的使用场景 - Bitmap使用的时候注意的问题
颜色配置、过大(缩放、BitmapFactory、option)、及时recycle
追问:Recycle了怎么办?
磁盘缓存
追问:Bitmap的OOM避免
能说出基本的
追问:Android 6.0和9.0上的Bitmap加载有什么区别
基本方向正确,但不完全正确
追问:565和8888区别
占用空间问题,透明度信息
追问:Bitmap在Android上变绿的问题,原因、解决?
不了解 - MessageQueue
Java层回答比较详细
追问:死循环为什么不会阻塞主线程?
回答错误
追问:操作系统上对应什么IO复用模型?
不太清楚 - 图片加载框架的节流设计
按需加载,其他不了解,提示了以后,webp
追问:怎么知道缓存?
不清楚
追问:其他节流格式
回答不完全正确
追问:png和jpeg区别
不清楚 - ConstraintLayout、LinearLayout、FrameLayout、RelativeLayout性能&使用场景
基本测量、layout原理对比回答正确
使用场景回答比较抽象,不是很具体
追问:列表卡顿优化
注意onDraw方法、避免重复创建
追问:结合以上几种Layout
需要看具体使用场景,基本方向正确,但不是很具体 - http2
不太清楚 - HTTP状态码
301、302区别:不清楚
404、403区别:404回答基本正确、403不清楚