Android开发必学:Android性能优化之APK优化,面试真题解析

我,来自大山。
我,不甘平凡。

笔者80后,出生在江西一个偏远的山村。虽然出生时已经不是那个温饱都是问题的年代,但是也谈不上有个幸福的童年。家里很穷。幼儿园并没有读,因为家里觉得花那个钱没有必要,小学才开始学拼音字母。我的童年,就是和我的姐姐弟弟在山中的梯田里放牛,抓泥鳅,割鱼草。

父亲在广东打工,母亲一个人在家里带着我们三个孩子。种种原因,在我从小学开始到高中毕业,我的学习一直很差。

直到我高考成绩出来的那一天。我妈看着我不堪入目的成绩哭成了泪人。我心都要碎了。也是从那一天开始,我决心要改变这种现状。我要走出这个山窝窝。

初级

我对初级研发攻城狮的定义是掌握基础的 android 知识,能够独立完成一个功能。这个层级大部分人通过看一些资料书籍再经过项目练习很快可以达到。

需要的技能有:

  1. 掌握android 四大组件知识,深入了解相关生命周期;对于Application、Fragment、Intent也必须掌握。
  2. 掌握android 基本布局和控件的属性和使用,常用布局有LinearLayout\RelativeLayout\ConstraintLayout等,控件有TextView\ImageView\RecyclerView\ScrollView等。
  3. 对android的资源访问使用有基本了解,了解android针对不同国家、语言、屏幕、API的适配原理。
  4. 掌握android系统服务和工具类的使用,对网络访问和数据库操作有基本认知。
  5. 熟练掌握研发工具,如IDE、模拟器、网络代理、日志等。

中级

而到达中级就需要付出一些努力了,需要了解更多知识,可以仿照开源库去造轮子练习。中级工程师要能够熟练完成功能研发。

需要的技能有:

  1. 熟悉SOLID基础设计原则,掌握23种设计模式。
  2. 对于研发语言特性java/kotlin有深入理解,如反射、动态代理、apt等。
  3. 对android架构有基础了解,对apk结构和打包原理有深入了解。
  4. 对于android各个版本特性有基本了解,如MD设计、权限管理、doze模式等。
  5. 熟练掌握各种研发调试工具,如git、gradle、mat、layout inspector等。6. 掌握Handler\AsyncTask原理,熟悉多线程开发。
  6. 对绘页面制原理有初步理解,能够实现一个复杂自定义控件。
  7. 能够熟练掌握开源库的使用,如图片库(Glide\Fresco)、网络库(Volley\okhttp\Retrofit)、工具(Dagger\RxJava\EventBus)等。
  8. 熟悉图片优化常用方法,避免编写内存泄漏的代码。

高级

如果到达中级,那么恭喜你已经可以应付大部分情况了。但要能更进一步,就需要深入理解android系统的运行原理,达到融会贯通,可以作为 android 端上的架构师。

  1. 掌握java高级特性,如JUC、线程池、NIO\BIO等;掌握jvm虚拟机知识,如内存模型、GC原理、类加载机制、线程模型等。
  2. 对android运行环境有深入理解,理解android沙盒机制,掌握AIDL原理及Binder通信原理,了解app和activity启动原理。
  3. 掌握热修复原理,各大厂商方案的优缺点。
  4. 对于android事件分发有深入理解,重点掌握触摸事件机制。
  5. 深入理解android绘制原理,理解VSYNC和surface机制和窗口原理。
  6. 深入理解android动画原理,包括补间动画和属性动画。
  7. 对于android安全机制有基本认知,理解android安全原理。
  8. 深入理解端上设计范式思想,如mvc\mvp\mvvm\clean-arch等。
  9. 理解架构演进,有良好的分层和拆分思路,掌握模块化、插件化、动态部署等。
  10. 对新技术敏感,理解掌握下一代架构dynamic feature等。

至此,android 端研发你已经炉火纯青,能够面对各种情况,达到泰山崩于前而色不变的境界。如果还想继续前进,就需要突破技术栈,从更高架构层次考虑问题。

资深

而到了资深层次,技术栈已经不再是阻碍。能够从更高层面看待问题,理解整个系统的设计,作为系统架构师的角色存在。

  1. 理解微服务、SOA思想,对于后端开发有一定涉猎。
  2. 了解前端研发工具和思想,知道vue react等研发框架。
  3. 深入理解跨端技术,如phonegap、weex/RN flutter、小程序快应用等。

尾声

开发是需要一定的基础的,我是08年开始进入Android这行的,在这期间经历了Android的鼎盛时期,和所谓的Android”凉了“。中间当然也有着,不可说的心酸,看着身边朋友,同事一个个转前端,换行业,其实当时我的心也有过犹豫,但是我还是坚持下来了,这次的疫情就是一个好的机会,大浪淘沙,优胜劣汰。再等等,说不定下一个黄金浪潮就被你等到了。

这是我在这行工作10几年积累的一些资料,如果还想继续在这行业走下去的,或者现在打算跳槽,可以**私信【学习】**我愿意把资料免费分享给大家。
或者直接点击下面链接领取
Android学习PDF+架构视频+面试文档+源码笔记

  • 330页 PDF Android核心笔记

  • 几十套阿里 、字节跳动、腾讯、华为、美团等公司2020年的面试题

  • PDF和思维脑图,包含知识脉络 + 诸多细节

  • Android进阶系统学习视频

,包含知识脉络 + 诸多细节

[外链图片转存中…(img-RypxalUR-1613716442268)]

  • Android进阶系统学习视频

你可能感兴趣的:(程序员,Android)