第一次面大厂就拿到了腾讯的 offer ,同事笑着骂我是搞 Android 的“狗托”
花了近 2 个月时间,研究底层原理和源码,手画核心流程不少于 3 遍,面试前做到能熟练讲述 Activit 的启动流程并做分析。
两周时间,重新梳理一遍 Android 基础,包括 Java 基础,Android 组件、view 的绘制流程等等...
花了很长的时间深入的学习 framework 和 Rxjava,尤其是 Framework 这块,从不同角度深入理解底层原理。最终进腾讯这块起了很大作用。对 AMS/PMS 有深入认识,**阅读 Frameworl 源码不下 10 遍,**对其中的大部分细节了然于胸,绘制了流程图,让自己的 Android 知识架构由点成面。当然,大家可以参考看看。
![](https:/
/img-blog.csdnimg.cn/img_convert/734800f8e293231060b75d3ee85720f3.png)
之后就是覆盖死角,主要从核心面试题出发,我当时找到一份《Android 高级面试快速进阶指南》,是一份 Github 总结的比较精炼的题库,查缺补漏,做到各类知识都能有所涉猎,不至于冷门问题一句话也说不上来**。如果你也有需要 PDF 高清版的话可以【点击此处即可免费获取】。
三、腾讯面经分享以及面试过程
岗位:Android 开发岗位
行程:广州=深圳,单程 1 个小时,南山车站=腾讯大厦,单程 1 个小时
吃饭:可以去腾讯食堂,免费吃,只要人进去,到吃饭时间点就可以蹭饭
面试:一面+二面+三面+HR
面经分享
腾讯音乐一面
项目介绍,深挖
TCP 三次握手,以及在此过程中有哪些不安全性?针对这些不安全性的攻击手段?以及防御手段?
View Group 自定义绘制的流程
长连接建立连接的过程
Android 应用的启动流程
Handler 机制
如何处理一张比较大的 Bitmap
如何压缩 Bitmap
算法题“{}【】()”优先级,字符串是否合法
腾讯音乐二面
如何判断一个链表是否有环
LiveData 是如何实现的,优缺点
进程与线程的区别
线程锁,可重入锁
synchronized Look 区别
虚拟构函数
Handler Looper Message 联系与区别
Message 为啥用链表,不用数组
死锁的原因,避免死锁的方法
如何减少哈希冲突
hashmap 的链表叫什么?拉链法
野指针
Gc 垃圾回收算法有哪些,分别是什么?它的实现原理
Gc Roots
avitivity 的启动流程
memcpy strcpy 效率对比
多态的实现原理
腾讯音乐三面
RecyclerView 缓存原理、和 ListView 的对比、Adapter 如何适配多种 layout
LRUCache 原理
图片加载原理
Glide 源码解析,三级缓存
Retrofit 动态代理 & 注解解析
GPU 调试绘制 和 GPU 呈现模式分析
MVC MVP MVVM 原理和区别、优劣势、以及在项目中是如何应用的?
手写一个简易的 EventBus,并说出 EventBus 的实现原理
Binder 机制及底层实现
总结
--
上面就是刘哥在腾讯面试的整个过程了,最后还给大家提几个小建议:
对简历上的内容一定要有把握,不要给自己挖坑;
面试遇到不熟的内容,简单介绍下自己的认识,承认了解有限,不要硬着头皮瞎说;
尽量通过亮点项目和准备充分的问题体现自己的价值,也可以通过这些内容引导面试官问自己擅长的领域;
常见非技术问题有所准备,不至于当场抓瞎;
算法数据结构要有准备,大厂面试基本上要手写 code。
最后,需要文章中所分享的《Android 高级面试快速进阶指南》以及一些面试常备 PDF 的朋友可以**“【点击此处即可免费获取】”**。
评论