前言
都说 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中高级面试题汇总》完整版(知识点 + 答案解析)的朋友可以点击这里 免费领取
!