Android入门,android基础开发

Google 为了帮助 Android 开发者更快更好地开发 App,推出了一系列组件,这些组件被打包成了一个整体,称作 Android Jetpack,它包含的组件如下图所示:

Android入门,android基础开发_第1张图片

老的 support 包被整合进了 Jetpack,例如上图 Foundation 模块的 AppCompat,整合进去之后,包名做了一下修改,全部以 androidx 开头。Android Studio 提供的迁移工具(Refactor > Migrate to AndroidX)可以将源码中的旧包名替换成新的,但是如果 Maven 依赖的产物还未迁移到 AndroidX 的话,还需要配置一个工具—— Jetifier

初级

我对初级研发攻城狮的定义是掌握基础的 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基础开发_第2张图片

高级

如果到达中级,那么恭喜你已经可以应付大部分情况了。但要能更进一步,就需要深入理解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、小程序快应用等。

Android核心知识点

面试成功其实是必然的,因为我做足了充分的准备工作,包括刷题啊,看一些Android核心的知识点,看一些面试的博客吸取大家面试的一些经验。

下面这份PDF是我翻阅了差不多3个月左右一些Android大博主的博客从他们那里取其精华去其糟泊所整理出来的一些Android的核心知识点,全部都是精华中的精华,我能面试到现在2-2资深开发人员跟我整理的这本Android核心知识点有密不可分的关系,在这里本着共赢的心态分享给各位朋友。

不管是Android基础还是Java基础以及常见的数据结构,这些是无原则地必须要熟练掌握的,尤其是非计算机专业的同学,面试官一上来肯定是问你基础,要是基础表现不好很容易被扣上基础不扎实的帽子,常见的就那些,只要你平时认真思考过基本上面试是没太大问题的。

最后为了帮助大家深刻

资料开源 【VX:vip204888】理解Android相关知识点的原理以及面试相关知识,这里放上我搜集整理的2019-2021BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节。

节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
,我把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节。

节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

你可能感兴趣的:(Android,经验分享,面试,开发语言)