不知道大家注意到没有,虽然大家都在说找工作好像竞争越来越激烈,但是这几年应届生入职的薪水也是一年比一年高。我记得我16年毕业的时候,15K就已经算是非常不错的offer了。到了今年,20多K的offer遍地走,甚至不乏30K、40K的SP。让我不禁怀疑自己是不是生错了时代。
我记得很清楚,16年的时候华为的打包价大概是9K,到了17年直接涨到了15K。美团也是,两三年前也不过17K左右,今年涨到了20+。显然公司内部的调薪是跟不上这样剧烈的涨幅的,那么必然带来的问题就是倒挂,也就是那些工作一两年甚至两三年的人被新来的倒挂。按照目前的趋势,这种情况三五年内可能都不会改观。
讲道理,我自己当然也被倒挂过,自然也是很不爽的。但是不爽并没有半点用,公司并不会因为你不爽就给你加工资。所以遇到了这种情况,摆在眼前的就只有两条路,要么忍,要么走。
Android工程师:薪水被应届生倒挂,天王老子也别想留住我
那么,我们到底应该何去何从如何选择呢?今天就和大家分析和探讨一下这个问题。
如果要跳槽的话,首先无法避免的就要考虑一个跳槽频率的问题。
大家应该也都知道,用人单位,特别是大厂还是比较看重这个的。如果一个候选人经常跳槽,对方往往心里就要打个问号,觉得这个人心浮气躁,沉不住气,也难有长远的发展。是会影响HR或者是主管对一个人的看法的,所以前辈们都会建议跳槽不要太频繁,一般两到三年跳一次比较合理。
但是,这个只是理论情况,操作的时候机动空间是很大的。比如说,刚毕业的应届生在入职一年之后跳槽。这种情况可取么?
按照常规来说,一年时间跳槽有一点短,但是对于职场新人来说,刚毕业的第一份工作既是锻炼也是试错,发现了不合适或者是不喜欢,及时止损更换环境本身是没有问题的。就我个人的经验来说,也不会受到HR过多的责难。我自己以及身边的很多朋友都是一年跳槽的,这本身无可厚非。
但是这当中也并不是完全就没有问题,潜在的问题是一年的时间并不足以让我们在某个方面得到一个巨大的成长。虽然我们会积累一些经验,但是本身和应届生比起来差距并不太大。这会导致我们跳槽之后还是要以一张白纸的身份重新开始,回到和应届生同一起跑线上来,这是比较尴尬的。
也就是说,在没有得到成长或是技术提升的前提下跳槽,是完全没有意义的,而且是特别“伤”履历的。
职场里很多人说靠熬资历是没有用的,需要跳槽才能升职加薪。
某种程度上来说有一定的道理,这个也符合用人单位代价最小化的原则。对于已经在公司里的员工,只需要“稳住”即可,也不需要付出太多。对于外面招聘的员工,由于需要和市场竞争,所以会相对比较慷慨。这个怎么说呢,虽然不太合理,但是也无可厚非,毕竟符合经济学规律。
但是如果跳槽只是为了涨薪,其实对企业对自己都是一件非常可怕的事情。我们来稍微分析一下就明白了,比如张三刚毕业拿了12K,李四呢拿的offer比张三好15K。干了一年,公司调薪,张三调到了13,李四是16.5,甚至李四还晋升了,直接上20K了。那么很显然,此时作为张三是什么感觉?
当然是非常不爽了,我和李四一起来的,我来了就比他少那也就算了,偏偏给他机会晋升不给我机会,这不是欺负老实人么?
Android工程师:薪水被应届生倒挂,天王老子也别想留住我
这个时候作为张三很明显就会想此处不留爷自有留爷处,既然公司不待见我,我也没必要待了。年轻气盛会有这样的冲动非常正常,我自己也很理解。但是我们算一下账就会发现现在走其实挺亏的,因为以13K不是senior的情况跳槽出去,能够拿到的最好情况可能也就是16、17K的样子,其实还是比不上李四的,而且也未必会给你senior。即使是最好情况,给了你senior,其实仍然是亏。
为什么?因为张三消耗了一次跳槽的机会,这也是潜在的成本。如果李四此刻也跳槽,他拿到的一定还是比张三多。所以你看,我们费尽心思跳槽,最好的情况也不过和李四持平。就算我们选了pdd这样的血汗大厂拿到了比李四多,这也不能说明什么问题,因为只要愿意去,李四可以拿到更多。
这就很难受了,不跳槽已经亏了,跳槽了其实还是亏。我们怎么选都不成,活该被气死吗?
其实也不是全无办法,仔细想想还是有出路的。
无论是薪水比别人低也好,还是被人倒挂也罢,都已经是一个无奈的事实。尤其是对于职场新人来说,能够要价的要素太少,既拿不出牛x的项目经历,可能也没有积累雄厚的技术实力,即使积累了实力,也很难证明。没有一个出色的title,出去介绍自己,只能说是工程师,连个senior都没有,你说尴不尴尬。
那怎么办呢?
其实整个问题之所以难解,是因为我们的出发点错了,我们都是以涨薪水、不被倒挂的目的去思考的。我们其实应该换一换思路,怎么做对我们的长远发展更好。
首先,我们应该稍微放一放得失心和攀比心。别人拿得多或少,其实并不影响我们自己的价值或是未来的价值,和别人比没有意义。我知道说起来简单,做到很难,但是没有关系,我们还可以换个思路来想。职业发展是一个长期的事情,既然是一个长期的事情,其实可以确保一点,就是几乎没有人的职业生涯是一直顺风顺水的,或多或少总会遇到一些坎坷或者是瓶颈。换句话说,没有开局不顺,哪来的逆袭爽文!
Android工程师:薪水被应届生倒挂,天王老子也别想留住我
所以说开局弱一点,少拿几K,或者是晋升慢了一点都不算什么。大多数的互联网公司都是有“末位淘汰”机制的,就算“混”到高薪,没有扎实的技术支持,终究还是会掉下来的。反之,每个人的发展路上也会遇到瓶颈,遇到瓶颈卡个几年是很正常的事情。只要我们持续学习,致力于提升自己,总会有高光时刻的。我们要悄悄的学习,然后惊艳所有人!
我自己做Android开发已经是第5个年头了,在毕业后的第二年,有幸加入到字节跳动这个大家庭。在字节的4年,见证了太多人的来来去去,印象很深一个同事,跳槽阿里薪资直接double,但也看到很多人镀着“大厂”的金四处碰壁,终究还是倒在了技术上!
我自己或许也算是个成功的例子,在4年的时间里从1-1做到了2-2,当然,这背后的“辛酸泪”就留到日后再说。总的来说,归功于自己不断地学习,复盘总结,提升技术!以下分享一下我4年来具体的学习路线及笔记文档,希望能帮助到有心提升技术的朋友!
Android以Java语言为基础,以虚拟机为核心,经过Daivlk虚拟机再到Art虚拟机演变,所以需要学两大底层 一个是Java语言底层,一个是虚拟机底层 java底层涵盖 Java序列化、泛型与反射、JDK高级动态代理、 Java高级并发原理详解。
虚拟机底层涵盖 虚拟机层类加载机制、Android虚拟机原理剖析、dex运行机制,Android内存,高级数据结构与算法
目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。
知识要点:
1、Java序列化、泛型、反射
2、虚拟机底层原理
3、Android内存原理
4、Java高并发原理详解
5、编译时技术掌握与实战
6、JDK高级动态代理
7、高级数据结构与算法
8、Java IO操作
在Android中,Framework泛指系统架构层。Framework的中文意思是“框架”,在软件开发中通常指开发框架,在一个系统中处于内核层之上,为顶层应用提供接口,被设计用来帮助开发者快速开发顶层应用,而不必关心系统内核运行机制,通常Framework都会隐藏main函数等应用程序必须的组件,开发人员只需把精力放在功能代码的实现上。说简单点,Framework具体的工作也就是为android应用开发的开发人员提供了一系列的服务和API的接口。
UI其实并不是单纯指用户看到的效果。因为在Android开发中,每个控件背后都有一套深层次的体系在支撑,自然而然,会UI不单纯指的是会自定义控件,我们还应该知道自定义控件背后的执行流程,包括从Activity的创建,XML的解析,到每个控件的测量、布局、绘制。当然在中间还夹杂着比如动画、事件分发机制、嵌套滑动机制等知识点。还有谷歌提供的一些UI框架也使我们要掌握的对象,比如Jetpack组件库、Material Design等。
知识要点:
1、FrameWork源码解析
2、Android常用组件深入解析
3、UI的深度剖析与自定义
4、Jetpack全家桶
5、Android R
6、RXJava响应式编程框架设计
性能优化是针对整个app开发而言的。一个好的项目被开发出来,不单是产品要好,开发者也需要知道,为什么我开发的这个app能够在绝大多数的手机运行,为什么用户在使用的时候绝大部分的手机不会出现bug。我们的apk文件可以优化到很小的,比如你做一个项目,打包之后可能是10m,但是经过优化之后可能就只有8m,甚至更小。另外,我们做的项目安全性如何?我们凭什么断定我们做出来的app安全性好。这都是性能优化中会涉及的。
一个app的性能好不好我们需要从两个层面努力。第一个层面:从写代码的时候就需要注意,让自己的代码是高性能高可用的代码,这个过程是书写高性能代码;第二个层面:对已经成型的代码通过工具检查代码的问题,通过检查到的问题来指导我们进行代码的删改,这个过程被称为调优。
如何写出高性能的代码呢?那就需要我们具备深厚的代码功底,这就是代码的基础,如:数据结构达到可以根据应用场景写出符合当前场景的特殊结构,比如google针对Android平台特征研发了sparseArray替代HashMap。另外,对常用的算法有自己独到的见解,leetcode上有刷个上百道题,这样差不多可以达到精通最常用的排序查找动态规划等算法的能力。再者,高效的算法以及节省内存的数据结构如果配合优秀的符合应用场景的设计模式,那么,这些就为高性能的代码提供了实现依据。
另外一个就是对写好的代码进行调优,那么调优的方向就是使用Profiler工具进行测试和检查,看哪里有性能消耗大的操作,然后分析对于代码的问题。调优的方向就变成了如何对内存调优,对耗电调优,对网络流量调优,当然,还有对启动速度,页面切换效果与速度,开机白屏体验,闪屏方面的原因等进行分析和调优。最后再加上一个屏幕适配相机适配。
文末
架构师不是天生的,是在项目中磨练起来的,所以,我们学了技术就需要结合项目进行实战训练,那么在Android里面最常用的架构无外乎 MVC,MVP,MVVM,但是这些思想如果和模块化,层次化,组件化混和在一起,那就不是一件那么简单的事了,我们需要一个真正身经百战的架构师才能讲解透彻其中蕴含的深理。
一线互联网Android面试题总结含详解(初级到高级专题)
乎 MVC,MVP,MVVM,但是这些思想如果和模块化,层次化,组件化混和在一起,那就不是一件那么简单的事了,我们需要一个真正身经百战的架构师才能讲解透彻其中蕴含的深理。
[外链图片转存中…(img-wqJ4kZUW-1631091505739)]
[外链图片转存中…(img-cOYd5z6s-1631091505740)]
一线互联网Android面试题总结含详解(初级到高级专题)
[外链图片转存中…(img-kr9CUFae-1631091505742)]