211 本硕如何通过字节跳动、百度、美团 Android 面试?复习指南
Android 开发前景怎么样?
很多人说 Android 开发前景越来越差了 我觉得这个回答是片面的
首先 Android 应用开发前景差是在最近两年出现的,也就是从 2018 开始,从那时起移动端的程序员已经慢慢出现供大于求的局面,本人作为移动端开发,深知这一点。
然而也必须说明一点,不论是 Android 开发还是 iOS 开发,虽然都出现了相关的程序员供大于求的情况,但市场仍然是有需求的,特别是对资深的开发人员及拥有相关底层开发知识的应用程序员市场及发展还是很多的;这里所讲的就业难都是相对于初级开发人员。
为什么会在 18 年出现应用端就业难?这是由于在前几年 App 风盛行,那几年只要是个和互联网的公司要是没个自己的 App 那都不好意思叫互联网公司,所以一般的互联网公司成立之初就会着手开发自己的 App,不管是否是刚需,但市场终究是严峻的;App 虽然好,能快速开展本公司的业务,但 App 的运营成本还是很高的,一个 App 在早期就开发团队来说一般都是需要至少 Android 开发一人,iOS 开发一人,后台开发 2 人以上,还有 UI 及产品等等,当然最主要的问题是一般的公司对于这种模式都会面临回报周期长的问题,App 开发完了还面临着推广的问题,市场抢占不了,也许之前的都会付之东流。于是在早期很多学校特别是培训机构就针对市场推出了应用端的培训课程,短到三个月长到半年的课程,于是乎每一个月都会有成千上万的应用端走向市场,所以时间一长,市场慢慢趋于稳定。应用端的人员慢慢就变得供大于求了,这也是慢慢出现应用端求职难的问题了。
以上说的是其中一方面,成本高和其他低成本,低运营的技术相继出现也是应用端求职难现象的助推手。
这里主要讲下 2016 年出现的小程序对于 App 的冲击,原生 App 有着开发周期长,运营成本高及回报周期长的特点,所以近年来很多公司都慢慢削去了应用端从而将资金放在其他部分,直到小程序的出现,开发成本一下就可以降下不少,为什么呢,因为小程序的开发语言可以由前端的开发人员承担,而且开发一个小程序不需要维护两套代码也就是不需要像原生 App 一样,需要 Andoid 端和 iOS 端,因为小程序是运行在微信中的,所以只要开发人员维护一套代码就够了,这大大的降低了前期的开发成本,其他细节在这就不细讲了,总之小程序的出现不同程度上更加冲击了应用端的竞争市场,从而也使得应用端就业竞争更加激烈。
当然市场还是需要应用端的人才的,这里所说的人才指的是那些会顺应技术发展和时代的有着不断学习力的开发人员,对于那些初级的程序员市场终究对于他们是残酷的,所以提升自己的竞争力在任何职业任何时候都是非常重要的,只有这样才不会被市场所抛弃。
就先写到这,手机码字很痛苦,写的很片面不好之处敬请指出,如果觉得有参考价值的朋友也可以关注一下我 我会定期分享一些关于 Android 进阶方面的知识,也会分享一下最新的面试题~
学习瓶颈一直聊到这里,我都非常理解。我这个十年以上的老码农,体会比他还深。其实稍微干上一些年头,就是这个样子,看起来像是“学习热情下降”“懒得学习”,但本质上呢,两个原因:1、本身的技能增强,能够应付日常工作,没有刚入行时那么大的压力了。2、学习的边际效益递减,所以开始考虑投资/收益比了。
刚入行的时候,技术一丁点的进步,都能带来非常大的成就感,至少能少挨点骂,是不是?积累到一定时候,就可以跳个槽涨点工资啥的。但三五年过后,我已经会了:
熟悉 Android OS 系统体系结构、framework 层;
良好的 Java 技术功底,精通多线程、socket 通信、文件操作等 java 底层技术;
精通 Android 的基本组件使用,熟练使用 Android 各种布局与控件,熟练运用各种动画特效;
熟悉 View 的绘制原理,精通自定义动画以及自定 View 的开发
有丰富的 Android 性能优化经验,善于解决系统崩溃,内存溢出和兼容性问题;
熟悉 JNI 技术和代码混淆
有单元<u style="margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; word-break: break-word;">测试</u>、自动化测验及相关框架经验;
有良好的代码习惯,要求结构清晰,命名规范,逻辑性强,代码冗余率低,代码注释清晰;
学会优雅转身接下来和大家分享一下我这么多年的转型之路。姑妄听之:
1、转型技术管理 2007 年下半年到 2009 年初,我慢慢转向技术管理角色,开始管理一个研发部门。我走的路线是“技而优则管”。简单讲,就是你技术牛 X ,轻松搞定各种问题,开始带人,接下来带团队管项目,再接下来,顺理成章就会被公司推着向技术管理者转型。这种路线,也是一大半技术管理者走过的路线。如果你想转型技术管理,可以考虑这种。
“技而优则管”的要点,就是:行有余力。什么意思呢,就是聚焦当下,高效搞定你的任务。当你体现出绰绰有余的样子,领导就会给你更多更难的任务。当你还能高效搞定,还看起来有余力,领导就会再给你更重要的任务……
如此循环,你就越来越重要,就会带人、带项目的机会。假如你总是手上的活儿都做不完、做不好,就基本走不了这条路线。不过也还有其他路线。
2、加入创业者行列 2014 年 9 月份,我因某种契机,离开工作 7 年的公司,重新考虑自己的方向。到阳历年底时,接受朋友邀请,和他一起创业。我之所以愿意去尝试,是因为:
创业和上班的未来可能性大不一样,万一创业成功,你的影响力、经济回报,都会上一个台阶。
一起做事的人靠谱。
做的产品,盈利模式明确。
当然,不幸的事总会发生——我们失败了。我个人并没因为这样的失败经历而后悔,因为当你站在主人翁的角度和高度去为公司负责时,你对工作的认知,会发生巨大变化!这种变化,会对后续的工作和人生产生重要的正向影响。如果你技术过硬为人靠谱,一定会有不少创业者邀请你加入他们的队伍。不要头脑发热,要仔细考察一下:
评估要做的产品是否靠谱
看看即将一起共事的人是否靠谱
设想近 2 年没有收入,自己和家人的生活水平能否维持
设想全力投入创业对自己和家人的生活有什么影响,自己和家人能否接受
3、 重回开发岗位我从 2009 年开始做技术管理,到 2015 年底创业失败,历时 7 年。可是我在多个更好的管理机会面前,毅然选择回到技术岗位继续做开发。为什么?这是因为我们工作的目的,除了赚钱,还有自我实现。自我实现包括几方面:
成长
成就
意愿
成长是指你做一件事之前和之后,有你想要的、积极的变化。假如你做了十年开发,技术水平、解决问题的能力,还是和刚入行时差不多,那就叫没成长!
成就是指你做出了成绩并获得了相关干系人的认可。你负责一个模块,用了最新的技术最牛逼的设计,也能 run ,实现了用户需求。你个人觉得很有成就,可是你用的技术框架过于复杂,维护成本很高,运维团队、二次开发团队都不认可,那就不是真正的成就。
意愿很好理解,就是你愿意在什么事情上投入你的时间和精力、你做什么事情时会感到开心。
比如我,在创业失败重新找工作时,就是因为觉得亲力亲为用技术去开发一个个软件、解决一个个问题比较令我兴奋和投入,所以才选择回到开发岗位上。很多开发者都会遇到要不要转管理、要不要一直做技术这种问题,怎么选择答案,关键就在于你的个人意愿和你做某件事的感受。可能有人会问,如果你一直做开发,年龄大了,怎么和年轻人拼?我之前画过一张图,再贴出来给大家看看:
由这张图可以看到,开发者做软件分两次创造,第一次创造在头脑中完成,属于思考层面;第二次创造,是编码实现,是脑力劳动体力化。如果你想要超越年龄,就要多在第一次创造所需要的能力上下功夫:
构建起来自己围绕着特定业务领域的知识体系
淬炼想象力、抽象、归纳、分析、整合、设计等
这样你就能思考得多、做得少、做得关键、做得好,就可以超越年龄的限制。否则如果你整天和年轻人一样只关注噼里啪啦敲代码,肯定没价值,很快被清退。所谓高级工程师就是在技术上逐步沉淀,逐步体系掌握核心技术得来的。我们程序员提升的方向无非管理者与架构师两种。要成为管理者,就应具备一定的管理知识、较高的情商以及良好的组织协调能力。而想要成为移动架构师,就要肩负技术和组织两个层面的重任,构建自己完整的技术体系就尤为重要了。当然从结果来论,能力突出架构师的薪资也同样会水涨船高,一个 Android 架构师能够拿到 40 万的年薪都再正常不过了。
程序员职业路线图
最后
现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务 Curd 而已!现如今市场上初级程序员泛滥,这套教程针对 Android 开发工程师 1-6 年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶 Android 中高级、架构师对你更是如鱼得水,赶快领取吧!
上述【高清技术脑图】以及【配套的架构技术 PDF】点击:Android架构视频+BAT面试专题PDF+学习笔记,或者私信回复【技能提升】即可获取!
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!
Android 架构师之路很漫长,一起共勉吧!
评论