Android 开发3年,二本学历,历时半年终获腾讯offer,薪资上涨30%定级T4

2020-12-02 17:51:50 浏览数 (1)

个人背景

如标题所示,我的个人背景非常简单,Android开发经验3年多,学历普通,2本本科毕业,之前坐标北京,毕业后出来就一直在小公司每天重复的工作对我的技术提升并没有什么帮助,但我也深知自我努力的重要性,想要改变“命运”,没有背景没有资本的人,只能通过勤奋获得。

幸运女神往往会眷顾努力的人,所以在历时半年的复习调整面试十几家公司后好运终于降临到了我身上,我并不诧异,目前拿到了腾讯的offer,下文也不说废话,主要分享我这次“腾讯面试经历”和“个人学习方法”,希望能帮助到你们。

腾讯面试经历(还原最真实的3面)

腾讯一面

1、链表排序,奇数索弓|升序,偶数索引降序 重点:贴着简历

2、Activity四种启动模式,SingleTask和SingleInstance的异同

3、View TouchEvent分发流程

4、Message / MessageQueue / Looper

5、Serializable和Parcelable性能差异

6、HashMap数据结构一>红黑树和AVL树的差别

7、跨进程通信

8、软、弱引用

9、HashMap、HashTable、 ConcurrentHashMap

10、Handler内存泄漏、解决

11、二叉树层序遍历

12、onSaveInstanceState调用时机

13、View事件机制

14、DOWN、MOVE、UP、CANCEL怎么传递

15、图片框架缓存机制

16、扑克牌随机算法(空间0(1))

17、View绘制流程

18、算法题:二分查找法

19、多线程访问一一个对象多个方法锁的问题

20、dexclassloder的作用

21、listview复用原理,图片混乱的原因,怎么处理

......

腾讯二面

1、笔试题:二叉树转双向链表

2、Thread sleep原理Thread interrupt原理

3、Handler底层

4、View Touch事件分发

5、线程间同步方式

6、synchronized实现原理

7、volatile

8、Lock

9、wait/notify(原理)

10、Activity A启动B生命周期回调

11、列表卡顿

12、找出字符串的最长不重复子串

13、线程池

14、原理:

ThreadPoolExecutor Executors

15、组件化流程

16、进程方法调用( Binder原理)

17、Activity启动流程

18、HTTPS

.......

小总结:首先是根据简历问了业务,包括技术框架和实现,然后又问了Activity window和view之间有什么关系。

腾讯三面

1、libuv和三个平台下的io模型

2、讲下epoll和select

3、countdown latch

4、笔试题:

把字符串数组中的'0'挪到数组前面其他字符顺序不变,给出时间空间复杂度

并发请求url,并把结尾按顺序输出

5、设计一个列表加载图片,问需要考虑哪方面的问题

6、手写JSON解析器

7、Synchronized实现原理

8、Lock

9、Synchronized与Lock效率对比

10、Fragment生命周期

11、RecyclerView优化

12、Parcelable

13、与Serilizable安全对比

14、invalidate和requestl ayout

15、OKHTTP安全

16、二叉树查找最近的一一个父节点

17、目前做啥业务?

18、遇到过啥技术难点

19、 解释一下java的编译执行过程

.......

让“努力”成为自己的背景(如何学习?)

1、看视频进行系统学习

这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。

另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。

2、进行系统梳理知识,提升储备

客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

系统学习方向:

  • 架构师筑基必备技能:深入Java泛型 注解深入浅出 并发编程 数据传输与序列化 Java虚拟机原理 反射与类加载 动态代理 高效IO
  • Android高级UI与FrameWork源码:高级UI晋升 Framework内核解析 Android组件内核 数据持久化
  • 360°全方面性能调优:设计思想与代码质量优化 程序性能优化 开发效率优化
  • 解读开源框架设计思想:热修复设计 插件化框架解读 组件化框架设计 图片加载框架 网络访问框架设计 RXJava响应式编程框架设计 IOC架构设计 Android架构组件Jetpack
  • NDK模块开发:NDK基础知识体系 底层图片处理 音视频开发
  • 微信小程序:小程序介绍 UI开发 API操作 微信对接
  • Hybrid 开发与Flutter:Html5项目实战 Flutter进阶

知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。

3、读源码,看实战笔记,学习大神思路

“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。

4、面试前夕,刷题冲刺

面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。

关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三。

总结

改变人生,没有什么捷径可言,这条路需要自己亲自去走一走,只有深入思考,不断反思总结,保持学习的热情,一步一步构建自己完整的知识体系,才是最终的制胜之道,也是程序员应该承担的使命。

以上内容均放在了开源项目:github 中已收录,里面包含不同方向的自学Android路线、面试题集合/面经、及系列技术文章等,资源持续更新中...

0 人点赞