面试过程:
1轮同级 + 1轮Android用人部门leader + 1轮Android 组leader + 1轮项目CTO + 1轮HR + 1轮HRBP
1、项目经历
- 负责的模块,在工作中有什么总结
- 用到了什么技术,有什么收益
- 难忘的问题,对自己提升最大的功能/项目
2、handler源码部分:
- handler 线程切换执行实现原理,
- handler 延时执行实现原理,
- messagequeue 数据结构,
- handler.sendEmptyMessageDelayed() 和 * handler.postDelayed() 区别,
- 如果让自己实现一个handler ,需要怎么实现,有哪些地方需要注意的
3、view部分:
- view绘制流程,
- view, window, activity关系
- view 过度绘制解析,掉帧原因分析,怎么监测,怎么解决
- cpu和GPU 绘制UI 流程(这个我不会)
- 自定义view实现过程, 自定义view 怎么安全的刷新
- 常用动画的种类,属性动画的使用, 插值器和估值器的使用
4、基础部分:
线程:
- 线程开启的方式
- 线程池使用,关键参数的取值依据和使用
- 线程同步的方案,常用的锁
- synchronized 和 volatile 关键字, volatile 是怎么实现可见性的
- Java 中有哪些原子性操作
jvm:
- jvm 堆/栈/方法区/本地方法栈/程序计数器 分别有什么作用, gc 垃圾回收流程
- JVM / Dalivk / ART 了解多少,有什么区别
反射:配合retrofit 问的
类加载器:配合热修复问的
activity 启动流程
5、三方库:
热修复框架:
- Andfix
- Qzone
- Tinker 修复原理
- 有没有看过源码
- 机型适配和版本适配怎么做的
- LinkCanary 内存泄露框架原理, 除了这种方式监控内存泄露,是否还有其他方式
OKhttp:
- socket连接池怎么复用的
- 拦截器是怎么实现的
- 用到了什么设计模式
- 对OKhttp 还做了哪些优化
RXJava:
- 怎么实现线程切换的
- map 和 flatmap 操作符的区别
- rx背压问题,怎么解决的,使用RXJava中还遇到哪些问题,怎么解决的
Glide:
- 缓存怎么做的
- 怎么和页面生命周期绑定(低版本是fragment,新版本 lifecycle?)
6、其他部分:
- map 接口继承关系
- set接口继承关系
- list 接口继承关系
hashmap:
- 原理
- hash冲突
- 扩容
- java 1.8后的修改
- 哪些map线程安全,怎么实现安全的
- 怎么用一个数组实现一个栈结构,说说思路。
- weex flutter有没有了解
手写两个算法:
一个巨大无序数组,查第一个不连续自然数的节点, 例如 1、2、3、5、6、7…. 第一个不连续自然数的节点是 4。 给定一个二进制数据位数, 输出所有2进制数所对应的所有自然数,要求时间复杂度最优: 例如 输入 1, 输出 0, 1, 输入2, 输出 0,1,2,3,4,5,6,7
- app怎么保活
- 怎么给所有的点击事件全局埋点,hock 系统的click事件
- 用到了哪些设计模式,都运用在哪里,解决了什么问题。
- 做过哪些性能优化,优化成果怎么样,是否有数据支撑,数据来源怎么取。
一个送礼的场景, 礼物有权重属性,怎么根据权重进行对礼物进行处理,然后再排队纷发,每次取一个礼物,怎么设计数据结构: 用有序队列,权重最大的排在队列最前,每次取礼物只拿第一个就行。细节还有数据重排,队列维护,数据同步等
面试前该怎么复习?
脑图 + 书 + 视频
什么意思呢?具体解释一下,首先你需要有一个全面的知识点脑图,然后遇到不懂的地方就看书,千万不要去看博客,毕竟博客门槛真的太低了,最后要配合一些高质量的视频,用来巩固知识和开拓视野。
脑图已经给你整理好了,可以根据这个图自行进行查漏补缺和规划:
接下来就需要梳理知识,提升储备了!(Android高级面试进阶学习需要的电子书也已经给你整理好了)
架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO
Android高级UI与FrameWork源码:高级UI晋升+Framework内核解析+Android组件内核+数据持久化
360°全方面性能调优:设计思想与代码质量优化+程序性能优化+开发效率优化
解读开源框架设计思想:热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack
NDK模块开发:NDK基础知识体系+底层图片处理+音视频开发
微信小程序:小程序介绍+UI开发+API操作+微信对接
Hybrid 开发与Flutter:Html5项目实战+Flutter进阶
知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。
然后再是通过源码来系统性地学习
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
刷大厂面试题备战,增加大厂通过率
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。
视频呢?也给你整理了,够意思吧。
视频包含:
1、IPC机制相关面试题视频解析
2、项目相关视频解析
3、性能优化相关面试题视频解析
4、JVM从入门到着迷
5、源码相关试题视频解析
6、BAT面试总结分析
…
文末
欢迎关注我的简书,分享Android干货,交流Android技术。
对文章有何见解,或者有何技术问题,都可以在评论区一起留言讨论,我会虔诚为你解答。
最后,如果你想知道更多Android的知识或需要其他资料我这里均免费分享,只需你多多支持我即可哦!
——可以直接点这里可以看到全部资料内容免费打包领取。