Android开发者毕业一年进入字节跳动,薪资跨越式增长,年薪30W!

image

【导读】合格的Android工程师真正应该具备什么技能?在面试时,面试官又会如何验证你具备这些新技能?毕业仅一年,相继拿下头条、阿里、腾讯等offer的本文作者,为你绘制了一幅面试技能雷达图。

◆◆哲学第一命题:我是谁?◆◆

211B段高校毕业的小硕一枚,光电子专业(偏光通信工程)。专业方向实在不想去,也没有好的选择,不是研究所就是通信设备厂。研究生期间自己折腾Java,C++开发,也自学了点算法,毕业秋招是也尝试过找Android岗机会,all挂了,那时真没有竞争力,自己的储备也不够,毕业时去了家小型互联网公司,主要是做后台开发。一年后公司挂了,今年8月份不得不开始重新找工作,好在我入职后就准备着手入坑Android。所以,我有(dao)幸(mei)在最近2年时间经历了Android岗面试,第一年参加秋招,今年的面试经历感觉很艰难,体会颇多...

入职两个多月了,有时间回想一下为转行Android岗所经历的学习和面试过程,其实也踩过了不少大坑,今天写点东西(好久没码字了),要是能帮到和我一样准备找Android岗的你,也算是不枉熬这一夜。

兄弟姐妹们,别怕,坑我帮你踩啦!

image

◆◆从零零散散地自学到系统化学习 ◆◆

一开始只是自学网络上的视频课程,但我本身没有基础,周围又没有人可以交流,视频课程和博客文章在知识点的构建上都很碎片化,很难在形成从理论到项目实践的系统性认知。

image

尤其是网络中的博客文章,我点进去看了之后实在是看不下去,慢慢的就觉得没有底气,归根到底是因为自学中接触网络的信息太碎、太杂了,很多东西串不起来,感觉自己知道的不少了,但是和行家一交流就经常短路,最后只能尬聊。

这个阶段耗费了我大半年的时间,自学效果很不好,总结一下:对原理理解不深刻、用法不熟悉,更不懂一些设计模式、架构怎样落地应用的。

2018年底,一位学长推荐我学习了一门免费的移动互联网课程,每天2个小时的课时,我当时花了好几周天时间认真学习了课程内容,这对我之后的学习和面试帮助很大,主要是让我在初学的阶段清晰了如何学习,重点应该放在什么地方,如何选择合适的技术方向,合理的学习路径是什么,项目经验如何提升,简历该怎么写才能有吸引力进而获得面试机会,今年的技术面中常会出现哪些考点问题。

小伙伴不要拍砖了,我现在把这门免费课程推荐给你,也许能帮助到你。

关注我,加我的微信:15388039515
微信二维码

◆◆ 八个技能点 ◆◆

架构师筑基必备技能

Android应用是由Java语音进行开发的,SDK也是由Java语言编写的,所以我们要学习Java语言。另外,虽然说Kotlin语言也得到Android官方的热推,但是Kotlin也是编译成了Java语言在运行的。对于Android开发来说。

只要SDK没有用Kotlin重写,那么Java语言都是需要学习的。而且Android apk的后台服务器程序大概率是Java语言构建,所以学习Java是一个必然。

那么Java中那些东西是我们Android中比较相关的稍微比较难的Java基础几乎是一个门槛,像泛型丶多线程丶反射丶JVM丶JavaIO丶注解丶序列化等等。

image

Android框架体系架构

这块知识是现今使用者最多的,我们称之为Android2013-2016年的技术。

但是,即使是这样的技术,很多开发者也往往因为网上很多copy代码的习惯而导致对这块的使用的代码熟悉而陌生,熟悉的是天天和它们打交道天天在复制,陌生的是天天打交道却没有深入研究过他们,要学习源码,模仿源码,然后在hook源码,这样才能说懂这块的知识。

image

Android 360°全方位性能调优

  • 一个app的性能好不好我们需要从两个层面分析:

1、从写代码的时候就注意,让自己的代码是高性能高可用的代码,这个过程是书写高性能代码

2、对已经成型的代码通过工具检测代码问题,通过检查到问题来指导我们进行代码的删改这个过程被称为调优

  • 那如何写出高性能的代码呢?

需要我们具备深厚的代码功底,这就是代码的基础,如:数据结构达到可以根据应用场景写出符合当前场景的特殊结构,比如google针对Android平台特征研发了SparseArray代替HashMap.另外,对常用的算法也有自己独到的见解

image

设计思想解读开源框架

现在去很多公司面试,除了你具备基本的能够写一个高性能app的能力后,一般都会在自己的app里面加一些现有的相对较6的技术,这些技术我们称之为前沿技术。他们一般包含热升级,热修复,App Instant,强制更新,组件化路由架构Arouter,RxJava,IOC架构方法,Hook技术等等,当然,这些技术你不能只会用,你需要知道他的原理,有时候,你还需要知道如何对这些架构进行改进。

另外,非常重要的一点,Android开发者不愿意接受新知识,所以对于现在Google推出的新的技术方案毫无感觉,这些都是被 control C 和control V所毒害,开源让开发者失去了自我,失去了基本的编码能力,失去了深入学习的信心和毅力,所以对于很多google推出的新技术好组件(Google I/O 大会新技术),好框架已经很多人不愿意去学习了,而这是最不应该的,现在的大环境下我们更需要好好学习。

image

NDK模块开发

音视频丶高清大图片丶人工智能丶抖音直播等这些年与用户紧密相关,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是Windows系统,而现在是移动系统了。而移动系统中Android比例又是最大的。所以NDK可以说是必备要学习的,除此之外,音视频的编解码技术流媒体协议,ffmepeg,c,c++,JNI,linux都是音视频开发必备技能。而且OpenCV \OpenGI这些又是图像处理必备。

image

架构师炼成实战

架构师不是天生的,是在项目中磨练起来的,所以,我们学了技术就需要结合项目进行实战训练,那么在Android里面最常用的架构无外乎 MVC,MVP,MVVM,但是这些思想如果和模块化,层次化,组件化混和在一起,那就不是一件那么简单的事了,我们需要一个真正身经百战的架构师才能讲解透彻其中蕴含的深理。

image

微信小程序

移动架构师不可不学习微信小程序

image

Hybrid 开发与Flutter

混合开发的flutter现在已经逐渐成了主流的混合开发框架,另外由于阿里系的强大存在,导致阿里系的公司都在用Weex混合架构,这些都是一个Android工程师开拓视野,走向未来必不可少的基本技能的。

image

在这里我也分享一份自己收录整理的Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

(面试题还附有答案哦!很多是我在面试中碰到的原题)送给你,拿走不谢,因为我是雷锋!(放心拿,不转发、不分享)

有需要的同学关注我,添加我的微信:15388039515
微信二维码

◆◆根据个人背景,调整简历,突出重点 ◆◆

8月份我开始准备找工作,年初听到很多公司大量裁员的负面消息,还是有些担心就业形势不太好,从后来的投递简历情况看,Android方向的招聘还是挺多的,但是企业的招聘要求在不断增加,门槛提高了。

今年上半年我自己的学习过程给了我很强的信心,在正式找工作前,我先试水面试了几家公司,目的就是积累经验和找一下面试感觉,对我之后学习的效率提升了不少,每次面试中遇到的问题有针对性地做查找资料、细化知识点,准备好之后再投了一批简历。

image

自己准备的简历投完之后得到的面试机会并不多,所以找了一位老司机检查了一遍简历,发现简历的确有比较大的问题。在他的指导下,调整了简历项目,去除了之前的和目标岗位不太相关的项目,细化了Android部分的项目。

改完简历后,面试机会果然变多了,我主要找深圳和北京的岗位。我当时在职,频繁的请假跑去现场面试也不方便,在集中面试了一周之后拿到了3个offer,年薪都在20W以上,最终我选择了字节跳动,年薪30W。

建议:面试过程中,面试官常根据你的简历追问一些细节问题,简历上写的技能和知识点,自己一定要熟悉,不熟悉的不要写上去。简历写和目标岗位相关的项目,之前工作中不太相关的项目可以去掉,简历整体项目经历要和目标岗位匹配。

◆◆你该了解的Android岗面试环节和重点 ◆◆

一个完整的Android岗面试过程主要有以下几个主要环节:笔试环节、自我介绍、项目介绍、技术(切磋)面。

  • 笔试环节,这个不用多说,提前刷题是肯定的,我在面试前3个月就已经开始刷题了,前面做错了也没关系,不过要去研究这个题为什么错,错在哪里,有些什么原理,都是要熟练掌握的。可以根据面试的公司来着重刷题。

  • 关于自我介绍,主要就是简单介绍下自己的教育背景,在校或在职期间的研究方向和所做的项目以及在项目中所充当的角色等等,为之后的面试做个铺垫,让面试官从中捕捉一些点来向你提问。

  • 项目介绍是最为重要的,这也是体现你综合实力的地方,对项目背景、项目实现的方案,项目所实现的东西都要了如指掌,最好准备一到两个较大型的项目,关键是项目中间的技术细节都要了如指掌,比如项目中遇到的一些问题,是什么原理?你是怎么解决的?一旦你说不太清楚,面试官就会对项目的真实性存疑。

image

  • 技术面是一个虐与被虐的痛苦过程,主要会围绕简历项目展开,大厂面试官问的很细,所以简历上写到的相关技术最好搞透彻。小公司一般不会问特别深问题。重点:技术面也是一个很好的学习过程,有问到你不会的点,虚心向面试官请教,一般都会指导你一下的,而且还可以加印象分!

◆◆2019年的Android岗面试的新套路◆◆

随着市场环境的变动,今年经历的面试过程有两个比较大的变化,看来面试套路不一样了:

  1. 考察更加全面了,除了考察对数据结构与算法的理解,围绕着各种底层源码、原理,提出的问题更细更刁钻了。
  2. 对项目方面的考察深度提升了很多,会被面试官揪着细节一步一步让你解释,为什么这么做?说说自己在项目中具体负责的模块中用到的技术细节,遇到了什么问题,怎么解决。

So,我会给如下建议:

  • 讲述项目的基本情况,项目的背景、规模、用时、用到的技术以及各个模块。重点突出自己比较熟悉的技术,防止在面试官打断的提问的时候,问到自己最薄弱的环节。
  • 主动说出自己做了哪些事情,这部分的描述要尽量和自己的技术背景一致,描述自己在项目中的角色。描述模块中用到的技术细节,这部分一定要注意,一定要把话题引到自己最熟悉模块的技术细节。
  • 一定要主动:作为面试者,应该能够主动并且逻辑清晰的说出自己的项目中有哪些亮点,能够主动的把自己的闪光点在短短几十分钟的面试中都展现出来。

总结一下吧:
今年的大环境进一步恶化,同时公司的招人要求变高了,小伙伴们的进入门槛会越来越高,薪酬水平却在提升,只要是入眼了,还是敢给好offer,这也说明企业在这样的大环境下,希望花钱找到适合的,能干的。真正合格的Android工程师一直是短缺的,努力做金字塔上部的那块砖。

上面我提及的免费课程,这里详细介绍一下内容,小伙伴自行观看。

image

想要学习这门免费课程的小伙伴们,可以关注我
添加我的微信:15388039515
微信二维码

Android开发者毕业一年进入字节跳动,薪资跨越式增长,年薪30W!

还分享包括Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料帮助大家学习提升进阶

猜你喜欢

转载自blog.51cto.com/14573572/2449502