其实倒挂的现象确实存在,一般有两种情况:
一种是应届生倒挂,这个一般可以归因于每一年大厂对外录取新同学的基本薪资可能有所变化。
而一年的时间,也很难有涨薪的情况,所以可能会出现例如:在相同水平线的情况下,16 年入职的新同学,没有 17 年入职的同学薪资高。
还有一种情况在于,同一级别下,老员工没有跳槽过来的员工薪资高,这个主要是跳槽 buff 加成。
“互联网大年”或者“跳槽 buff”确实能够让一些同学尝到一点甜头。
但是跳槽这种事
,需要足够年限的间隔,以及个人技术水平的跨越,如果你不注意这两点很可能适得其反。
所以完美的解法应该是在尽可能短的时间内,去不断提升个人的技术水平。
例如现在 Android 新技术非常多,这些新技术的发展,对于我们来说既是机会,也是挑战。不断学习新知识是不可避免的,不过更重要的是需要确立自己未来的发展方向以及提升自身竞争力。
对于移动端研发来说,长期的职位发展一般为:
初级研发工程师
->高级研发工程师
->资深研发工程师
->技术专家/架构师/技术经理
->…
大多数情况下,在大厂到了技术专家/架构师这个级别就已经非常厉害了。
那么话说回来,什么是架构师?成为一名优秀的移动端架构师又需要具备哪些能力呢?
架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。
要想成为一名优秀的移动端架构师,不仅要有硬技能,还要有软技能。
作为一名普通研发,又该如何迅速逆袭成为移动端架构师呢?
通常来说至少需要掌握下面这些技术:
======================================================================
Android以Java语言为基础,以虚拟机为核心,经过Daivlk虚拟机再到Art虚拟机演变,所以需要学两大底层:一个是Java语言底层,一个是虚拟机底层
Java底层涵盖:Java序列化、泛型与反射、JDK高级动态代理、 Java高级并发原理详解。
虚拟机底层涵盖:虚拟机层类加载机制、Android虚拟机原理剖析、dex运行机制,Android内存,高级数据结构与算法
Android应用是在虚拟机上运行的,如果不清楚虚拟机的底层原理,我们将很难理解APP的运行过程,同时Android也是由java语言开发的。
那么Java中哪些东西是我们Android程序员需要学习的呢?
由于很多Android程序员习惯了 C V 代码块,所以与Android中比较相关的稍微比较难的Java基础几乎都是一个门槛,像泛型原理、多线程底层、反射、虚拟机、注解、序列化等
面试过程中:BATJ这些大公司都要求有扎实的Java语言基础和虚拟机底层原理,这一个部分就是Android开发中最常用的java语言相关知识。在这个部分里面,结合了Dex文件加密实战和热修复实战可以让大家深刻体会Java语言体系的重要性以及在Android开发中的地位
====================================================================================
在Android中,Framework泛指系统架构层。Framework的中文意思是“框架”,在软件开发中通常指开发框架,在一个系统中处于内核层之上,为顶层应用提供接口,被设计用来帮助开发者快速开发顶层应用,而不必关心系统内核运行机制,通常Framework都会隐藏main函数等应用程序必须的组件,开发人员只需把精力放在功能代码的实现上。说简单点,Framework具体的工作也就是为Android应用开发的开发人员提供了一系列的服务和API的接口。
UI其实并不是单纯指用户看到的效果。因为在Android开发中,每个控件背后都有一套深层次的体系在支撑,自然而然,会UI不单纯指的是会自定义控件,我们还应该知道自定义控件背后的执行流程,包括从Activity的创建,XML的解析,到每个控件的测量、布局、绘制。当然在中间还夹杂着比如动画、事件分发机制、嵌套滑动机制等知识点。还有谷歌提供的一些UI框架也是我们要掌握的对象,比如Jetpack组件库、Material Design等。
=======================================================================
**性能优化是一个项目必须要经历的过程,你的应用好与坏都是在用户使用的过程中反映出来的,如果性能优化没有做好,对于你的应用来说影响是非常大的。**尤其是现在的Android市场竞争非常激烈,如果你的应用体验没有竞品的好,那么用户流失是必然的。
性能优化不是一件简单的事情,每个应用的性能好与坏无法由一个人来决定,因为性能优化的维度有太多了,从我们项目的整体架构,到我们代码的每一个细节,再到应用使用环境的测试,只有步步为营,才能做好一个项目的优化。大部分开发者把性能优化指向与不闪退就行,但是实际上性能优化包含了很多方面,比如从简单的启动优化、 UI优化、 卡顿优化、 崩溃优化、 安全性优化,到深层次的弱网优化、 大图加载优化、 储存优化、 高效传输优化、 极限瘦身优化,再到实际开发过程中的OOM问题原理解析、 ANR问题解析、 Crash监控方案。
开发者把性能优化指向与不闪退就行,但是实际上性能优化包含了很多方面,比如从简单的启动优化、 UI优化、 卡顿优化、 崩溃优化、 安全性优化,到深层次的弱网优化、 大图加载优化、 储存优化、 高效传输优化、 极限瘦身优化,再到实际开发过程中的OOM问题原理解析、 ANR问题解析、 Crash监控方案。