4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

前言

我是大专毕业的,计算机专业,刚出来的时候,没有拿的出手的学历,也没什么特别突出的能力,工资也特别低,只能说能够在这个二线边缘城市养活自己吧,基本上没有什么余钱。

在小厂干了一年后,我跳了两次槽,都是不怎么知名的厂,但是工资有了10K,这对他来说已经是相当可观的一笔工资了。

在这个厂,我兢兢业业,干了三年,期间也有了女朋友,一年前结了婚,前不久怀上了孩子。家里的开支眼见着上涨了,我决定和老板商量一下涨工资的事情。

在那个小厂,我可以说是一个骨干,这几年,这个公司也在稳步发展,我的工作量也在增加,不仅仅是自己的工作,还要带新人,但是我的工资并没有上涨多少,只有13K不到

前面我也跟老板隐晦的提过自己的经济压力,暗示涨工资的事情,但是老板一直在回避这个问题,于是,我决定跳槽。

以下是我的个人经历分享。

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

跳槽准备

一开始遭受的困难比较多。

我是从半年前开始准备跳槽的,当时因为疫情,很多计划都没能正常进行,甚至连现有的工作都岌岌可危,但是,我还是决定跳槽,再待下去也没有发展前途

当我出去面试找工作时发现:现在面试,那些稍有名气的大厂往往更注重基础和深度,而且还有很多新的技术都会问到音视频开发,人工智能,混合开发这些,甚至底层和全栈方面都得会点。

项目这些倒是不怎么慌,用心整理一下应该可以,但是那些底层原理,技术题,音视频什么的是真的没什么底。

这两年里,经常加班加点赶项目,下班了地铁上就用手机看直播课学习。

大多时候是很晚回去后对着录播视频自己去敲一遍,不过有源码和课件提供而且一直有老师在线答疑,倒是没怎么落下。只是同期别人八个月学完的整个系统进阶课程,我用了差不多一年。

决定辞职的时候和老师说了一下,老师说他那边刚好有最新整理的一套资料,直接发给了我。

准备面试期间基本上算是半辞职状态,一直在网上学习,找资料,刷面试真题。这份面试真题和解析算是省去了我准备的不少功夫。

下面是我那段时间做的事情:

【跳出舒适圈,学习新东西】

现在的互联网公司,你在上家的经验,学到的东西,很多时候在其他公司是用不上的,所以,我选择先提升自己的能力,增加自己在人才市场的竞争力。因为自己的时间比较紧张,家里的事情又比较多,我选择直接报班,这样学起来轻松一点,可以省去很多精力,直奔主题。

【逛各大招聘网站,搜集招聘信息】

Boss直聘,力扣,牛客,脉脉,这些是大家用的比较多的软件,其次就是靠朋友圈,工作这些年,虽然没什么大的成果,但是人脉还是有一些的。这里也建议大家平时可以积累一些人脉,以备不时之需,俗话说,在家靠兄弟,出门靠朋友,还是有一定的道理的。

【刷题,复习一些基础知识】

在岗位上久了,学习的欲望就变淡了,技术一般能应付工作就完事了,很少去琢磨新东西,所以说很多人都是一年工作经验,重复了几年。我的情况也是差不多的。

这里我推荐一份自己当时用的一份资料(也算是报答当初帮我修改简历的大佬吧)

闭关刷题

以前在网上找技术博客,不成体系的学习效果真的太低了,经常因为信息过多,还有信息不准确而耽误时间,很容易就分心了。

后面除了跟视频学习,就是一直在刷这套【1307页Android 面试全套真题解析】↓ ↓ ↓ ↓ ↓

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

这份资料是真的帮到了很多,内容全面,覆盖率比较高,省去了很多时间和精力。

资料获取方式:点击下方蓝色字体,找我免费领取 ↓ ↓ ↓ ↓ ↓
http://mp.weixin.qq.com/s?__biz=MzUyNjAxNzcwMg==&mid=100001751&idx=1&sn

资料详情

整理人相关:

华南理工大学研究生毕业,十余年互联网从业经验;曾就职于三星/小米,担任项目经理,技术经理等;国内首批Android底层技术导航人,主持改写过Android手机系统架构。

专精领域:精通Android FrameWork源码及性能优化;三星手机Rom核心架构设计,专注NDK底层设计与开发。

资料包含Android面试中常问的点

Handler相关

  • Handler Looper Message 关系是什么?
  • Messagequeue 的数据结构是什么?为什么要用这个数据结构?
  • 如何在子线程中创建 Handler?
  • Handler post 方法原理?
  • ……

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Activity 相关

  • 启动模式以及使用场景?
  • onNewIntent()和onConfigurationChanged()
  • onSaveInstanceState()和onRestoreInstanceState()
  • Activity 到底是如何启动的
  • 启动模式以及使用场景
  • onSaveInstanceState以及onRestoreInstanceState使用
  • onConfigurationChanged使用以及问题解决
  • Activity 启动流程解析
  • ……

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Fragment

  • Fragment 生命周期和 Activity 对比
  • Fragment 之间如何进行通信
  • Fragment的startActivityForResult
  • Fragment重叠问题
  • Fragment 初探
  • Fragment 重叠, 如何通信
  • Fragment生命周期
  • ……

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Service 相关

  • 进程保活
  • Service的运行线程(生命周期方法全部在主线程)
  • Service启动方式以及如何停止
  • ServiceConnection里面的回调方法运行在哪个线程?
  • startService 和 bingService区别
  • 进程保活一般套路
  • ……

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Android布局优化之ViewStub、include、merge

  • 什么情况下使用 ViewStub、include、merge?
  • 他们的原理是什么?
  • ViewStub、include、merge概念解析
  • Android布局优化之ViewStub、include、merge使用与源码分析
  • ……

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

BroadcastReceiver 相关

  • 注册方式,优先级
  • 广播类型,区别
  • 广播的使用场景,原理
  • Android广播动态静态注册
  • 广播源码解析
  • ……

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

AsyncTask相关

  • AsyncTask是串行还是并行执行?
  • AsyncTask随着安卓版本的变迁
  • AsyncTask完全解析
  • 串行还是并行
  • ……

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Android 事件分发机制

  • onTouch和onTouchEvent区别,调用顺序
  • dispatchTouchEvent, onTouchEvent, onInterceptTouchEvent 方法顺序以及使用场景
  • 滑动冲突,如何解决
  • 事件分发机制
  • 事件分发解析
  • dispatchTouchEvent, onTouchEvent, onInterceptTouchEvent方法的使用场景解析
  • ……

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Android View 绘制流程

简述 View 绘制流程 onMeasure, onlayout, ondraw方法中需要注意的点 如何进行自定义 View view 重绘机制

  • Android LayoutInflater原理分析,带你一步步深入了解View(一)
  • Android视图状态及重绘流程分析,带你一步步深入了解View(二)
  • Android视图状态及重绘流程分析,带你一步步深入了解View(三)
  • Android自定义View的实现方法,带你一步步深入了解View(四)
  • ……

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Android Window、Activity、DecorView 以及 ViewRoot

Window、Activity、DecorView 以及 ViewRoot 之间的关系

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Android 的核心 Binder 多进程 AIDL

常见的 IPC 机制以及使用场景 为什么安卓要用 binder 进行跨进程传输 多进程带来的问题

  • AIDL 使用浅析
  • binder 最底层解析
  • 多进程通信方式以及带来的问题
  • 多进程通信方式对比

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Android 高级必备 :AMS,WMS,PMS

  • AMS,WMS,PMS 创建过程
  • AMS,WMS,PMS全解析
  • WindowManagerService启动过程解析
  • PMS 启动流程解析
  • ……

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Android ANR

  • 为什么会发生 ANR?
  • 如何定位 ANR?
  • 如何避免 ANR?
  • 如何避免以及分析方法
  • Android 性能优化之 ANR 详解
  • ……

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Android 内存相关

注意:内存泄漏和内存溢出是 2 个概念

什么情况下会内存泄漏?如何防止内存泄漏?

  • 内存泄漏和溢出的区别
  • OOM 概念以及安卓内存管理机制
  • 内存泄漏的可能性
  • 防止内存泄漏的方法

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Android 屏幕适配

屏幕适配相关名词解析 现在流行的屏幕适配方式

  • 屏幕适配名词以及概念解析
  • 今日头条技术适配方案

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Android 缓存机制

LruCache使用及其原理

  • Android缓存机制
  • LruCache使用极其原理述

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Android 性能优化

如何进行 内存 cpu 耗电 的定位以及优化 性能优化经常使用的方法 如何避免 UI 卡顿

  • 性能优化全解析,工具使用
  • 性能优化最佳实践
  • 知乎高赞文章

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Android MVC、MVP、MVVM

好几种我该选择哪个?优劣点
任玉刚的文章:设计模式选择

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Android Gradle 知识

这俩篇官方文章基础的够用了 必须贴一下官方文档:配置构建 Gradle 提示与诀窍

Gradle插件 了解就好 Gradle 自定义插件方式 全面理解Gradle - 执行时序

  • Gradle系列一
  • Gradle系列二
  • Gradle系列三

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

RxJava

  • 使用过程,特点,原理解析
  • RxJava 名词以及如何使用
  • Rxjava 观察者模式原理解析
  • Rxjava订阅流程,线程切换,源码分析 系列

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

OKHTTP 和 Retrofit

OKHTTP完整解析 Retrofit使用流程,机制详解 从 HTTP 到 Retrofit Retrofit是如何工作的

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

最流行图片加载库:Glide

郭神系列 Glide 分析

  • Android图片加载框架最全解析(一),Glide的基本用法
  • Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
  • Android图片加载框架最全解析(三),深入探究Glide的缓存机制
  • Android图片加载框架最全解析(四),玩转Glide的回调与监听
  • Android图片加载框架最全解析(五),Glide强大的图片变换功能
  • Android图片加载框架最全解析(六),探究Glide的自定义模块功能
  • Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能
  • Android图片加载框架最全解析(八),带你全面了解Glide 4的用法

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

Android 组件化与插件化

为什么要用组件化?组件之间如何通信?组件之间如何跳转?Android 插件化和热修复知识梳理 为什么要用组件化

  • Android彻底组件化方案实践
  • Android彻底组件化demo发布
  • Android彻底组件化-代码和资源隔离
  • Android彻底组件化—UI跳转升级改造
  • Android彻底组件化—如何使用Arouter

插件化框架历史 深入理解Android插件化技术 Android 插件化和热修复知识梳理

4年Android开发13K,刷完这份1307页面试全套真题解析,跳槽涨薪15K!(限免领取)

完整资料获取方式:点击下方卡片(里面是微信号)

面试

前面面了贝壳找房和网易,都通过了,虽然最后没有谈好,但是有了一些信心。后面让朋友帮忙内推了腾讯,三面顺利拿下offer,薪资是28K,相比于上一份工作上涨了15K。

这里主要放腾讯面经

一面

0、说说做过的项目(差不多包括了自我介绍)
说一下我表达的重点:我做了AndroidQ的适配;我在项目中使用了新的技术:LiveData、BiometricPrompt;我使用到了设计模式:工厂、简单工厂、单例;我在不断优化我的代码;我关注Google开发者大会

1、问上一份工作
抓着工作中的技术点问了很多,然后后面问题的差不多都是来自这里面。

2、EventBus和回调的对比。有没有其他办法可以解决类之间的耦合性。
说了LivaData,但其实差不多。老老实实说不知道了……
现在想了想,这个题目那份资料里面好像也有提到过,但是……我没记住!!!

3、ListView和RecyclerView的比较,ListView没用了吗?
说了实现效果,代码、缓存方面、ViewHolder的差异,讲了一下RecyclerView在多个Fragment中有相同Item时的优越性。
ListView这个问题问到我时我差点没笑出来……我看了微信团队对于卡包界面是否要更新为RecyclerView的一篇文章,建议背诵全文……
Android ListView与RecyclerView对比浅析–缓存机制 [转自:腾讯Bugly]

4、Service和AsyncTask对比。
因为AsyncTask由于不使用匿名内部类方式很可能出现内存泄露问题,所以自己不使用,基本都是开线程池。然后面试官问AsyncTask底层,也就说了一下handler+线程池。
现在回想,有这么几个点:生命周期方面;消息传递方面;底层实现方面。

5、线程通信机制。
handler、信号量、互斥量、临界区管理synchronized之类的、共享变量volatile。

6、Android进程通信机制。
AIDL、Binder、共享文件。
前两个没啥说的了,老特长了。
说一下共享文件,这个我本来觉得很low,但是最近研究SharedPreference的时候,发现如果APP签名一样的话,可以使用同一个SharedPreference,所以也就说了共享文件。我不是想表达我用共享文件作为进程通信方式,我只是想说我了解SharedPreference。

7、ArrayList和Vector对比……不会Vector,那么ArrayList和LinkedList对比。
底层,数组,链表。扩容问题,我概括了一下所有的集合类的扩容方式都是装载因子+当前容量+需要扩容容量。
我说线程安全的List有CopyOnWriteArrayList,但是面试官没有往下问。

8、为什么扩容很多情况下都是扩容为两倍?
这个不会,但是说底层代码很多情况下扩容都是移位操作进行的。可能和查询相关?

9、HashMap和HashTable对比,ConcurrentHashMap。
HashTable不是Map,HashTable是Dictionary,而且锁的时候是锁数组,并发的粒度很大。
ConcurrentHashMap用的是分段锁而且有一个:判空+判相等+CAS+synchronized的一个锁的过程,所以很强大。
如果愿意可以看一下我的博客: https://blog.csdn.net/m0_46962786

10、CAS相关。
11、知道优先级反转吗?
不知道……回去研究去……
12、TCP三次握手四次挥手。
主要思路是通过SACK和全双工来整体讲解。
13、代码,如何判断两个链表是否相交 。
我最开始想成了找到第一个相交结点,然后说了思路,面试官说有没有更好的。然后直接判断最后一个结点是否相等。面试官说如果有环呢,那只能用HashSet存一下了。
14、反问。
问了下面试官是什么事业群。
说是PCG平台,感觉自己应该是被PCG捞起来了。
后面就问了一下公司的一些不疼不痒的问题。

总结

整体答得还可以,就是以为是2点面试,结果3点30才面上,可能是我记错时间了。状态没有调整到最好。

在这里也感谢腾讯课堂当时面试前给我做指导的老师,当时是参加的他们的一个活动,免费帮忙优化简历,优秀的简历可以帮内推(我还白嫖了一份面试题,就是上面提到的这个,哈哈哈)。

资料获取方式:点击下方蓝色字体,找我免费领取 ↓ ↓ ↓ ↓ ↓
http://mp.weixin.qq.com/s?__biz=MzUyNjAxNzcwMg==&mid=100001751&idx=1&sn

二面

0、自我介绍。
1、hashCode和equals方法。
2、HashMap,hash冲突解决,红黑树相关。
3、String、StringBuilder。
面试官问String的加法

String a = "a"+"b"+"c";

StringBuilder sb = new StringBuilder();
a = sb.append("a").append("b").append("c").toString();

这两者效率差别,我说没差别啊,第一种String的加法被编译器优化成第二种,他不信我……不过还好,最后达成共识面试官面试完自己去查。
现在复盘觉得面试官应该想问的是这种情况:

String a ="";
a+="a";
a+="b";
a+="c";

我还是对的。

4、wait、notify。
问是不是只能在有锁的情况下wait和notify。
5、线程间通信方式。
handler那一套。
6、快排原理,最好情况和最坏情况时间复杂度。
最坏情况逆序n**2,顺序情况我的算法还是nlogn,问了优化思路。
7、算法题:
[图片上传失败…(image-a5371-1606746442140)]
用了贪心没ac,面试官提示快排,没想明白……
8、思考题,如果我想将一颗二叉树存入文件,怎么样的格式存储可以使得读取效率最高。
这题是个开放讨论题,和面试官一直在讨论怎么做。

【当时以为自己凉了,没想到顺利收到了三面的通知】

三面

0、自我介绍
1、实习工作深挖
2、RePlugin原理深挖,其他插件化框架对比
3、为什么要选择RePlugin框架
4、你觉得自己对于Android掌握到了什么地步
5、看过什么源码
6、你为什么要看源码
7、你为什么要写博客
8、知道哪些著名开源框架
9、什么是进程,进程调度算法
10、什么是线程
11、你觉得什么是JVM
12、有哪些线程同步算法
13、死锁是什么,举个例子
14、Object有哪些方法
15、Java异常有哪些,Error和Exception区别
16、OSI七层模型,TCP、UDP是哪一层,应用层有哪些协议
17、如果要设计一个大量图片下载的方法,如何确定并发量,有哪些指标。
18、APP间传递消息安全吗?要怎么做才能安全呢?
19、广播怎么分类
20、自定义View重写的关键有哪些,onLayout和onMeasure区别
21、Android有哪些动画,MotionLayout讲一下。MotionLayout使用场景。
22、Activity四种启动模式,SingleTask和SingleTop的使用场景
23、一些Framework层的问题,不太会所以记不得了。
当时收藏一位B站UP主的视频,有需要可以去看一下
24、你为什么想了解Framework层知识。
25、算法题:

[图片上传失败…(image-c0dfa-1606746442139)]

26、你对于我们的Offer的态度
27、闲聊

最后

学习和复习这件事情是需要坚持的,但是找准方向,正确的学习方法以及优质的资源都是很重要的。

先找准方向,搭建技术框架,填充,然后深入钻研,这样坚持下去,成为移动架构师不会只是梦。

就我个人而言,Java基础和原理,自定义view,设计面试,数据结构算法,MVVM,MVP等各种架构,都熟练学会掌握了。

不过关于NDK开发,音视频,人工智能,跨平台开发这些重要的热门技术还在学习中,目前只是简单了解,应付面试。

音视频,人工智能等真的前景无限,如果我熟练这些的话,感觉现在28k的薪资应该可以再涨个10K,不过真的接触就知道,水有点深,暂时先不跳了,毕竟也不是年轻人了,大家有兴趣可以试一下。

上面提到的【1307页Android 面试全套真题解析】资料,点击下方蓝色字体免费分享给大家,希望大家面试顺利,拿下心仪的offer。

点击下方蓝色字体,找我免费领取 ↓ ↓ ↓ ↓ ↓
http://mp.weixin.qq.com/s?__biz=MzUyNjAxNzcwMg==&mid=100001751&idx=1&sn

上一篇:retrofit原理面试,音视频时代你还不会NDK开发?面试总结


下一篇:二本学渣考研失败,音视频时代你还不会NDK开发?含小米、腾讯、阿里