前言

都说 IT 行业跳槽越多涨薪越快,这也导致一些开发者希望通过跳槽来提高自己的薪资。

互联网开发行业是一个发展迅速的行业,到了现在整个行业已经进入了一个饱和的状态,从事互联网开发的人太多了,特别是 Android 开发,不像刚起步的时候,只要你懂一些技术就可以找一份好的工作,所以说现在想靠跳槽来提高自己薪资还是有一些难度的。

今天就分享一下我一位有着五年 Android 开发经验的朋友,跳槽的面试经历。

我这位朋友有着五年 Android 开发经验,在上一家公司待了两年,对自己的薪资不满意,觉得薪资跟自己的能力不匹配,于是就辞职了。

按理说他有五年 Android 开发经验和职场经验,找工作对他来说应该不是什么很困难的事情,可是偏偏事与愿违,他连续面了十几家公司都没有过,要不就是自己没看上的,找朋友内推过大厂,结果简历直接拒了,自己投了几个大厂,也都是石沉大海。

最后他静下心来总结了面试的问题,他分析几个面试不过的关键点:

  • 基础知识点不牢固
  • 对新的技术不是很了解
  • 对自己的职业规划不是很明确

于是他花了两个多月的时间去巩固以前用过的知识,学习了解新技术,明确自己的职业规划,最后通过一过多月的时间拿到了自己心仪的 offer。

总结

一,找准目标,自我定位

首先你先要有一个自我定位,要想明白自己想要啥,要干啥,这很重要。

  • 觉得自己的职场履历欠缺一段大厂经历。
  • 想去大厂做一些大型的项目。
  • 想进入一个大平台去寻找更适合自己的发展道路。
  • 想涨工资......

无论是啥,反正你肯定得有个想法,这个想法会决定你愿意付出多少努力去争取。

二,面试准备,方法建议

有很多的同学,其实技术水平还可以,只是长时间做项目,很多基础细节略显生疏,导致面试过程有点断节奏。

可是你要知道,面试官是第一次认识你,他不清楚你的技术水平,那他要怎样才能了解你呢?所以,基础那些东西还是需要时不时的复习一下,那些常用的面试知识点该刷是得刷一下。(下文会给大家分享一些面试知识点)

但是那些框架,原理,启动流程,技术选型,设计思路绝对不是背的,这些就是考察你内功的时候了。

有的同学可能会说:我背都记不住,你还想让我理解?

参考建议:

  • 参考一些开源的项目,然后在自己的项目中去实操这些知识点。 思考他们的设计模式是否可以复用到自己的项目,用的主流框架是否可以移植过来,这一点不仅并行于你的工作,会对你的技术思维有很大的提升。

  • 现在主流的框架实现原理是什么,开始可以参考一些分析博客,最后把自己的理解整理成笔记。后续复习的时候也可以只看精华。

  • 设计模式可以针对性学习一下,不只是为了面试,自己项目里也可以用。

  • 新技术一定得与时俱进,没事就给自己项目整个技术升级,可能很多人会跟你说没啥用,公司都不用这些技术等等,无论你听到什么理由,这玩意你要信了,那就完了。

  • 整理一些高频面试题,算法题,每天只需要做几道就可以,不用多,慢慢就会有感觉了,很多题都是重复思想,不用太花精力去做那些难的。

以上这个过程,不用太追求速度,只要按步骤坚持2个月,基本就能达到大厂面试的技术要求了。

还有一个点,至关重要,那就是表达能力,很多技术同学都吃了这个亏,很多问题自己明明知道,但就是表达不出来,给面试官的感觉就是你不懂。

  • 提前准备一个有亮点的自我介绍;

  • 在你看那些框架原理的时候,需要注意一下那些技术点的关联性,在回答问题的时候,除回答以外,还需要引导面试官去问自己擅长的点,这决定你的表达是够有亮点,是否融会贯通,也是变被动为主动的关键。

  • 整理下自己项目过程中解决的难点,遇到的问题,挑战,以及解决方式,这个在大部分面试中都会被问到。

三,面试复习,查漏补缺

这里,给大家分享一份 Android 大厂中高级面试知识点汇总,内容包括:Java基础、Android基础、UI控件篇、网络通信篇、架构设计篇、性能优化篇、源码流程篇、新技术篇、面试篇九个章节,一共1932页。

资料领取:https://mp.weixin.qq.com/s/HQgjJ5vMFvLh_7u1KizHiA

Java基础
  • 静态内部类和非静态内部类的比较
  • 多态的理解与应用
  • java方法的多态性理解
  • java中接口和继承的区别
  • 线程池的好处,详解,单例
  • 线程池的优点及其原理
  • 为什么不推荐通过Executors直接创建线程池
  • BlockingQueue及其实现
  • 深入理解ReentrantLock与Condition
  • Java多线程:线程间通信之Lock
  • Synchronized 关键字原理
  • ReentrantLock原理
  • HashMap中的Hash冲突解决和扩容机制
  • JVM常见面试题
  • JVM内存结构
  • 类加载机制/双亲委托
Android基础

(1)Activity知识点(必问)

  • Activity 启动过程全解析
  • Fragment 知识点
  • onSaveInstanceState 以及 onRestoreInstanceState 使用
  • 4onConfigurationChanged使用以及问题解决

(2)Fragment 知识点

  • Fragment 的通信问题, 新建 Fragment 为何不要在构造方法中传递参数
  • 为什么官方推荐 Fragment.setArguments(Bundlebundle)这种方式来传递参数,而不推荐通过构造方法直接来传递参数呢?
  • Androidx 下 Fragment 懒加载的新实现
  • Fragment全解析系列
  • Google-Fragment概览
  • Google-与其他Fragment通信

(3)Service 知识点

  • Handler知识点(必问)
  • Android主线程阻塞处理及优化
  • 深入聊聊Android消息机制中的消息队列的设计
  • 深入理解MessageQueue
  • 你真的懂Handler.postDelayed()的原理吗?
  • Handler.postDelayed()是如何精确延迟指定时间的
  • Handler延迟消息执行机制,会阻塞吗?

(4)Intent知识点

  • Android跨进程传递大内存数据
  • 数据存储
UI控件篇

(1)屏幕适配

  • Android屏幕适配和方案
  • Android 目前稳定高效的UI适配方案

(2)主要控件优化

  • RecyclerView优化

(3)事件分发与嵌套滚动

  • NestedScrollingParent & NestedScrollingChild
  • 动态化页面构建方案
  • 组件与布局
网络通信篇

(1)网络协议

  • 彻底理解 WebSocket 原理,附完整的实战代码(包含前端和后端)
架构设计篇
  • MVP架构设计
  • 组件化架构
性能优化篇
  • 启动优化
  • 内存优化
  • 绘制优化
  • 安装包优化
源码流程篇
  • 开源库源码分析
  • Glide 源码分析
  • Glide 面试题
  • 聊一聊关于Glide在面试中的那些事
  • 简历上如果写Glide,请注意以下几点...
  • Glide OOM问题解决方法汇总
  • OkHttp源码分析
  • Okhttp连接池复用机制
  • Okhttp 流程和优化的实现
  • OkHttp的整个异步请求流
  • HttpEngine中的sendRequest方法详解
  • OkHttp解析大总结
  • Okhttp任务队列工作原理
  • Android 网络优化,使用 HTTPDNS优化 DNS,从原理到 OkHttp 集成
  • Retrofit源码分析
  • RxJava源码分析
  • RxJava原理与源码分析

新技术篇
  • 实战问题
面试篇

(1)开源文档 (2)面试题合集

  • android事件分发机制,请详细说下整个流程
  • android view绘制机制和加载过程,请详细说下整个流程
  • android四大组件的加载过程,请详细介绍下
  • Activity的启动模式
  • A、B、C、D分别是四种Activity的启动模式,那么A->B->C->D->A->B->C->D分别- - 启动,最后的activity栈是怎么样的
  • Activity缓存方法
  • Service的生命周期,两种启动方法,有什么区别
  • 怎么保证service不被杀死
  • 静态的Broadcast 和动态的有什么区别
  • Intent可以传递哪些数据类型
  • Json有什么优劣势、解析的原理
  • 一个语言的编译过程
  • 动画有哪几类,各有什么特点
  • Handler、Looper消息队列模型,各部分的作用
  • 怎样退出终止App
  • Android IPC:Binder 原理
  • 理解Window和WindowManager
  • Bitmap的处理
  • 如何实现一个网络框架(参考Volley)
  • ClassLoader的基础知识
  • 插件化框架描述:dynamicLoadApk为例子
  • 热修复:Andfix为例子
  • 线程同步的问题,常用的线程同步
  • Asynctask和线程池,GC相关(怎么判断哪些内存该GC,GC算法)
  • 数据库性能优化:索引和事务
  • APK打包流程和其内容
  • 网络劫持的类型原理
  • 操作系统进程和线程的区别
  • ......

篇幅有限,只展示知识点大纲和部分内容截图,以上知识点已整理成文档,需要《2022年Android中高级面试题汇总》完整版(知识点 + 答案解析)的朋友可以点击这里 免费领取