安卓开发大军浩浩荡荡,经过近十年的发展,Android技术优化日异月新,如今Android 11.0 已经发布,Android系统性能也已经非常流畅,可以在体验上完全媲美iOS。

但是,到了各大厂商手里,改源码、自定义系统,使得Android原生系统变得鱼龙混杂,然后到了不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。

另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。

为此,我把阿里、腾讯、字节跳动、美团等公司Android性能优化实战整合成了一个PDF文档,由于内容过多的,我先介绍实战部分,之后再介绍理论部分。

为何现在Android应用开发这么难找到工作?

随着资本的冷却,整个互联网市场也逐渐的冷静下来.Android应用开发从一开始能说几个四大组件的名词,能随便写个监听事件,就能拿到高达上万的月薪,到现在两三年的开发经验投简历一个月石沉大海的局面,归根到底并不是工作难找了,而是Android应用开发工程师这个职位已经趋于正常,再也不是没什么技术也能拿高工资的香饽饽.

很多人说是因为前些年培训班的大量输出以及资本经济的衰弱,这确实也是一些原因,这些都是我们不可改变的,但是很多人明明要求不高,甚至技术也还行,不说懂底层会NDK,但是Android应用层的基本知识都是掌握的,为什么这部分小伙伴就是找不到工作甚至连面试的机会都没有呢?

就我个人所在的深圳,相比两年前我找工作的时候,是的,岗位确实少了一些,竞争更加激烈了,企业对职位的要求更高,但并不像大家说的那样,已经饱和的不行,基本上都没有面试的机会,更不要说成功拿到offer.
你拿不到offer,是你自身的问题.孔子说:吾日三省吾身,高否,帅否,富否?不好意思,打错了,是:你准备好了吗?你准备好了吗?你准备好了吗?

工作=面试+表现

要想成功拿到Offer,首先是得到面试的机会,然后在面试的时候表现过硬,即可成功拿下.说的虽然是废话,但是很多不明白这两点.

简历

最近在群里跟大家说了一下可能很多人的简历本身是不合格的,所以没有得到面试的机会,有几个小伙伴给我发了简历,问题真的是多多,关于简历怎么写,网上有非常多例子,我需要强调以下几个方面:

  • 不要写你获得了在校获得了什么奖项:大哥,你以为是校招吗?
  • 不要写你做了什么什么系统,老实说做了什么系统的都是培训班出来了,牛人做系统还需要找工作吗?
  • 做了什么项目,请按照格式:(标题,一句话介绍,职责,成绩)
    很多人直接就一个项目名称加介绍,你是做技术的,你做了什么HR完全不清楚
    还有就是很多人不写自己在项目里做了什么成绩,感觉没什么成绩可写.HR非常看重你在团队里做的贡献,所以你可以写你的APP下载量一个月突破多少,或者年收入多少,或者用户数多少.如果对自己的技术比较有信心,可以写技术相关的,例如流畅度行业内优秀范围,错误率0.5%以下,内存占用也是优秀的等等.
  • 简历以简洁干练为准,拒绝花俏.透露着你的强大自信.哪怕你做过很多项目,挑几个最出彩的,以两页为止.

简历的内容和你的面试是息息相关的,一般来说面试官甚至在面试你的那一刹那才开始看你的简历,让你自我介绍其实就是为了粗略的看一下你的简历.所以你写的东西,一定是要自己会的,哪怕你不会,你也要略知一二.如果有把握,用得多,你就写熟悉,不是很懂,只是看过网上的文章介绍,略知一二的原理,你就写了解.例如:

熟悉四大组件,
熟悉多线程编程.
了解数据结构以及常用算法

表现

简历写好了,面试的机会就来了,面试的表现是最重要的.好的面试等于:好的准备+好的简历+好的总结+运气

好的准备=技术准备+面试准备

机会永远都是留给有准备的人,不知道大家为了这次跳槽做了多久的准备呢,去年年底就有想法了吗?今年一开工就准备了吗?
本人为了今年的跳槽准备整整一年,去年我就一直想离职,所以看了比较多技术文档,资料,以及书籍,恶补自己不足.
除了补足自己技术上的不足,在求职的二十多天了,我每天在路上看大量的面试资料,以及一些长问的技术问题,感觉这大半个月所学,所了解的东西,比我过去学习几个月了解的东西还要多.当然这些可能只是一时的,如果你不深入去了解,面试完估计就忘了.

好的简历

前面说了,你的简历上写的东西,你自己都要会,你不会,你就去找资料,去了解.

  • 你说你熟悉TCP/IP,问你三次握手你不知道是什么,会了,问你四次挥手是什么,你又不知道.
  • 你说你内存优化了了以后,降低了35%,我问你怎么优化的,有什么套路,你居然说不出来,你说,我作为面试官我会信你吗?
  • 你说你会自定义View,我问你View的绘制过程是怎么样的你居然不知道?
    还不赶紧对这你简历的知识点一个个补.

好的总结

你面试的时候,面试官让你写一个单例,你不会,问你java的锁有几种,你不会…
不会你记下来,一个个总结,然后回来赶紧找资料,了解一下原理,使用方式等等,面试多了,自然就知道自己的不足,通过大量的总结,你就会越来越强.

运气

面试的时候运气也很重要的,我面试的时候遇到过一个面试官,一直问我java的问题,而且一直问HTTP,Socket,线程的知识,而网络这块自己确实懂的不多,再加上面试官本身也描述的不是很清楚,很多时候不知道他问什么.直接导致我会的很多东西他还没问出来就挂掉了.甚至遇到过一个面试官问我一个控件占用多少K内存的,还是BAT的…

所以有时候面试官也很重要.遇到不好的面试官只能怪自己运气不好,毕竟一个人技术上不可能样样都懂.

面试套路

  • 去面试之前,可以先跟打电话来的人事问清楚,你们招的是应用还是底层,大概是做什么,是做APP开发,还是做车载,TV.Android开发大概是多少人等等一些基本信息,免得浪费彼此的时间.
  • 面试之前一定要看多点面试题,多手写代码,千万不要觉得自己经常写代码很溜,那是你用IDE写的.
  • 要想出一个自己最擅长的地方,哪怕你说画界面,写xml布局,你也要翻出花来,你为什么能画的比比别人好,好在那里,只有确定你跟普通应聘者的优势,面试官才觉得你是一个优秀的人
  • 要表现出自己是一个上进的人,有职业规划的人
  • 面试的时候先去小公司试试水,知道自己的不足.一开始就去你心仪的大公司,很可能因为你准备不足而直接错过了.
  • 面试的回答问题时,一定不能跟面试官对着干,哪怕他说的可能是错的.
  • 获取好感:人都喜欢被赞同.所以你回答问题的时候,要多肯定,引用对方说的话,或者对方的公司.比如:
面试官:Android的机型种类繁多,你是怎么适配的?
回答:就像您刚才所说的那样,因为Android的机型特别多,所以我们在APP的开发过程中...

多引用对方的话其实就是对他的一种赞同,因为面试官说了这些话,说明他心中的观点是这样的,你附和他,他就觉得你的回答有道理.

  • 回答要具有条理.使用:第一种方法,第二种方法,第三种方法…
    或者:首先,接着,然后,最后…
  • 面试官说问题的时候,你要说:是的,您说的对.但是这写词不可频繁出现,而且要紧跟着你自己的理解,不然会被看成是奉承

最后

代码真的是重质不重量,质量高的代码,是当前代码界提倡的,当然写出高质量的代码肯定需要一个相当高的专业素养,这需要在日常的代码书写中逐渐去吸收掌握,谁不是每天都在学习呀,目的还不是为了一个,为实现某个功能写出高质量的代码。

所以,长征路还长,大家还是好好地做个务实的程序员吧。