2019(1),揭秘 ARouter 路由机制
这个的话其实真的 70% 问题出自你的简历。
关于简历可以参考:
[给大家 3 个走心的面试建议](
)
\1. Activity 的生命周期;
\2. Android 的 4 大启动模式,注意 onNewIntent()
的调用;
\3. 组件化架构思路,如何从一个老项目一步一步实现组件化,主要问实现思路,考察应试者的架构能力和思考能力。
这一块内容真的很多,你需要考虑的问题很多,哪一步做什么,顺序很重要。
\4. MVC、MCP、MVVP 的区别和各种使用场景,如何选择适合自己的开发架构?
\5. Router 原理,如何实现组件间通信,组件化平级调用数据方式。
\6. 系统打包流程;
\7. APP 启动流程;
\8. 如何做启动优化?
冷启动什么的肯定是基础,后续应该还有的是懒加载,丢线程池同步处理,需要注意这里可能会有的坑是,丢线程池如何知道全部完成。
\9. 事件分发机制。
事件分发已经不是直接让你讲了,会给你具体的场景,比如 A 嵌套 B ,B 嵌套 C,从 C 中心按下,一下滑出到 A,事件分发的过程,这里面肯定会有 ACTION_CANCEL 的相关调用时机。
\10. 如何检测卡顿,卡顿原理是什么,怎么判断是页面响应卡顿还是逻辑处理造成的卡顿?
\11. 生产者模式和消费者模式的区别?
\12. 单例模式双重加锁,为什么要这样做。
\13. Handler 机制原理,IdleHandler 什么时候调用。
\14. LeakCanary 原理,为什么检测内存泄漏需要两次?
\15. BlockCanary 原理。
\16. ViewGroup 绘制顺序;
\17. Android 有哪些存储数据的方式。
\18. SharedPrefrence 源码和问题点;
\19. 讲讲 Android 的四大组件;
\20. 属性动画、补间动画、帧动画的区别和使用场景;
\21. 自定义 ViewGroup 如何实现 FlowLayout?如何实现 FlowLayout 调换顺序?
\22. 自定义 View 如何实现打桌球效果;
\23. 自定义 View 如何实现拉弓效果,贝瑟尔曲线原理实现?
\24. APK 瘦身是怎么做的,只用 armabi-v7a 没有什么问题么?
APK 瘦身这个基本是 100% 被面试问到,可能是我简历上提到的原因。
\25. ListView 和 RecyclerView 区别?RecyclerView 有几层缓存,如何让两个 RecyclerView 共用一个缓存?
\26. 如何判断一个 APP 在前台还是后台?
\27. 如何做应用保活?全家桶原理?
\28. 讲讲你所做过的性能优化。
\29. Retrofit 在 OkHttp 上做了哪些封装?动态代理和静态代理的区别,是怎么实现的。
\30. 讲讲轨迹视频的音视频合成原理;
\31. AIDL 相关;
\32. Binder 机制,讲讲 Linux 上的 IPC 通信,Binder 有什么优势,Android 上有哪些多进程通信机制?
\33. RxJava 的线程切换原理。
\34. OkHttp 和 Volloy 区别;
\35. Glide 缓存原理,如何设计一个大图加载框架。
\36. LRUCache 原理;
\37. 讲讲咕咚项目开发中遇到的最大的一个难题和挑战;
这个问题基本是 95% 必问的一个问题;
\38. 说说你开发最大的优势点。
出现率同上。
4
算法
\1. String 转 int。
核心算法就三行代码,不过临界条件很多,除了判空,还需要注意负数、Integer 的最大最小值边界等
;
\2. 如何判断一个单链表有环?
\3. 链表翻转;
\4. 快排;
\5. 100 亿个单词,找出出现频率最高的单词。要求几种方案;
\6. 链表每 k 位逆序;
\7. 镜像二叉树;
\8. 找出一个无序数组中出现超过一半次数的数字;
\9. 计算二叉树的最大深度,要求非递归算法。
\10. String 方式计算加法。
5
HR 面
\1. 你为什么离开咕咚?
\2. 你的缺点是什么?
\3. 你能给公司带来什么效益?
\4. 你对未来的职业规划?
6
最后
此次面试刷了一遍剑指 Offer,个人感觉平时写博客真的很重要,简历上的东西,自己写的所以自己都知道,而其他的基础和细节,自己的博客就已经覆盖。总的来说,不是打广告,每日一问和之前的面试系列真的命中面试题概率很大。
如果你觉得还算有用的话,不妨把它们推荐给你的朋友。
评论