7b4ac6e7507b7747a80e61e5ba4aaae1
2018 腾讯、头条、OPPO、阿里社招 Android 面经

注:本文适合工作三年以内的初、中级工程师观看,大佬们可以关掉了。

自我介绍

本人 211 本硕,软件工程专业,研究生时期研究的是机器学习,工作选择的是深圳的平安科技,从事 Android 开发,到如今刚好工作满两年。不想满足于现状,就利用闲暇时间好好学习,天天向上,向腾讯、头条、OPPO、阿里投递了简历。

面试前准备

2018年年后,公司的 App 已步入稳定迭代阶段,个人的学习时间也很充裕了,就下定决心准备跳槽,目标主要瞄准一些大厂。
然而深圳的互联网大厂机会没有北京那么多,尤其是对于初级工程师的选择比较少,目前了解到腾讯视频,QQ 音乐,腾讯微视在招聘,阿里、百度、今日头条侧重招聘高级及资深的 Android 开发,Oppo 招聘力度很大,但是要求学历 211、985,其他的多是一些金融互联网公司,还有一些创业公司。
从4月份开始学习,一直学习到7月末,这段时间主要从以下几方面着手学习:

  • 复习Java基础,如HashMap、多线程技术、synchronized、Lock、equals、hashCode,垃圾回收算法等等
  • 刷算法,手写剑指offer上的算法,leetCode的easy难度的刷了100多个,了解动态规划、贪心、分治等算法的基本思想
  • 复习Android基础,任教主的《Android开发艺术探索》是本好书,不看3遍不敢去找工作。其次,简书大佬JasmineBen提供的Android面试题资料也给予了很大帮助
  • 梳理这两年的开发工作,解决的疑难问题。
  • 复习过程中不仅要理解掌握,还要及时整理,我前前后后写满了三个笔记本,有精力的更建议去写写博客。

面试经历奉上

Oppo(3轮技术面,Offer拿到)

一面

  • 自我介绍,聊聊简历上写的项目
  • MVC、MVP的区别
  • rxjava的线程切换原理
  • listView的卡顿优化、资讯流懒加载如何实现
  • 序列化前后对象有何区别
  • Binder通信原理
  • 插件化开发流程,插件化优势,插件化开发中遇到的问题以及如何解决的

二面

  • 自我介绍,项目介绍
  • Glide的优势,它是如何绑定生命周期的
  • listView如何优化,listView和RecyclerView的区别,二者的缓存逻辑
  • 提高app安全性的方法
  • View的绘制流程
  • 插件化原理

三面

  • 自我介绍,项目介绍
  • 为什么选用插件化,插件化框架的比较,梳理插件化的架构
  • App的启动流程
  • 自己的优势和劣势

Oppo对学历要求比较高,必须是211、985的,面试过程中主要针对简历面试,没有问算法和数据结构,薪酬很不错。

腾讯视频(4轮技术面,Offer拿到)

一面

  • 自我介绍,项目介绍
  • 如何处理App启动流程优化
  • View的性能优化
  • MVC到MVP的架构重构流程

二面

  • 自我介绍,项目介绍
  • 为什么用Glide,它的优势
  • HashMap的原理,ConCurrentHashMap的原理
  • View的绘制流程
  • Handler的工作原理
  • LeakCanary原理,内存泄露的分析流程
  • 进程间通信方式,Binder原理
  • 垃圾回收原理以及回收策略
  • Java中的强、软、弱、虚引用
  • 算法:排序,要求时间复杂度是O(n),例如1,4,5,2,7,6,9。如果数列是10,102,99,10000,825,1003030如何排序

三面

  • View的性能优化,页面卡顿的原因
  • TCP、IP各自所在的网络层次,IP报文中的内容
  • https的对称加密和非对称加密
  • 指针占几个字节
  • 自己的优势和劣势
  • 对开发流程的理解
  • 平时写博客吗,喜欢看哪些技术文章
  • 为什么离职找工作
  • 切饼问题:1刀切2块,2刀切4块,10刀最多切几块。
  • 追击问题:2辆火车相向同时出发,一个从A点出发,速度是30km/h,一个从B点出发,速度是20km/h,A、B之间的距离是S,同时一只鸟也从A点出发,速度是50km/h,鸟在两辆火车间折返飞行,问三者相遇时,鸟飞的总路程。

四面

  • 梳理你遇到的最严重的问题,以及如何解决的
  • 在白板上写出对于View的绘制和优化流程
top Created with Sketch.