字节某大佬揭秘:你以为Android开发没人要了?那是你们还没掌握这些开发重点技术(界面UI、数据持久化、框架模式....)

最近又有朋友问我:“安卓开发是不是没人要了,除了画 UI 别的都不会怎么办?”

考虑到这可能是很多人共同的疑问,决定简单写一下。

不是Android开发没人要了,是初级Android没人要了。现在还在大量招聘移动端开发的,基本是大厂的明星应用或者是创新业务。大厂校招生那么多,画界面的工作基本上校招生都能胜任,那社招当然要求会更高些。

Android开发,甚至包括 iOS 开发,除了 iveg(if visible else gone),还有很多点值得学习的点。

这里我结合一些移动端金字塔顶端职位(技术经理、架构师、负责人)的要求,整理出值得我们重点学习的十点。

移动端职位要求

高级Android开发:

  • 了解常见的APP性能优化解决方案,对至少一个维度的性能优化有过较深入的挖掘
  • 熟悉 JNI 以及 NDK 相关的技能,熟悉 C/C++
  • 对业务开发的痛点有深度理解,了解常见开发框架的优缺点和适用场景
  • 动态化相关技术框架的探索和完善,熟悉Flutter、Reactive Native、以及其它客户端动态化开发框架者优先;
  • 熟练使用Kotlin、Flutter开发者优先

Android架构师:

  • 负责客户端架构设计及组件化构建;
  • 参与研发流程优化和基础平台搭建。
  • 优化 Android 团队的开发方式和流程、规范,提高团队效率
  • 主导过至少一个知名 Android APP 的架构
  • 计算机基础扎实,熟悉常见数据结构、算法和设计模式,熟悉数据库开发
  • 有IM架构经验者优先

Android技术经理:

  • 对稳定性和性能有超乎寻常的关注,能够编写自动化测试代码
  • 有iOS、Web前端或Web后端经验优先有知名开源作品优先,熟悉flutter/reactnative/js/bash/python/ruby等语言和相关框架
  • 优秀的沟通及表达能力,规划组织能力,能带领团队规划和实现产品、技术需求

移动端负责人:

  • 理解业务,将业务目标转化为团队的工作成果
  • 5年以上移动端开发经验,3年以上团队管理经验;
  • 负责过百万日活以上用户规模或者较高复杂度App的 完整开发 过程
  • 善于带领团队,能够充分调动成员的积极性,能培养成员的能力
  • 优秀的跨团队沟通能力,善于项目管理,能够将技术的价值最大化
  • 有C++、JNI等基础技术能力加分,有web前端技术能力加分

要求很多,有一些是日常工作就能涉及到的,其余的就需要自己额外多投入精力了。

Android 开发需要掌握的技术知识点全面总结

基础部分:

  • 扎实的JAVA基础,熟练掌握面向对象(OOP)思想,熟悉java序列化机制实现Android下IPC的机制。
  • 好的开发习惯,一心追求流畅顺滑的UI体验,对代码有洁癖。
  • 熟练掌握Android四大组件(Activity,Service与intentService,LocalBroadcastManager的BroadcastReceiver,ContentProvider)。
  • 熟练使用集合、IO流及多线程断点上传下载,和线程池的使用。
  • 熟悉掌握RecyclerView,ListView等重要控件的使用和优化及(AsyncTask)异步任务加载网络数据。
  • 熟练掌握Android中的多点触控(手势识别器)、熟悉Android下View的事件分发机制与并能处理滑动事件冲突处理。
  • 熟练处理Activity和Fragment和ViewPage的配合使用,并能熟练处理Activity和Fragment,Fragment和Fragment之间的通信。
  • 熟悉掌握Android系统下的广播(耳机的插拔,网络状态变化等)的相关功能开发。
  • 熟悉Android下数据的加解密base64,DES,MD5加密和9patch图制作来完成UI,熟悉Android图像处理之Bitmap类。

界面UI:

  • 熟练使用Android下常用的布局设计,新版本Material Design布局和设计,熟练自定义控件和一些主流的第三方控件的使用等。
  • 熟悉Android中的动画,选择器,样式和主题的使用,能够实现市面上大多数动画效果。
  • 熟练并能独立解决市面上各种Android机型屏幕的适配(图片适配,Dimens适配和AutoLayout适配等等)。

网络与通信:

  • 熟悉Android下的Handler消息机制(Handler,Message,MessageQueen,Looper,HandlerThread),并能熟练使用Handler和熟悉使用EventBus 3.0和RXandroid机制。
  • 熟悉XML/JSON数据解析和生成JSON/XML,以及Android下SQLiter数据库存储方式(greendao,ormlite)。
  • 熟练使用ContentProvider来获取和更改手机系统中通讯录、短信的数据。
  • 熟悉Android下混合开发,原生App和HTML5的使用,和js交互,数据通信。
  • 熟练使用Android开发中重要模块的开发如:网络请求(AsyncHttpClient,Volley,OkHtttp,NoHttp,Xutils3.0里的网络请求API等)。
  • 熟悉基于Xmpp通信协议的IM(即时通信)开发,和第三方IM的开发SDK(融云SDK等)。
  • 熟悉界面间的数据传递(intent和EventBus3.0等等),进程间通信(AIDL,文件共享等等)。
  • 熟悉Android下网络通信技术,对Socket通信、TCP/IP、Http有一定的了解和熟练使用。

数据持久化:

  • 熟悉Android开发的数据(图片,文字,文件等)的缓存技术,并且能够对图片的优化进行相应的处理,熟悉ASimpleCache,LruCache缓存和DiskLruCache缓存使用。

框架模式:

  • 熟悉掌握MVC模式,单例、工厂,观察者,模板等设计模式。
  • 熟练使用市面上主流技术的Android开发常用框架(greedao,ormlite,EventBus3.0,PullToRefresh,Xutils3.0等等)。

异常与调试:

  • 掌握OOM、ANR异常和各类友盟统计上的BUG的处理和熟练处理App全局Crash异常处理,并可以对应用进行相应的优化。
  • 熟练使用代码质量检测工具FindBugs和内存泄漏检测工具 LeakCanary,更好的修正代码质量。

第三方及功扩展:

  • 熟悉android 的JNI/NDK开发,通过JNI实现JAVA与C程序间的调用及回调数据通信。
  • 熟悉使用支付宝,微信支付的SDK和银行的卡SDK的接入,为App增加支付模块。
  • 熟练使用Android下的GPS定位和(接入百度地图定位SDK实现定位,标记,搜索等功能)。
  • 熟悉主流常用的第三方SDK(友盟统计,极光送,QQ和微信的三方登陆和分享SDK,基于讯飞语音的文字和语音的相互转化开发)。
  • 熟悉Android环境下的各类手机传感器开发(光传感器,方向传感器等等)。
  • 熟悉Android的二维码开发,生成码和解析码,扫描码的开发。
  • 熟练掌握Android手机中的3G/蓝牙/wifi的网络通信机制。
  • 熟悉安卓技术中的视频播放开发技术(videoview,MediaPlayer ,Vitamo,VLC)。
  • 熟练使用Android开发中图片处理(imageloarder,fresco,picasso,Xutils3.0里的图片加载API等)。

其他:

  • 熟练掌握SVN版本控制工具及Eclipse、尤其是Android Studio和Studio下的DEBUG调试工具的使用。
  • 熟悉android各版本SDK的差异及特性。
  • 熟悉Android5.0和6.0以及7.0新特性(RecyclerView,MD设计,ART模式等)。
  • 熟悉安卓App的线上App的热修复技术(Andfix和Hotfix),熟练使用的Hotfix热修复功能。
  • 熟悉Android代码的混淆机制和多渠道打包,和后期的市场发布上线App的BUG修复维护和优化。
  • 熟悉App(需求,评审,开发,测试,打包,发布市场,后期维护和迭代等一系列流程)和独立开发经验。

接着看下,从这些繁杂的要求里提炼出的 10 个关键点:

关键点:

  • 稳定性和性能优化,至少深入一个点
  • 可移植开发(JNI NDK C++)
  • 框架优缺点、场景
  • 动态化,RN Flutter,其他方案
  • 客户端架构设计
  • 组件化构建
  • 研发流程优化
  • 基础平台搭建
  • 其他端经验
  • 跨团队沟通能力、规划组织能力、团队管理经验、调动成员的积极性、培养成员

最后

本文梳理了Android 开发者进阶过程学习的一些知识点和一些我个人的建议。关于Java基础、Android 基础、Android 进阶 ,只是作了知识点梳理,没有解答,点到为止。要详细学习这些知识点还需自己去看书、看博客、查资料等。当然了,本文所列出的知识点还不完全,要比较系统的学习,可以买一本书进行学习。

本人水平有限,个人愚见,如果有什么错误,欢迎指出。

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上我搜集整理的2019-2020BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了【PDF】,包知识脉络 + 诸多细节。

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

  • 《960全网最全Android开发笔记》
  • 《379页Android开发面试宝典》
  • 《507页Android开发相关源码解析》
  • 腾讯、字节跳动、阿里、百度等BAT大厂 2019-2020面试真题解析

以上内容均放在了开源项目:我的github 中已收录,里面包含不同方向的自学Android路线、面试题集合/面经、及系列技术文章等,资源持续更新中...

看五年想三年,认真做好一两年。与其临渊羡鱼,不如退而结网,努力掌握这些点吧,奥利给!