面试题汇总

hashmap
hashmap https://blog.csdn.net/justloveyou_/article/details/62893086
hashmap扩容条件 https://blog.csdn.net/inwhites/article/details/88148328
concurrenthashmap https://blog.csdn.net/weixin_43185598/article/details/87938882
LinkedHashMap https://blog.csdn.net/justloveyou_/article/details/71713781
==、hashCode()、equals()https://blog.csdn.net/justloveyou_/article/details/52464440
拆箱与装箱 https://blog.csdn.net/qq_33591903/article/details/84259105
hashset
aidl支持数据类型
http://wed.xjx100.cn/news/38816.html?action=onClick
设计模式、设计6原则
https://blog.csdn.net/qq_41837249/article/details/115421446
binder
https://blog.csdn.net/tkwxty/article/details/112325376
https://www.jianshu.com/p/d1fac6ccee98
https://www.jianshu.com/p/485233919c15

卡顿检测分析
https://blog.csdn.net/JArchie520/article/details/106710663?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-106710663-blog-51761380.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-106710663-blog-51761380.pc_relevant_antiscanv2&utm_relevant_index=2

gradle插件开发流程(全埋点书)
虚引用监控对象回收
https://www.jianshu.com/p/78b9e3f644d2
invalidate 与 requestlayout区别
https://blog.csdn.net/hxl517116279/article/details/90410345
bugly原理
jni
leakcanary源码
https://baijiahao.baidu.com/s?id=1720106476481442866&wfr=spider&for=pc
线程死锁解决 顺序执行、更大颗粒锁A
mmkv与sp区别
https://www.jianshu.com/p/83ee82c30e53
sp:(anr原因、apply与commit区别)
https://blog.csdn.net/zsp765098084/article/details/100669449
1.直接i/0
2.采用xml文件存储数据
3.全量更新
https://blog.csdn.net/qq_22090073/article/details/103703291
oom分析
https://www.jianshu.com/p/e574f0ffdb42
handler 消息机制
https://blog.csdn.net/weixin_39952074/article/details/111249137
idlehandler
https://www.jianshu.com/p/4c2aa7b7d9b3
https://www.jianshu.com/p/50a9bbb72d4e
livedata、lifecicle
https://blog.csdn.net/lmq121210/article/details/106138580
post view.post原理
https://zhuanlan.zhihu.com/p/192856113
volatile 原子类
https://baijiahao.baidu.com/s?id=1701926281167127798&wfr=spider&for=pc
https://blog.csdn.net/qq_42370146/article/details/105559575
线程优化
https://blog.csdn.net/JArchie520/article/details/106895580?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-3-106895580-null-null.pc_agg_new_rank&utm_term=Android+hook%E7%BA%BF%E7%A8%8B%E7%9B%91%E6%8E%A7%E7%BA%BF%E7%A8%8B%E6%95%B0%E9%87%8F&spm=1000.2123.3001.4430
线程池 线程池队列 拒绝策略
https://blog.csdn.net/u014590757/article/details/80362577
https://blog.csdn.net/suifeng629/article/details/98884972
lrucache disklrucache
https://blog.csdn.net/justloveyou_/article/details/71713781
动态代理原理(使用场景)
https://www.cnblogs.com/gonjan-blog/p/6685611.html
https://blog.csdn.net/ssrmyxs/article/details/105679572
算法 二叉树遍历 排序算法
算法 二叉树 单链表 数组 字符串 相关
activity启动过程oo
view绘制流程 事件传递
性能优化 包大小优化 启动速度优化
https://www.sohu.com/a/494261723_121124376
https://blog.csdn.net/gdutxiaoxu/article/details/113977315
Android 启动优化(二) - 拓扑排序的原理以及解题思路 - 掘金 (juejin.cn)
https://zhuanlan.zhihu.com/p/63188694?utm_id=0
okhttp源码
https://juejin.cn/post/6844903557632622605
https://segmentfault.com/a/1190000013164260
retrofit源码
https://www.jianshu.com/p/097947afddaf
Arouter源码
https://blog.csdn.net/cpcpcp123/article/details/107891868
三次握手四次挥手
https://blog.csdn.net/qq_38950316/article/details/81087809

网络优化
https://blog.csdn.net/qq_33826580/article/details/109484331
https://blog.csdn.net/qq_34681580/article/details/129479290?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-129479290-blog-109484331.235v39pc_relevant_anti_t3_base&spm=1001.2101.3001.4242.1&utm_relevant_index=1

okhttp 弱网优化
https://blog.51cto.com/u_16213688/7107181

Okio 超时
https://zhuanlan.zhihu.com/p/605404642

http、https请求过程
类型擦除
https://blog.csdn.net/caihaijiang/article/details/6403349?spm=1001.2101.3001.6650.8&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-8.topblog&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-8.topblog&utm_relevant_index=11
垃圾回收机制
https://blog.csdn.net/justloveyou_/article/details/71189093
https://blog.csdn.net/justloveyou_/article/details/71216049
https://blog.csdn.net/zenmela2011/article/details/123237796
内存泄露注意点
类加载机制
https://blog.csdn.net/stven_king/article/details/56675346
repo 组件化
http://www.javashuo.com/article/p-cagmdgll-mx.html
https://blog.csdn.net/hailong0529/article/details/89392064
常见引起anr原因
CountDownLatch
https://www.jianshu.com/p/a1a73ce99526
volatile
https://www.cnblogs.com/dolphin0520/p/3920373.html
cas原理
https://blog.csdn.net/yzpbright/article/details/113384338
打包流程
https://www.jianshu.com/p/5166874a4778
android新特性
sychronize原理
https://blog.csdn.net/Sunny19991/article/details/117485173
https://blog.csdn.net/qq_43783527/article/details/114669174
生产者消费者
https://blog.csdn.net/ys_xixihaha/article/details/122983642

mmkv进程通信
aidl,a调用b耗时任务,返回
asm实现对三方sdk中线程命名
activity与fragment对应的声明周期
fragment添加原理
release包和debug包的区别

泛型原理
https://blog.csdn.net/sunxianghuang/article/details/51982979?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-51982979-blog-121066828.235%5Ev39%5Epc_relevant_anti_t3_base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-51982979-blog-121066828.235%5Ev39%5Epc_relevant_anti_t3_base&utm_relevant_index=2

混淆执行时机、在编译前还是后
dp与sp换算
ui适配
什么是一倍图二倍图
内存屏障
https://blog.csdn.net/weixin_35821291/article/details/123182329?spm=1001.2101.3001.6650.11&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-11.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-11.pc_relevant_paycolumn_v3&utm_relevant_index=14

如何计算图片占用内存的大小
https://blog.csdn.net/baidu_40389775/article/details/124112935
“Don’t zero-fill while holding a lock”是一个编程建议,特别是在多线程编程中。下面我会解释这句话的含义和背后的原因。

零填充 (Zero-fill): 这通常指的是用零值来初始化或填充内存区域的操作。
持有锁 (Holding a lock): 在多线程编程中,为了避免数据竞争,通常使用锁来保护共享资源。当一个线程持有锁时,其他线程不能访问被锁保护的资源,直到锁被释放。
“Don’t zero-fill while holding a lock”的建议是说:当你持有某个锁时,避免在这个锁的保护范围内进行零填充操作。

为什么这样做是不好的?
性能问题:零填充操作可能涉及大量的内存写操作,这可能需要很长时间。当你持有锁进行这种操作时,其他线程可能需要等待很长时间才能访问被锁保护的资源,从而导致性能下降。
增加死锁的风险:如果零填充操作需要获取其他锁,那么可能会增加死锁的风险。
不公平的资源访问:长时间的零填充操作可能会导致某些线程长时间得不到执行,从而导致不公平的资源访问。
更好的做法
在持有锁之前或之后进行零填充:你可以考虑在获取锁之前或释放锁之后进行零填充操作,这样可以避免上述的问题。
使用更细粒度的锁:考虑只锁定需要保护的部分数据,而不是整个数据结构。这样,其他线程可以并发地访问不受影响的数据部分。
优化零填充:考虑是否真的需要零填充整个区域,或者是否有更高效的初始化方法。
总之,“Don’t zero-fill while holding a lock”是一个提醒我们注意多线程编程中性能和并发性的建议

SurfaceFlinger
https://blog.csdn.net/Magic_Zsir/article/details/133993211
https://www.cnblogs.com/blogs-of-lxl/p/11272756.html

systrace
https://www.androidperformance.com/2019/12/01/Android-Systrace-Vsync/#/%E7%B3%BB%E5%88%97%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值